Conseils de sécurité Microsoft 4092731
Mise à jour vers l’algorithme de génération de clé de machine Azure Services cloud
Publication : 8 mai 2018 | Mise à jour le 29 juin 2018
Version : 1.2
Résumé
Microsoft publie cet avis de sécurité pour fournir des informations relatives à une mise à jour de la façon dont les clés de machine sont générées pour Azure Services cloud. Ce scénario peut affecter les clients qui utilisent azure Services cloud rôles web. Les clés de machine sur les déploiements existants ont été générées avec une entropie insuffisante et l’utilisation d’algorithmes de chiffrement déconseillés.
Pour résoudre ce problème, Microsoft a publié une mise à jour de l’algorithme utilisé pour générer des clés de machine dans de nouveaux déploiements de rôles web Azure Services cloud, notamment l’utilisation de la génération de nombres aléatoires fort par chiffrement. Tous les rôles web existants conservent leurs clés d’ordinateur précédemment générées, sauf si elles sont redéployées. Compte tenu de certaines informations détaillées, un attaquant peut être en mesure de deviner les clés de machine créées par l’algorithme déprécié. Les clés d’ordinateur vulnérables peuvent, dans certaines circonstances, autoriser la déviation des fonctionnalités de sécurité.
Cet avis fournit des conseils aux clients pour déterminer s’ils sont affectés par ce scénario et ce qui, le cas échéant, les actions qu’ils doivent entreprendre.
Services cloud affectés
Les déploiements Azure qui utilisent des rôles web sont affectés par ce problème. La seule exception est si vous avez fourni votre propre clé d’ordinateur dans le fichier Web.config dans le package CS. Les rôles de travail Azure, les Machines Virtuelles et toutes les autres offres Azure ne sont pas affectés.
Forum aux questions
1. Comment faire savoir si je suis affecté ?
Tous les rôles web du service cloud Azure sont affectés par ce problème, sauf si vous avez fourni vos propres clés de machine dans le fichier Web.config dans le package CS. Les rôles De travail du service cloud Azure, les Machines Virtuelles et toutes les autres offres Azure ne sont pas affectés.
ASP.NET utilise des clés de machine à plusieurs fins, notamment :
- Anti-falsification des données d’état de formulaire web
- Génération et validation des cookies de session de formulaire web ASP.NET
- Jetons Anti-CSRF
- Chiffrement à l’aide des méthodes machinekey.protect et machinekey.unprotect.
2. Existe-t-il des conditions préalables à la résolution de mon application affectée ?
Oui, si votre rôle web a été déployé avec une version retirée du Kit de développement logiciel (SDK) Azure pour .Net, il n’utilise pas l’algorithme de génération de clé de clé de machine amélioré. Reportez-vous aux https://azure.microsoft.com/en-us/downloads/archive-net-downloads/ versions prises en charge. Pour effectuer une mise à niveau vers une version prise en charge, cliquez sur le lien sur le site précédemment référencé pour télécharger et redéployer votre projet avec une version du Kit de développement logiciel (SDK) prise en charge. Une fois que vous avez validé que votre projet est déployé avec un Kit de développement logiciel (SDK) pris en charge, suivez les étapes supplémentaires décrites dans cet avis.
3. Comment faire corriger mon application affectée ?
Pour générer les nouvelles clés de machine, vous devez redéployer votre fichier .cspkg et .cscfg en tant que nouveau service cloud, déployer votre charge de travail dans l’emplacement intermédiaire et effectuer un déploiement d’échange (échange d’adresses IP virtuelles) ou injecter vos propres clés d’ordinateur, puis effectuer une mise à niveau simultanée. Une opération de déploiement de mise à jour classique n’est pas suffisante. Voici les options d’atténuation générales et les étapes détaillées décrites ci-dessous :
Option 1 : Déployer votre charge de travail sur un nouveau service cloud. Mettez à jour votre CNAME pour pointer le trafic vers votre nouveau service cloud. Lorsque le trafic est nul vers l’ancien site, vous pouvez supprimer l’ancien service cloud.
Option 2 : Déployer votre service cloud sur l’emplacement intermédiaire et effectuer un déploiement d’échange.
Option 3 : Générez vos propres clés de machine dans Web.config et effectuez une mise à jour simultanée. Cela met à jour toutes les instances à la fois et entraîne donc un temps d’arrêt de l’application.
Nous vous recommandons d’utiliser l’option 1 pour éviter les temps d’arrêt. Nous vous recommandons également d’effectuer l’atténuation pendant les périodes d’utilisation faible, car les sessions peuvent être interrompues pendant que les clés de l’ordinateur changent.
Remarque : L’adresse IP de votre application change une fois que vous obtenez les nouvelles clés de machine avec l’option 1 et l’option 2.
4. J’ai utilisé la clé de machine pour chiffrer les données persistantes à l’aide de MachineKey.Encode()/MachineKey.Protect(). Comment faire récupérer les données ?
Si MachineKey a été utilisé pour chiffrer des données (à l’aide de MachineKey.Encode()/MachineKey.Protect(), l’ancienne clé de machine et les algorithmes définis dans le fichier web.config doivent être utilisés pour déchiffrer les données (en appelant MachineKey.Decode()/MachineKey.Unprotect() respectivement) avant d’effectuer les étapes d’atténuation. Une fois les étapes d’atténuation terminées, tous les appels à MachineKey.Encode()/MachineKey.Protect() et MachineKey.Decode()/MachineKey.Unprotect() utilisent la clé et les algorithmes de machine mis à jour à partir du fichier web.config.
5. Comment faire savoir que mon application utilise le nouvel algorithme de clé d’ordinateur ?
Si vous n’avez qu’un seul déploiement dans votre service cloud, case activée pour afficher le certificat de clé de machine Azure sous l’onglet Certificat de votre service cloud dans le portail de gestion Azure suffit. Si ce certificat est présent, votre déploiement utilise l’algorithme de clé d’ordinateur.
Si vous avez deux déploiements dans votre service cloud (production et préproduction), vous devez effectuer un bureau à distance dans vos rôles web et examiner la configuration IIS. Si vous voyez le certificat de clé de machine, vous utilisez le nouvel algorithme de clé d’ordinateur. Vous devez effectuer cette case activée pour un rôle web dans chaque déploiement. Si vous n’êtes pas en mesure de vous connecter à la machine virtuelle, envoyez un ticket de support (instructions dans #7) et notre équipe de support technique peut vous aider à confirmer si vos déploiements utilisent la nouvelle clé d’ordinateur.
6. Qu’est-ce que le certificat « Gestion des services Microsoft Azure pour MachineKey » ?
Il s’agit du certificat utilisé pour chiffrer les clés de machine avec l’algorithme amélioré.
7. Qui gère le certificat « Microsoft Azure Service Management for MachineKey », et que se passe-t-il lorsqu’il expire ?
Azure gère ce certificat. Les clients n’ont pas besoin d’être préoccupés par la date d’expiration de ce certificat, car il est utilisé une fois pour générer les nouvelles clés de machine avec le nouvel algorithme. La date d’expiration n’aura aucun impact.
8. Le certificat peut-il être supprimé ou supprimé de la machine virtuelle ?
Non, le certificat ne peut pas être supprimé.
9. Si j’ai des questions sur les étapes d’atténuation, que puis-je faire ?
Envoyez un cas de support sous Services cloud à l’aide de votre processus d’escalade standard. Pour effectuer une escalade dans le portail Azure, procédez comme suit :
- Accédez à Aide + Support dans le portail Azure.
- Sélectionnez le type de problème technique .
- Sélectionnez votre abonnement, puis sélectionnez le service Services cloud (rôles web/rôles de travail) dans Services.
- Cliquez sur Suivant, choisissez Mise à jour du certificat MachineKey comme type de problème, puis renseignez les détails du ticket de support.
Étapes détaillées pour effectuer l’atténuation
Option 1 : Redéployer votre service cloud.
Effectuez un redéploiement via le portail :
- Créez un service cloud avec votre fichier .cspkg et .cscfg. Consultez les informations détaillées ici.
- Mettez à jour l’enregistrement CName ou A pour pointer le trafic vers le nouveau service cloud.
- Supprimez votre ancien service cloud une fois que votre trafic pointe vers le nouveau service cloud.
Effectuez un redéploiement via PowerShell :
Créez un service cloud avec votre fichier .cspkg et .cscfg. Consultez les informations détaillées ici.
Exemple : New-AzureService -ServiceName « yourServiceName » -Label « MyTestService » -Location « SOUTH Central US »
Créez un déploiement avec votre fichier .cspkg et .cscfg. Consultez les informations détaillées ici.
Exemple : New-AzureDeployment -ServiceName « yourServiceName » -Slot « Production » -Package « YourCspkgFile.cspkg » -Configuration « YourConfigFile.cscfg »
Mettez à jour l’enregistrement CName ou A pour pointer le trafic vers le nouveau service cloud.
Supprimez votre service cloud précédent qui n’a pas de clés d’ordinateur mises à jour une fois que votre trafic pointe vers le nouveau service cloud. Consultez les informations détaillées ici.
Exemple : Remove-AzureService -ServiceName « yourOldServiceName »
Effectuez un redéploiement via l’API Rest :
Créez un nouveau service cloud. Consultez les informations détaillées ici.
Exemple : https://management.core.windows.net/<subscription-id>/services/hostedservices
Créez un déploiement à l’aide de l’API de création de déploiement. Si vous avez besoin de trouver votre fichier .cspkg et .cscfg, vous pouvez appeler l’API Get-Package).
Exemple : https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deploymentslots/production
Supprimez votre service cloud précédent qui n’a pas de clés d’ordinateur mises à jour une fois que votre trafic pointe vers le nouveau service cloud. Consultez les informations détaillées ici.
Exemple : https://management.core.windows.net/<subscription-id>/services/hostedservices/<old-cloudservice-name>
Option 2 : Échanger le déploiement.
L’option 2 vous oblige à disposer d’un emplacement intermédiaire vide. Si vous avez un déploiement dans l’emplacement intermédiaire actuellement, vous pouvez le supprimer, puis suivre les étapes suivantes :
Effectuez le déploiement d’échange via le portail :
Mettez à jour votre déploiement de service cloud en chargeant votre fichier .cspkg et .cscfg dans l’emplacement intermédiaire. Ce certificat contiendra le nouveau certificat pour générer les clés de l’ordinateur. Consultez les informations détaillées ici.
Changez vos emplacements de préproduction et de production. Consultez les informations détaillées ici.
Supprimez votre emplacement intermédiaire avec votre déploiement de production précédent. Voir les détails ici
Effectuez le déploiement d’échange via PowerShell.
Déployez votre cspkg et cscfg dans l’emplacement intermédiaire. Consultez les informations détaillées ici.
Exemple : New-AzureDeployment -ServiceName « yourServiceName » -Slot « Staging » -Package « YourCspkgFile.cspkg » -Configuration « YourConfigFile.cscfg »
Changez vos emplacements de préproduction et de production. Consultez les informations détaillées ici.
Exemple : Move-AzureDeployment -ServiceName « yourServiceName »
Supprimez votre emplacement intermédiaire avec votre déploiement de production précédent.
Exemple : Remove-AzureDeployment -ServiceName « yourServiceName » -Slot « Staging »
Effectuez le déploiement d’échange via l’API Rest :
Créez un déploiement dans l’emplacement intermédiaire à l’aide de l’API de création de déploiement. Si vous avez besoin de trouver votre fichier .cspkg et .cscfg, vous pouvez appeler l’API Get-Package).
Exemple : https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deploymentslots/staging
Échangez vos emplacements de production et de préproduction à l’aide du déploiement d’échange.
Exemple : https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>
Supprimer votre emplacement intermédiaire avec votre déploiement de production précédent
Exemple : https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deploymentslots/staging
Option 3 : Générez vos propres clés d’ordinateur dans web.config et effectuez un déploiement simultané.
Générer un nouvel élément XML de clé d’ordinateur dans PowerShell (voir l’annexe A).
Mettez à jour votre WebConfig avec les nouvelles clés d’ordinateur. Consultez les instructions.
Repackager votre service cloud.
Effectuez un déploiement de mise à niveau à l’aide du fichier .cscfg qui contient les nouvelles clés de machine. Le mode doit être défini sur simultané, ou cela peut entraîner l’état défectueux de votre application.
Exclusion de responsabilité
Les informations fournies dans cet avis sont fournies « tel quel » sans garantie quelconque. Microsoft exclut toutes les garanties, expresses ou implicites, y compris les garanties de marchandabilité et d’adéquation à un usage particulier. En aucun cas, Microsoft Corporation ou ses fournisseurs ne sont responsables de dommages-intérêts, y compris les dommages directs, indirects, accessoires, accessoires, les pertes de bénéfices commerciaux ou les dommages spéciaux, même si Microsoft Corporation ou ses fournisseurs ont été informés de la possibilité de tels dommages- intérêts. Certains États n’autorisent pas l’exclusion ou la limitation de responsabilité pour des dommages indirects ou accessoires afin que la limitation ci-dessus ne s’applique pas.
Révisions
- V1.0 (8 mai 2018) : avis publié.
- V1.1 (24 mai 2018) : Ajout du FAQ #4 pour expliquer comment récupérer des données persistantes une fois les données chiffrées à l’aide de MachineKey.Encode()/MachineKey.Protect(). Il s’agit d’une modification d’information uniquement.
- V1.2 (29 juin 2018) : références modifiées du système d’exploitation invité Azure à Azure Services cloud