Protection des machines virtuelles invité contre CVE-2017-5715 (injection cible de branche)

Cette page fournit des informations supplémentaires sur la protection des machines virtuelles sur des hôtes Hyper-V contre CVE-2017-5715 (injection cible de branche). Pour des recommandations générales Windows Server, veuillez vous référer à cette page.

Les étapes suivantes sont requises pour vous assurer que vos machines virtuelles sont protégées :

  1. Mettez à jour le système d'exploitation hôte.
  2. Vérifiez que l’hôte de virtualisation a été mis à jour avec le microprogramme contenant des mises à jour pour CVE-2017-5715.
  3. Vérifiez qu'Hyper-V est configuré pour exposer de nouvelles fonctionnalités de processeur aux machines virtuelles invité.
  4. Mettez à jour le système d’exploitation invité, le cas échéant.
  5. Effectuez un démarrage à froid des machines virtuelles invité.

Mettre à jour le système d'exploitation hôte

Appliquez la mise à jour du système d’exploitation Windows à l’hôte de virtualisation. Pour en savoir plus sur l’activation de cette mise à jour, consultez l’article 4072699 de la Base de connaissances Microsoft.

Vérifier que l’hôte de virtualisation a été mis à jour avec le microprogramme contenant des mises à jour pour CVE-2017-5715

Les mises à jour du microprogramme de votre OEM peuvent contenir de nouvelles fonctionnalités de processeur pouvant servir de protection contre CVE-2017-5715 (IBRS, STIBP, IBPB). Une fois que le microprogramme de l’hôte de virtualisation a été mis à jour, l’hyperviseur peut mettre ces fonctionnalités supplémentaires à disposition des machines virtuelles invité après avoir réalisé les étapes suivantes.

Vérifier qu'Hyper-V est configuré pour exposer de nouvelles fonctionnalités de processeur aux machines virtuelles invité

Vérifiez qu’Hyper-V est configuré pour exposer les nouvelles fonctionnalités du processeur sur les machines virtuelles invitées. Cette configuration est fondée sur la version VM des machines virtuelles invité.

Si toutes les machines virtuelles sur l'hôte sont des ordinateurs virtuels version 8.0 ou supérieure, aucune configuration n’est requise. Ces machines virtuelles détecteront les nouvelles fonctionnalités de processeur après un démarrage à froid.

En cas de machine virtuelle avec une version d'ordinateur virtuel inférieure à 8.0, vous devez définir une valeur de registre spécifique sur le système d’exploitation hôte. Cette opération configurera Hyper-V pour exposer les nouvelles fonctionnalités de processeur aux machines virtuelles invité avec des versions inférieures d'ordinateurs virtuels.

Cette valeur de registre est MinVmVersionForCpuBasedMitigations sous HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization. La valeur doit être définie pour la version minimale d'ordinateur virtuel devant accéder aux fonctionnalités de mise à jour du microprogramme, au format « Majeure.Mineure ». Pour exposer le microprogramme à toutes les machines virtuelles sur l'hôte (c.-à-d. version 1.0 ou supérieure), exécutez la commande suivante sur l’hôte :

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization" /v MinVmVersionForCpuBasedMitigations /t REG_SZ /d "1.0" /f

La version 8.0 de la machine virtuelle a été introduite avec Windows Server 2016 et la mise à jour anniversaire Windows 10. Les hôtes exécutant Windows Server 2012 R2 et versions antérieures doivent définir la valeur de Registre*

La migration dynamique échoue entre les hôtes avec le microprogramme mis à jour et les hôtes sans le microprogramme mis à jour. L’opération de démarrage échoue à partir de l’état enregistré. Pour plus d’informations, consultez la FAQ au bas de cet article.

Facultatif : Configurer les systèmes Intel pré-Skylake pour utiliser Retpoline

La configuration de machines virtuelles sur des hôtes Intel antérieurs à Skylake pour Retpoline bloque la migration dynamique vers des hôtes plus récents (c’est-à-dire Skylake et au-delà).

Par défaut, les machines virtuelles exécutées sur des systèmes antérieurs à Skylake ne peuvent pas utiliser retpoline. Pour permettre à ces systèmes de tirer parti des atténuations basées sur la retpoline, définissez RetsPredictedFromRsbOnly sous sur HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization1.

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization" /v RetsPredictedFromRsbOnly /t REG_DWORD /d 1 /f

Pour inverser cette configuration (c’est-à-dire empêcher les machines virtuelles de tirer parti de retpoline), définissez sur RetsPredictedFromRsbOnly0.

Mettre à jour le système d'exploitation invité

Pour terminer la configuration de la protection contre CVE-2017-5715 au sein de ces machines virtuelles, le système d’exploitation invité doit être mis à jour et configuré pour tirer parti de ces nouvelles fonctionnalités. Pour les systèmes d’exploitation Microsoft, veuillez suivre les recommandations de cet article lors de la mise à jour.

Remarque : la mise à jour du système d’exploitation invité peut survenir à tout moment au cours de ce processus. Elle peut se produire avant la mise à jour du microprogramme de l’hôte ou après le démarrage à froid de la machine virtuelle invité.

Réaliser un démarrage à froid de l'invité

Après avoir effectué les trois premières étapes, les machines virtuelles doivent subir un démarrage à froid pour détecter les nouvelles fonctionnalités de processeur. Autrement dit, les ordinateurs virtuels en cours d’exécution doivent être complètement mis hors tension avant de redémarrer. Le redémarrage à partir de l’intérieur du système d’exploitation invité n’est pas suffisant.

Questions fréquentes (FAQ)

Quel est l'impact de cette opération sur la migration dynamique ?

La migration dynamique d’une machine virtuelle avec les nouvelles fonctionnalités de processeur échouera en cas de déplacement vers des hôtes Hyper-V sans microprogramme mis à jour. Pour activer la migration dynamique vers un hôte sans microprogramme mis à jour, arrêtez l'exposition des fonctionnalités de processeur mises à jour au sein de la machine virtuelle concernée. Le moyen le plus simple d'y parvenir consiste à mettre à niveau MinVmVersionForCpuBasedMitigations avec une version d’ordinateur virtuel supérieure à celle de la machine virtuelle devant être migrée, puis à effectuer un démarrage à froid de cette machine virtuelle.

La migration d’une machine virtuelle sans les nouvelles fonctionnalités de processeur réussira en cas de déplacement vers des hôtes Hyper-V avec microprogramme mis à jour. Cependant, ces invités doivent subir un démarrage à froid afin de détecter les fonctionnalités du microprogramme mis à jour.

Les machines virtuelles configurées pour utiliser Retpoline sur les systèmes Intel antérieurs à Skylake ne pourront pas migrer vers les familles de processeurs plus récentes (par exemple, Skylake et les versions ultérieures).

Qu’en est-il de la migration dynamique de machines virtuelles version 5.0 entre Windows Server 2012R2 et Windows Server 2016 ?

Pour garantir la réussite de l'opération dans ce scénario, la valeur de registre doit être définie à la fois sur le système Windows Server 2012R2 et le système Windows Server 2016. Après la migration vers Windows Server 2016, la version d'ordinateur virtuel reste 5.0. La clé de registre est donc requise pour exposer les nouvelles fonctionnalités de processeur à la machine virtuelle.

Ces recommandations s’appliquent-elles aux machines virtuelles s'exécutant sur VMWare ?

Non. Ces recommandations sont spécifiques aux machines virtuelles s’exécutant sur des hôtes Hyper-V.

Ces recommandations s’appliquent-elles à Hyper-V sur Windows 10 ?

Oui. Les mêmes étapes s’appliquent aux machines virtuelles s’exécutant sur Windows Server et Windows Client.

Dois-je installer les mises à jour du microprogramme avant d’effectuer un démarrage à froid des machines virtuelles ?

Oui. Vous devez mettre à jour le système d’exploitation hôte et le microprogramme avant d'effectuer un démarrage à froid de vos machines virtuelles.

Que puis-je faire si mon OEM ne fournit pas encore un microprogramme mis à jour ?

Veuillez consulter l'article Protection alternative pour les hôtes Windows Server 2016 Hyper-V contre les vulnérabilités de canal auxiliaire d'exécution spéculative

Comment vérifier la version d’ordinateur virtuel de mes machines virtuelles ?

Exécutez les commandes PowerShell suivantes sur l'hôte Hyper-V :

Get-VM * | Format-Table Name, Version  

Dois-je faire quelque chose d'autre pour protéger les machines virtuelles s’exécutant en « mode de compatibilité du processeur » ?

Non. Après avoir suivi les instructions de cette page, les nouvelles fonctionnalités de processeur seront également exposées aux machines virtuelles démarrées en mode de compatibilité du processeur.

Et si seule la moitié des machines de mon cluster a bénéficié d'une mise à jour du microprogramme ?

Cela impactera la migration dynamique au sein de votre cluster. Les machines virtuelles avec les nouvelles fonctionnalités de processeur ne seront pas en mesure de migrer dynamiquement vers des hôtes sans la mise à jour du microprogramme.

Comment puis-je vérifier que la machine virtuelle invité a accès aux nouvelles fonctionnalités de processeur ?

Utilisez le module/script PowerShell « contrôle de spéculations ». Pour obtenir des instructions détaillées, consultez cette page.

Quel impact cela a-t-il sur l’opération de démarrage sur une machine virtuelle avec un état d’enregistrement ?

L’opération de démarrage échoue. Le moyen le plus simple d'y parvenir consiste à mettre à niveau MinVmVersionForCpuBasedMitigations avec une version d’ordinateur virtuel supérieure à celle de la machine virtuelle devant être migrée, puis à effectuer un démarrage à froid de cette machine virtuelle.