Important: The following section describes mitigations that should be applied ONLY under the specific conditions that are determined by the flow chart in Figure 1 in the previous section. Do NOT apply these mitigations unless the flowchart indicates that the specific mitigation is necessary.
In addition to software and microcode updates, manual configuration changes may also be required to enable certain protections. We further recommend that Enterprise customers register for the security notifications mailer in order to be alerted about content changes. (See Microsoft Technical Security Notifications.)
Mitigation A
Obtain and apply the latest Windows updates
Apply all available Windows operating system updates, including the monthly Windows security updates. You can see the table of affected products on the Microsoft Security Advisory | ADV 180018 for L1TF, Security Advisory | ADV 190013 for MDS, and CVE-2019-11135 for the Windows Kernel Information Disclosure Vulnerability.
Mitigation B
Obtain and apply the latest microcode or firmware updates
In addition to installing the latest Windows security updates, a processor microcode update is also required. Installation of these updates is provided by the device OEM.
Note: If you’re using nested virtualization (including running Hyper-V containers in a guest VM), you must expose the new microcode enlightenments to the guest VM. This might require upgrading the VM configuration to version 8. Version 8 includes the microcode enlightenments by default. For more information and the required steps, see the following article Microsoft Docs article:
Run Hyper-V in a Virtual Machine with Nested Virtualization
Mitigation C
Should I disable hyper-threading (HT)?
The L1TF and MDS vulnerabilities introduce risk that the confidentiality of Hyper-V virtual machines and the secrets that are maintained by Microsoft Virtualization Based Security (VBS) could be compromised by using a side-channel attack. When Hyper-Threading (HT) is enabled, the security boundaries provided by both Hyper-V and VBS are weakened.
The Hyper-V core scheduler (available starting with Windows Server 2016 and Windows 10 version 1607) mitigates the L1TF and MDS attack vectors against Hyper-V virtual machines while still allowing Hyper-Threading to remain enabled. This provides minimal performance impact.
The Hyper-V core scheduler does not mitigate the L1TF or MDS attack vectors against VBS-protected security features. The L1TF and MDS vulnerabilities introduce risk that the confidentiality of VBS secrets could be compromised via a side-channel attack when Hyper-Threading (HT) is enabled, weakening the security boundary provided by VBS. Even with this increased risk, VBS still provides valuable security benefits and mitigates a range of attacks with HT enabled. Hence, we recommend that VBS continue to be used on HT-enabled systems. Customers who want to eliminate the potential risk of the L1TF and MDS vulnerabilities on the confidentiality of VBS should consider disabling HT to mitigate this additional risk.
Customers who want to eliminate the risk that the L1TF and MDS vulnerabilities pose, whether to the confidentiality of Hyper-V versions that are earlier than Windows Server 2016 or to VBS security capabilities, must weigh the decision and consider disabling HT to mitigate the risk. In general, this decision can be based upon the following guidelines:
- For Windows 10 version 1607, Windows Server 2016 and more recent systems that are not running Hyper-V and are not using VBS-protected security features, customers should not disable HT.
- For Windows 10 version 1607, Windows Server 2016 and more recent systems that are running Hyper-V with the Core Scheduler, but are not using VBS-protected security features, customers should not disable HT.
- For Windows 10 version 1511, Windows Server 2012 R2 and earlier systems that are running Hyper-V, customers must consider disabling HT to mitigate the risk.
The steps that are required to disable HT differ from OEM to OEM. However, they are typically part of the BIOS or firmware setup and configuration tools.
Microsoft has also introduced the ability to disable Hyper-Threading technology through a software setting if it is difficult or impossible to disable HT in your BIOS or firmware setup and configuration tools. The software setting to disable HT is secondary to your BIOS or firmware setting and is disabled by default (meaning HT will follow your BIOS or firmware setting). To learn more about this setting and how to disable HT using it, see the following article:
4072698 Windows Server guidance to protect against speculative execution side-channel vulnerabilities
When possible, it’s recommended to disable HT in your BIOS or firmware for the strongest guarantee that HT is disabled.
Note: Disabling hyperthreading will reduce the CPU cores. This can have an effect on features which require minimum CPU cores to function. For Example, Windows Defender Application Guard (WDAG).
Mitigation D
Enable Hyper-V core scheduler and set the VM hardware thread count per core to 2
Note: These mitigation steps apply only to Windows Server 2016 and Windows 10 versions prior to version 1809. The core scheduler is enabled by default on Windows Server 2019 and Windows 10 version 1809.
Using the core scheduler is a two-stage process that requires you to first enable the scheduler on the Hyper-V host and then configure each VM to take advantage of it by setting their hardware thread count per core to two (2).
The Hyper-V core scheduler that was introduced in Windows Server 2016 and Windows 10 version 1607 is a new alternative to the classic scheduler logic. The core scheduler offers decreased performance variability for workloads inside VMs that are running on an HT-enabled Hyper-V host.
For a detailed explanation of Hyper-V’s core scheduler and the steps to enable it, see the following Windows IT Pro Center article:
Understanding and using Hyper-V hypervisor scheduler types
To enable the Hyper-V core scheduler on Windows Server 2016 or Windows 10, enter the following command:
bcdedit /set HypervisorSchedulerType core
Next, decide whether to configure a given VM’s hardware thread count per core to two (2). If you expose the fact that virtual processors are hyper-threaded to a guest virtual machine, you enable the scheduler in the VM operating system, and also the VM workloads, to use HT in their own work scheduling. To do this, enter the following PowerShell command, in which <VMName> is the name of the virtual machine:
Set-VMProcessor -VMName <VMName> -HwThreadCountPerCore 2
Mitigation E
Enable mitigations for advisories CVE-2017-5715, CVE-2017-5754, and CVE-2019-11135
Note: These mitigations are enabled by default on Windows Server 2019 and Windows client operating systems.
To enable mitigations for advisories CVE-2017-5715, CVE-2017-5754, and CVE-2019-11135, use the guidance in the following articles:
4072698 Windows Server guidance to protect against speculative execution side-channel vulnerabilities
4073119 Windows client guidance for IT Pros to protect against speculative execution side-channel vulnerabilities
Note: These mitigations include and automatically enable the safe page frame bits mitigation for the Windows kernel and also for the mitigations that are described in CVE-2018-3620. For a detailed explanation of the safe page frame bits mitigation, see the following Security Research & Defense Blog article:
Analysis and mitigation of L1 Terminal Fault (L1TF)
Third-party information disclaimer
The third-party products that this article discusses are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, about the performance or reliability of these products.
Third-party contact disclaimer
Microsoft provides third-party contact information to help you find additional information about this topic. This contact information may change without notice. Microsoft does not guarantee the accuracy of third-party contact information.