Защита гостевых виртуальных машин от уязвимости CVE-2017-5715 (внедрение ответвления цели)Protecting guest virtual machines from CVE-2017-5715 (branch target injection)

На этой странице приведены дополнительные сведения о защите виртуальных машин на узлах Hyper-V от уязвимости CVE-2017-5715 (внедрение ответвления цели).This page provides additional detail about protecting virtual machines on Hyper-V hosts from CVE-2017-5715 (branch target injection). Общие инструкции по Windows Server см. на этой странице.For general Windows Server guidance, please refer to this page.

Для обеспечения защиты виртуальных машин необходимо выполнить следующее действия.The following steps are required to ensure that your virtual machines are protected:

  1. Обновите операционную систему узла.Update the host operating system.
  2. Убедитесь, что на узле виртуализации установлено встроенное ПО, которое содержит обновления для защиты от CVE-2017-5715.Ensure the virtualization host has been updated to firmware which contains updates for CVE-2017-5715.
  3. Убедитесь, что платформа Hyper-V предоставляет новые возможности процессора гостевым виртуальным машинам Hyper-V.Ensure Hyper-V is configured to expose new processor capabilities to guest virtual machines.
  4. Обновите гостевую операционную систему при необходимости.Update the guest operating system as required.
  5. Выполните холодную перезагрузку гостевых виртуальных машин.Perform a cold boot of guest virtual machines.

Обновление операционной системы узлаUpdate the host operating system

Установить обновления операционной системы Windows на узле виртуализации.Apply the Windows operating system update to the virtualization host. Сведения о том, как включить это обновление, см. в статье базы знаний Майкрософт 4072699.For details about how to enable this update, see Microsoft Knowledge Base article 4072699.

Убедитесь, что на узле виртуализации установлено встроенное ПО, которое содержит обновления для защиты от CVE-2017-5715Ensure the virtualization host has been updated to firmware which contains updates for CVE-2017-5715

Обновления встроенного ПО от изготовителя оборудования могут содержать новые возможности процессора, которые можно использовать для защиты от уязвимости CVE-2017-5715 (IBRS, STIBP, IBPB).Firmware updates from your OEM may contain new processor capabilities that can be used to protect against CVE-2017-5715 (IBRS, STIBP, IBPB). После подтверждения обновления встроенного ПО узла виртуализации низкоуровневая оболочка может предоставить эти дополнительные возможности гостевым виртуальным машинам после выполнения следующих действий.Once the virtualization host's firmware has been updated, the hypervisor can make these additional capabilities available to guest virtual machines after taking the following steps.

Убедитесь, что платформа Hyper-V предоставляет новые возможности процессора гостевым виртуальным машинам Hyper-VEnsure Hyper-V is configured to expose new processor capabilities to guest virtual machines

Убедитесь, что Hyper-V настроен на предоставление новых возможностей процессора в гостевых виртуальных машинах.Ensure that Hyper-V is configured to expose the new processor capabilities into guest virtual machines. Эта конфигурация зависит от версии VM гостевых виртуальных машин.This configuration is based on the VM version of the guest virtual machines.

Если версия VM всех виртуальных машин на узле — 8.0 или более поздняя, настройка не требуется.If all of the virtual machines on the host are VM version 8.0 or higher, then no configuration is required. Эти виртуальные машины смогут обнаружить новые возможности процессора после холодной перезагрузки.These virtual machines will see the new processor capabilities after a cold boot.

Если версия каких-либо виртуальных машин меньше 8.0, необходимо настроить определенное значение реестра в операционной системе узла.If there are any virtual machines with VM version below 8.0, you must set a specific registry value on the host operating system. Таким образом платформа Hyper-V предоставит новые возможности процессора гостевым виртуальным машинам с более ранними версиями VM.This will configure Hyper-V to expose the new processor capabilities into guest virtual machines with lower VM versions.

Значение реестра равно MinVmVersionForCpuBasedMitigations в разделе HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization.That registry value is MinVmVersionForCpuBasedMitigations under HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization. В этом значении следует указать минимальную версию VM, которой требуется доступ к возможностям обновленного встроенного ПО в формате "основной_номер.дополнительный_номер".The value should be set to the minimum VM version that needs access to the updated firmware capabilities, in the format “Major.Minor”. Чтобы предоставить встроенного ПО всем виртуальны машинам на узле (т. е. версиям 1.0 и более поздним версиям), выполните следующую команду на узле:To expose the firmware to all virtual machines on the host (i.e. version 1.0 and above), run the following command on the host:

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

Примечание. Виртуальная машина версии 8,0 была представлена в Windows Server 2016 и юбилейном обновлении Windows 10. Для узлов, работающих под Windows Server 2012 R2 и ниже, необходимо задать значение реестра.Note: VM Version 8.0 was introduced with Windows Server 2016 and the Windows 10 Anniversary Update. Hosts running Windows Server 2012 R2 and below must set the registry value

Предупреждение. Динамическая миграция между узлами с обновленным встроенным по и узлами без обновленного встроенного по не будет выполнена. Дополнительные сведения см. в разделе часто задаваемых вопросов в нижней части этого документа.Warning: live migration will fail between hosts with the updated firmware and hosts without the updated firmware. For more details, see the FAQ at the bottom of this document.

Необязательно: Настройка предварительно Skylake систем Intel для использования RetpolineOptional: Configure pre-Skylake Intel systems to use Retpoline

Предупреждение. Настройка виртуальных машин на пред-Skylake узлах Intel для Retpoline будет блокировать динамическую миграцию на более новые узлы (т. е. Skylake и более).Warning: configuring VMs on pre-Skylake Intel hosts for Retpoline will block live migration to newer hosts (i.e. Skylake and beyond).

По умолчанию виртуальные машины, работающие на пред-Skylake системах, не могут использовать retpoline.By default, virtual machines running on pre-Skylake systems are prevented from using retpoline. Чтобы разрешить этим системам использовать retpoline на основе защиты, задайте для параметра RetsPredictedFromRsbOnly в разделе HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization значение 1.To allow these systems to leverage retpoline based mitigations, set RetsPredictedFromRsbOnly under HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization to 1.

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

Чтобы отменить эту конфигурацию (т. е. запретить виртуальным машинам использовать retpoline), задайте для RetsPredictedFromRsbOnly значение 0.To reverse this configuration (i.e. prevent virtual machines from leveraging retpoline), set RetsPredictedFromRsbOnly to 0.

Обновление гостевой операционной системыUpdate the guest operating system

Для завершения настройки средств защиты от уязвимости CVE-2017-5715 на этих виртуальных машинах необходимо обновить и настроить гостевую операционную систему, чтобы воспользоваться преимуществами новых возможностей.To complete protection against CVE-2017-5715 within these virtual machines, the guest operating system must be updated and configured to take advantage of these new capabilities. Для операционных систем Майкрософт во время обновления следуйте инструкциям, приведенным в этой статье.For Microsoft operating systems, please follow the guidance in this article when updating.

Примечание. обновление операционной системы на виртуальной машине может выполняться в любой момент в этом процессе. Это может произойти перед обновлением микропрограммы узла или после холодной загрузки гостевой виртуальной машины.Note: updating the guest operating system can occur at any time in this process. It can occur before updating the host firmware or after cold booting the guest virtual machine.

Холодная перезагрузка гостевой виртуальной машиныPerform a cold boot of the guest

После выполнения первых трех действий необходимо выполнить холодную перезагрузку виртуальных машин, чтобы они могли обнаружить новые возможности процессора.After completing the first three steps, virtual machines must go through a cold boot to see the new processor capabilities. Это означает, что необходимо полностью отключить работающие виртуальные машины перед их повторным запуском.This means the running VMs must completely power off before starting again. Перезагрузки из гостевой операционной системы недостаточно.Rebooting from inside the guest operating system is not sufficient.

Часто задаваемые вопросыFrequently Asked Questions

Как это влияет на динамическую миграцию?How does this impact live migration?

Динамическая миграция виртуальной машины с новыми возможностями процессора завершится ошибкой при переходе на узлы Hyper-V без обновленного встроенное ПО.Live migration of a virtual machine with the new processor capabilities will fail when moving to Hyper-V hosts without updated firmware. Чтобы реализовать динамическую миграцию на узле без обновленного встроенного ПО, остановите предоставление новых возможностей процессора этой гостевой виртуальной машине.To enable live migration to a host without updated firmware, stop exposing the updated processor capabilities within that guest virtual machine. Самый простой способ это сделать — изменить MinVmVersionForCpuBasedMitigations до версии VM, которая больше версии, необходимой для переноса, и выполнить холодную перезагрузку виртуальной машины.The easiest way to do this is to modify MinVmVersionForCpuBasedMitigations to a VM version above that of the virtual machine that needs to migrate, and perform a cold boot of that virtual machine.

Миграция виртуальных машин без новых возможностей процессора будет выполнена успешно при переходе на узлы Hyper-V с обновленным встроенным ПО.Migration of virtual machines without the new processor capabilities will succeed when moving to Hyper-V hosts with updated firmware. Однако чтобы эти гостевые системы обнаружили обновленные возможности встроенного ПО, необходима холодная перезагрузка.However, a cold boot is required for these guests to see the updated firmware capabilities.

Виртуальные машины, настроенные для использования Retpoline на пред-Skylake системах Intel, не смогут перейти на новые семейства процессоров (т. е. Skylake и более поздние версии).Virtual machines configured to use Retpoline on pre-Skylake Intel systems will fail to migrate to newer processor families (i.e. Skylake and newer).

Как насчет динамической миграции виртуальных машин версии 5.0 между Windows Server 2012 R2 и Windows Server 2016?What about live migration of version 5.0 virtual machines between Windows Server 2012R2 and Windows Server 2016?

Для успешного выполнения этого сценария необходимо настроить значение реестра и в Windows Server 2012 R2, и в Windows Server 2016.To ensure success in this scenario, the registry value must set on both the Windows Server 2012R2 system and the Windows Server 2016 system. После перехода на Windows Server 2016 версия виртуальной машины останется равной 5.0, таким образом раздел реестра должен предоставлять новые возможности процессора виртуальной машине.After migrating onto Windows Server 2016, the VM version will remain 5.0, and thus the registry key is required to expose the new processor capabilities to the virtual machine.

Эти инструкции применяются к виртуальным машинам, работающим на VMWare?Does this guidance apply to virtual machines running on VMWare?

Нет, эти инструкции относятся к виртуальным машинам, работающим на узлах Hyper-V.No, this guidance is specific to virtual machines running on Hyper-V hosts.

Эти инструкции применяются к Hyper-V в Windows 10?Does this guidance apply to Hyper-V on Windows 10?

Да, те же действия относятся к виртуальным машинам, работающими под управлением Windows Server и клиента Windows.Yes, the same steps apply for virtual machines running on both Windows Server and Client.

Требуется ли установить обновления встроенного ПО перед выполнением холодной перезагрузки виртуальных машин?Do I need to install the firmware updates before performing a cold boot of the virtual machines?

Да, необходимо обновить встроенное ПО и операционную систему узла перед холодной перезагрузки виртуальных машин.Yes, you need to update the host operating system and firmware before cold booting your virtual machines.

Что можно сделать, если поставщик оборудования еще не предоставил обновленное встроенное ПО?What can I do if my OEM does not yet provide an updated firmware?

См. раздел Альтернативные средства защиты узлов Hyper-V под управлением Windows Server 2016 от уязвимостей спекулятивного выполнения бокового каналаPlease check out the Alternative protections for Windows Server 2016 Hyper-V Hosts against the speculative execution side-channel vulnerabilities

Как проверить версию VM моих виртуальных машин?How do I check the VM version for my virtual machines?

Выполните следующие команды PowerShell на узле Hyper-V:Run the following PowerShell on the Hyper-V host:

Get-VM * | Format-Table Name, Version  

Нужно ли сделать что-то еще для защиты виртуальных машин, работающих в режиме совместимости процессора?Do I need to do something different to protect virtual machines running under "Processor Compatibility Mode"?

Нет.No. После выполнения инструкций на этой странице новые возможности процессора также предоставляться виртуальным машинам, которые работают в режиме совместимости процессора.After following the instructions on this page, the new processor capabilities will also be exposed to virtual machines started in processor compatibility mode.

Что делать, если только часть компьютеров в моем кластере получили обновление встроенного ПО?What if only half of the machines in my cluster have received a firmware update?

Это повлияет на динамическую миграцию в кластере.This will impact live migration within your cluster. Виртуальные машины с новыми возможностями процессора невозможно перенести динамически на узлы без обновленного встроенного ПО.Virtual machines with the new processor capabilities will not be able to live migrate to hosts without the firmware update.

Как убедиться, что у гостевой виртуальной машины есть доступ к новым возможностям процессора?How can I validate that the guest virtual machine has access to the new processor features?

Используйте модуль или сценарий PowerShell "speculation control".Use the "speculation control" PowerShell module/script. Подробные инструкции см. на этой странице.See this page for detailed instructions.