防御推理执行侧信道漏洞的 Windows Server 指导

适用于: Windows Server 2016 Version 1709Windows Server 2012 R2 StandardWindows Server 2012 Standard 详细

摘要


Microsoft 已经意识到一个公开披露的新漏洞类(称为“推理执行侧信道攻击”),会对包括 Intel、AMD 和 ARM 在内的众多新式处理器产生影响。

注意 此问题还会影响其他操作系统,例如 Android、Chrome、iOS 和 macOS。因此,我们建议客户向这些供应商寻求指导。

Microsoft 已发布了几项更新来帮助缓解这些漏洞。我们还采取了措施来保护我们的云服务。有关更多详细信息,请参阅下列部分。

Microsoft 尚未收到任何信息,指出这些漏洞已被用来攻击客户。Microsoft 一直在与业内合作伙伴(包括芯片制造商、硬件 OEM 和应用供应商)密切合作以保护客户。若要获得所有可用的保护,需要安装固件(微码)和软件更新。其中包括来自设备 OEM 的微码,在有些情况下,还包括防病毒软件更新。

本文修复了以下漏洞:

若要了解有关此类漏洞的更多信息,请参阅 ADV180002 和 ADV180012

Microsoft 提供了第三方联系信息,以便你寻求技术支持。该联系信息如有更改,恕不另行通知。Microsoft 不保证此第三方联系信息的准确性。

建议的操作


客户应采取下列操作以帮助防御这些漏洞:

  1. 应用所有可用的 Windows 操作系统更新,包括 月度 Windows 安全更新。有关如何启用这些更新的详细信息,请参阅 Microsoft 知识库文章 4072699
  2. 应用设备制造商 (OEM) 提供的适用固件(微码)更新。
  3. 根据 Microsoft 安全通报 ADV180002ADV180012 以及本知识库文章中的信息评估你的环境风险。
  4. 使用本知识库文章中提供的通报和注册表项信息,根据需要采取措施。

在 Windows Server 上启用保护


默认情况下,在 Windows Server 上启用 CVE-2017-5753 的缓解措施,且没有可用于禁用它们的管理员选项。默认情况下,禁用本文中所述的其他三个漏洞的缓解措施。想要获取所有针对这些漏洞的可用保护的客户必须对注册表项进行更改以启用这些缓解措施。

启用这些缓解措施可能会影响性能。性能影响的范围取决于多个因素,例如,物理主机中的特定芯片组和正在运行的工作负载。我们建议客户评估对各自环境的性能影响,并做出必要的调整。

如果你的服务器属于以下类别之一,则面临的风险将增加:

  • Hyper-V 主机 – 需要保护以防范从 VM 到 VM 和从 VM 到主机的攻击。
  • 远程桌面服务主机 (RDSH) – 需要保护以防范从一个会话到另一个会话或从会话到主机的攻击。
  • 正在运行不受信任代码的物理主机或虚拟机(例如,容器或数据库的不受信任的扩展),不受信任的 Web 内容或运行来自外部源的代码的工作负载。这些需要从不受信任过程到另一过程或从不受信任过程到内核攻击的保护。

使用以下注册表项设置在服务器上启用缓解措施,并重启系统以使更改生效。

启用 CVE-2017-5715(Spectre 变体 2)和 CVE-2017-5754 (Meltdown) 的缓解措施


重要说明本部分、方法或任务包含有关如何修改注册表的步骤。但是,注册表修改不当可能会出现严重问题。因此,请务必严格按照下列步骤操作。为了获得进一步的保护,请在修改注册表之前对其进行备份。这样就可以在出现问题时还原注册表。有关如何备份和还原注册表的更多信息,请单击下面的文章编号查看 Microsoft 知识库中相应的文章:

322756 如何在 Windows 中备份和还原注册表

启用 CVE-2017-5715(Spectre 变体 2)和 CVE-2017-5754 (Meltdown) 的缓解措施

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 0 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f

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

如果这是 Hyper-V 主机并且已应用固件更新:完全关闭所有虚拟机。这允许在 VM 启动之前在主机上应用与固件相关的缓解措施。因此,VM 在重启后也会更新。

重启服务器,以使更改生效。

禁用 CVE-2017-5715(Spectre 变体 2)和 CVE-2017-5754 (Meltdown) 的缓解措施

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 3 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f

重启服务器,以使更改生效。

(不必更改 MinVmVersionForCpuBasedMitigations。)


注意

禁用 CVE-2017-5715(Spectre 变体 2)的缓解措施


在 Intel 测试、更新和部署新微码的同时,我们将为使用受影响设备的高级用户提供一个新选项,以便通过注册表设置更改手动独立禁用和启用针对 Spectre 变体 2(CVE-2017-5715 – “分支目标注入”)的缓解措施。

如果你安装了微码,但由于意外重启或系统稳定性问题要禁用 CVE-2017-5715 缓解措施,请按照以下说明操作。

禁用变体 2:(CVE-2017-5715 – 分支目标注入”)缓解措施

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 1 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f

启用变体 2:(CVE-2017-5715 – “分支目标注入”)缓解措施

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 0 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f

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


注意
 通过注册表设置更改禁用和启用变体 2 缓解措施将需要管理权限和重启。

在 AMD 处理器 (CPU) 上针对 Spectre 变体 2 启用间接分支预测屏障 (IBPB)


某些 AMD 处理器 (CPU) 提供间接分支控制功能,旨在通过间接分支预测屏障 (IBPB) 机制来缓解间接分支目标注入。(有关更多信息,请参阅 ADV180002 中的常见问题解答 #15,以及有关间接分支控制的 AMD 架构指南AMD 安全更新

从用户上下文切换到内核上下文时,按照以下说明控制 IBPB:

在从用户上下文切换到内核上下文时使用间接分支预测屏障 (IBPB):

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 64 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f


注意
 通过注册表设置更改启用间接分支预测屏障 (IBPB) 的使用需要管理权限和重启。

启用 CVE-2018-3639(推理存储绕过)、CVE-2017-5715(Spectre 变体 2)和 CVE-2017-5754 (Meltdown) 的缓解措施



要启用 CVE-2018-3639(推理存储绕过)、CVE-2017-5715(Spectre 变体 2)和 CVE-2017-5754 (Meltdown) 的缓解措施,请执行以下操作:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 8 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f

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

禁用 CVE-2018-3639(推理存储绕过)的缓解措施和 CVE-2017-5715(Spectre 变体 2)和 CVE-2017-5754 (Meltdown) 的缓解措施

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 3 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f


注意
这些注册表更改需要管理权限和重启。

验证保护是否已启用


为了帮助客户确认是否已启用相应的保护,Microsoft 已发布了一个 PowerShell 脚本,客户可以在自己的系统上运行该脚本。通过运行以下命令,安装并运行该脚本。

使用 PowerShell Gallery 的 PowerShell 验证(Windows Server 2016 或 WMF 5.0/5.1)

安装 PowerShell 模块:

PS> Install-Module SpeculationControl

运行 PowerShell 模块以验证保护是否已启用:

PS> # Save the current execution policy so it can be reset

PS> $SaveExecutionPolicy = Get-ExecutionPolicy

PS> Set-ExecutionPolicy RemoteSigned -Scope Currentuser

PS> Import-Module SpeculationControl

PS> Get-SpeculationControlSettings

PS> # Reset the execution policy to the original state

PS> Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser

使用来自 Technet 的下载的 PowerShell 验证(早期 OS 版本/早期 WMF 版本)

从 Technet 脚本中心安装 PowerShell 模块:

  1. 请访问 https://aka.ms/SpeculationControlPS
  2. 将 SpeculationControl.zip 下载到本地文件夹。
  3. 将内容解压至本地文件夹。例如:C:\ADV180002

运行 PowerShell 模块以验证保护是否已启用:

启动 PowerShell,然后使用上述示例复制并运行下列命令:

PS> # Save the current execution policy so it can be reset

PS> $SaveExecutionPolicy = Get-ExecutionPolicy

PS> Set-ExecutionPolicy RemoteSigned -Scope Currentuser

PS> CD C:\ADV180002\SpeculationControl

PS> Import-Module .\SpeculationControl.psd1

PS> Get-SpeculationControlSettings

PS> # Reset the execution policy to the original state

PS> Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser


有关 PowerShell 脚本输出的详细说明,请参阅
知识库文章 4074629

常见问题


参考