Conseils pour atténuer les vulnérabilités par canal latéral de l’exécution spéculative et micro-architecturale du matériel

S’applique aux : ✔️ Machines virtuelles Linux ✔️ Machines virtuelles Windows ✔️ Groupes identiques flexibles ✔️ Groupes identiques uniformes

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état fin de vie (EOL). Veuillez considérer votre utilisation et votre planification en conséquence.

Cet article fournit des conseils pour une nouvelle classe de vulnérabilités par canal latéral de l’exécution spéculative et micro-architecturale du matériel qui affectent de nombreux processeurs et systèmes d’exploitation modernes. Cela inclut Intel, AMD et ARM. Vous trouverez des détails spécifiques pour ces vulnérabilités matérielles dans les avis de sécurité et CVE suivants :

La déclaration de ces vulnérabilités de processeur a entraîné des questions de la part des clients.

Microsoft a déployé des solutions d’atténuation des risques sur l’ensemble de ses services cloud. L’infrastructure qui exécute Azure et isole les différentes charges de travail des clients est protégée. Cela signifie qu’un attaquant potentiel utilisant la même infrastructure ne peut pas attaquer votre application en utilisant ces vulnérabilités.

Azure utilise autant que possible la maintenance avec préservation de la mémoire afin de réduire l’impact sur le client et d’éliminer la nécessité de redémarrages. Azure continuera à utiliser ces méthodes lors des mises à jour à l’échelle du système sur l’hôte et à protéger nos clients.

Plus d’informations sur l’intégration de la sécurité dans chaque aspect d’Azure sont disponibles sur le site de documentation sur la sécurité Azure.

Notes

Depuis la première publication de ce document, plusieurs variantes de cette classe de vulnérabilités ont été divulguées. Microsoft poursuit ses efforts d’investissement dans la protection de nos clients et de conseils. Cette page sera mise à jour à mesure que nous publierons d’autres correctifs.

Les clients qui exécutent du code non approuvé sur leur machine virtuelle doivent prendre des mesures pour se protéger contre ces vulnérabilités en lisant ce qui suit pour en savoir plus sur toutes les vulnérabilités.

Les autres clients doivent évaluer ces vulnérabilités d’un point de vue de la Défense en profondeur et prendre en compte les conséquences en termes de sécurité et de performances de la configuration choisie.

Maintien à jour de vos systèmes d’exploitation

Bien qu’une mise à jour du système d’exploitation ne soit pas nécessaire pour isoler vos applications exécutées sur Azure des autres clients Azure, il est toujours préférable de maintenir votre logiciel à jour. Les derniers correctifs de sécurité pour Windows contiennent l’atténuation de ces vulnérabilités. De même, les distributions Linux ont mis à disposition plusieurs mises à jour pour résoudre ces vulnérabilités. Vous trouverez ci-dessous nos actions recommandées pour mettre à jour votre système d’exploitation :

Offre Action recommandée
Services cloud Azure Activez la mise à jour automatique ou vérifiez que vous exécutez le dernier système d’exploitation invité.
Machines virtuelles Linux Azure Installez les mises à jour de votre fournisseur de système d’exploitation. Pour plus d’informations, consultez Linux plus loin dans ce document.
Machines virtuelles Windows Azure Installez le dernier correctif cumulatif de sécurité.
Autres services PaaS Azure Aucune action n’est nécessaire pour les clients qui utilisent ces services. Azure maintient automatiquement à jour les versions du système d’exploitation.

Conseils supplémentaires si vous exécutez du code non approuvé

Les clients qui autorisent les utilisateurs non approuvés à exécuter du code arbitraire peuvent souhaiter implémenter des fonctionnalités de sécurité supplémentaires dans leurs machines virtuelles Azure ou services cloud. Ces fonctionnalités protègent contre les vecteurs de divulgation intra-processus décrits par plusieurs vulnérabilités d’exécution spéculative.

Exemples de scénarios dans lesquels des fonctionnalités de sécurité supplémentaires sont recommandées :

  • Vous autorisez l’exécution de code auquel vous ne faites pas confiance à l’intérieur de votre machine virtuelle.
    • Par exemple, vous autorisez un de vos clients à charger un fichier binaire ou un script que vous exécutez ensuite dans votre application.
  • Vous autorisez des utilisateurs en qui vous n’avez pas confiance à se connecter à votre machine virtuelle à l’aide de comptes à privilèges limités.
    • Par exemple, vous autorisez un utilisateur à privilèges faibles de vous connecter à l’une de vos machines virtuelles à l’aide du Bureau à distance ou SSH.
  • Vous autorisez des utilisateurs non approuvés à accéder à des machines virtuelles implémentées par le biais de la virtualisation imbriquée.
    • Par exemple, vous contrôlez l’hôte Hyper-V mais vous allouez les machines virtuelles à des utilisateurs non approuvés.

Les clients qui n’appliquent pas de scénario qui inclut du code non fiable n’ont pas besoin d’activer ces fonctionnalités de sécurité supplémentaires.

Activer la sécurité supplémentaire

Vous pouvez activer des fonctionnalités de sécurité supplémentaires dans votre machine virtuelle ou service cloud si vous exécutez du code non approuvé. En parallèle, vérifiez que votre système d’exploitation est à jour pour activer les fonctionnalités de sécurité au sein de votre machine virtuelle ou de votre service Cloud

Windows

Votre système d’exploitation cible doit être à jour pour pouvoir activer ces fonctionnalités de sécurité supplémentaires. Bien que de nombreuses atténuations de soient activées par défaut, les fonctionnalités supplémentaires décrites ici doivent être activées manuellement et peuvent affecter les performances.

Option 1 :

Étape 1 : suivez les instructions de l’article KB4072698 pour vérifier que les protections sont activées à l’aide du module PowerShell SpeculationControl.

Notes

Si vous avez déjà téléchargé ce module, vous devez installer la dernière version.

Pour valider les protections activées contre ces vulnérabilités, consultez Présentation des résultats du script PowerShell Get-SpeculationControlSettings.

Si les protections ne sont pas activées, veuillez contacter le Support Azure pour activer des contrôles supplémentaires sur votre machine virtuelle Azure.

Étape 2 : Pour activer la fonctionnalité Kernel Virtual Address Shadowing (KVAS) et la prise en charge de système d’exploitation Branch Target Injection (BTI), suivez les instructions figurant dans l’article KB4072698 pour activer la protection à l’aide des clés de registre Session Manager. Un redémarrage est nécessaire.

Étape 3 : Pour les déploiements qui utilisent la virtualisation imbriquée (D3 et E3 uniquement) : ces instructions s’appliquent à la machine virtuelle que vous utilisez comme hôte Hyper-V.

  1. Suivez les instructions de l’article KB4072698 pour activer les protections via les clés de Registre MinVmVersionForCpuBasedMitigations.
  2. Définissez le type de planificateur d’hyperviseur sur Core en suivant les instructions fournies ici.

Option 2 :

Désactivez Hyper-Threading sur la machine virtuelle : les clients qui exécutent du code non approuvé sur une machine virtuelle multithreads peuvent désactiver la fonctionnalité Hyper-Threading ou passer à une taille de machine virtuelle non multithreads. Consutlez ce document pour obtenir la liste des tailles de machine virtuelle multithreads (dont le rapport processeur virtual/cœur est 2:1). Pour vérifier si la fonctionnalité Hyper-Threading est activée sur votre machine, reportez-vous au script ci-dessous lorsque vous utilisez la ligne de commande Windows à partir de la machine virtuelle.

Entrez wmic pour ouvrir l’interface interactive. Puis, entrez la commande suivante pour afficher la quantité de processeurs physiques et logiques sur la machine virtuelle.

CPU Get NumberOfCores,NumberOfLogicalProcessors /Format:List

Si le nombre de processeurs logiques est supérieur à celui des processeurs physiques (cœurs), la fonctionnalité Hyper-Threading est activée. Si vous exécutez une machine virtuelle multithreads, contactez le Support Azure pour obtenir la désactivation de la fonctionnalité Hyper-Threading. Une fois celle-ci désactivée, la prise en charge de cette modification requiert un redémarrage complet de la machine virtuelle. Reportez-vous à Nombre de cœurs pour comprendre pourquoi le nombre de cœurs de la machine virtuelle a diminué.

Option 3

Pour CVE-2022-23816 et CVE-2022-21123 (confusion de type de branche de processeur AMD), suivez l’Option 1 et l’Option 2 ci-dessus.

Linux

L’activation de l’ensemble des fonctionnalités de sécurité supplémentaires nécessite que le système d’exploitation cible soit entièrement à jour. Certaines atténuations des risques sont activées par défaut. La section suivante décrit les fonctionnalités qui sont désactivées par défaut et/ou qui dépendent de la prise en charge matérielle (microcode). L’activation de ces fonctionnalités peut affecter les performances. Reportez-vous à la documentation du fournisseur de votre système d’exploitation pour obtenir des instructions

Étape 1 : Désactivez Hyper-Threading sur la machine virtuelle - Les clients qui exécutent du code non approuvé sur une machine virtuelle mutithread doivent désactiver la fonctionnalité Hyper-Threading ou passer à une machine virtuelle non multithread. Consutlez ce document pour obtenir la liste des tailles de machine virtuelle multithreads (dont le rapport processeur virtual/cœur est 2:1). Pour vérifier si vous exécutez une machine virtuelle multithreads, exécutez la commande lscpu dans la machine virtuelle Linux.

Si Thread(s) per core = 2, la fonctionnalité Hyper-Threading a été activée.

Si Thread(s) per core = 1, la fonctionnalité Hyper-Threading a été désactivée.

Exemple de sortie pour une machine virtuelle sur laquelle la fonctionnalité Hyper-Threading est activée :

CPU Architecture:      x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1

Si vous exécutez une machine virtuelle multithreads, contactez le Support Azure pour obtenir la désactivation de la fonctionnalité Hyper-Threading. Une fois celle-ci désactivée, la prise en charge de cette modification requiert un redémarrage complet de la machine virtuelle. Reportez-vous à Nombre de cœurs pour comprendre pourquoi le nombre de cœurs de la machine virtuelle a diminué.

Étape 2 : Pour limiter les vulnérabilités de mémoire ci-dessous en fonction du processeur, reportez-vous à la documentation du fournisseur de votre système d’exploitation :

Nombre de cœurs

Lors de la création d’une machine virtuelle multithreads, Azure alloue 2 threads par cœur, que l’on appelle processeurs virtuels. Lorsque la fonctionnalité Hyper-Threading est désactivée, Azure supprime un thread et monte des cœurs multithreads uniques (cœurs physiques). Le ratio processeur virtuel/processeur est de 2:1. Ainsi, une fois la fonctionnalité Hyper-Threading désactivée, le nombre de processeurs de la machine virtuelle semble avoir diminué de moitié. Par exemple, une machine virtuelle D8_v3 est une machine virtuelle multithreads s’exécutant sur 8 processeurs virtuels (2 threads par cœurs x 4 cœurs). Lorsque la fonctionnalité Hyper-Threading est désactivée, les processeurs passent à 4 cœurs physiques avec 1 thread par cœur.

Étapes suivantes

Pour plus d’informations sur l’intégration de la sécurité dans chaque aspect d’Azure, consultez la Documentation sur la sécurité Azure.