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

适用于: Windows Server 2019, all versionsWindows 10, version 1809Windows Server version 1803 详细

摘要


Microsoft 已经意识到这种称为“推理执行侧信道”漏洞攻击的新变体。 这些变体被命名为“L1 终端故障 (L1TF)”和“微架构数据采样 (MDS)”。 成功利用 L1TF 或 MDS 的攻击者可以跨信任边界读取特权数据。

2019 年 5 月 14 日更新: 2019 年 5 月 14 日,Intel 发布了有关新的子类推理执行侧信道漏洞(称为“微架构数据采样”)的信息。 它们已被分配以下 CVE:

漏洞概述


在共享资源的环境中(如虚拟化主机),能够在一台虚拟机上运行任意代码的攻击者可以从另一台虚拟机或虚拟化主机本身访问信息。

诸如 Windows Server 远程桌面服务 (RDS) 等服务器工作负载和更专用的角色(如 Active Directory 域控制器)同样面临着风险。 能够运行任意代码的攻击者(无论其特权级别如何)可以访问操作系统或工作负载机密,如加密密钥、密码和其他敏感数据。

Windows 客户端操作系统也存在风险,特别是如果它们运行不受信任的代码,利用基于虚拟化的安全性功能(如 Windows Defender Credential Guard)或使用 Hyper-V 运行虚拟机。

注意:这些漏洞仅影响 Intel Core 处理器和 Intel Xeon 处理器。

缓解措施概述

为了解决这些问题,Microsoft 正在与 Intel 一起合作来制定软件缓解措施和指导。帮助缓解漏洞的软件更新已发布。为了获得所有可用的保护,可能需要更新,还可能包括来自设备 OEM 的微码。

本文介绍如何缓解以下漏洞:

  • CVE-2018-3620 –“L1 终端故障 – OS、SMM”
  • CVE-2018-3646 –“L1 终端故障 – VMM”
  • CVE-2018-11091 –“微架构数据采样不可缓存的内存 (MDSUM)”
  • CVE-2018-12126 –“微架构存储缓冲区数据采样 (MSBDS)”
  • CVE-2018-12127 –“微架构负载端口数据采样 (MLPDS)”
  • CVE-2018-12130 –“微架构填充缓冲区数据采样 (MFBDS)”

若要了解有关这些漏洞的更多信息,请参阅以下安全通报:

L1TF: https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/adv180018

MDS: https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/adv190013

确定缓解威胁所需的操作


以下部分有助于识别受 L1TF 和/或 MDS 漏洞影响的系统,还有助于了解和缓解风险。

潜在性能影响

在测试中,Microsoft 已经看到这些缓解措施所产生的一些性能影响,具体取决于系统配置和所需的缓解措施。

一些客户可能必须禁用超线程(也称为“同时多线程 (SMT)”),才能完全解决 L1TF 和 MDS 所产生的风险。 请注意,禁用超线程可能会导致性能下降。 这种情况适用于使用以下产品的客户:

  • 早于 Windows Server 2016 或 Windows 10 版本 1607(周年更新)的 Hyper-V 版本
  • 基于虚拟化的安全性 (VBS) 功能,如 Credential Guard 和 Device Guard
  • 允许执行不受信任代码的软件(例如,构建自动化服务器或共享的 IIS 托管环境)

这种影响可以因硬件和在系统上运行的工作负载而异。 最常见的系统配置是启用超线程。 因此,性能影响针对正在采取措施在系统上禁用超线程的用户或管理员。

注意:若要确定你的系统是否使用受 VBS 保护的安全功能,请按照下列步骤操作:

  1. 在“开始”菜单上,键入“MSINFO32”。

    注意: “系统信息”窗口将打开。
  2. 在“查找内容”框中,键入“安全性”
  3. 在右窗格中,找到在屏幕截图中选择的两行,然后检查“值”列以查看是否已启用“基于虚拟化的安全性”以及哪个基于虚拟化的安全性服务正在运行。
     

    系统信息窗口


Hyper-V 核心计划程序可针对 Hyper-V 虚拟机缓解 L1TF 和 MDS 攻击途径,同时仍允许超线程保持启用状态。 从 Windows Server 2016 和 Windows 10 版本 1607 开始提供核心计划程序。 这对虚拟机的性能影响最小。

核心计划程序不会针对受 VBS 保护的安全功能缓解 L1TF 或 MDS 攻击途径。有关更多信息,请参阅缓解措施 C 和以下虚拟化博客文章:

https://aka.ms/hyperclear

有关 Intel 提供的关于性能影响的详细信息,请访问下面的 Intel 网站:

www.intel.com/securityfirst

确定受影响的系统和所需的缓解措施

图 1 中的流程图有助于识别受影响的系统并确定一系列正确的操作。

重要说明:如果你运行的是虚拟机,则必须考虑并将流程图分别应用于 Hyper-V 主机和每个受影响的 VM 来宾,因为缓解措施可能同时适用于两者。 具体来说,对于 Hyper-V 主机,流程图步骤提供了 VM 间保护和主机内保护。 不过,仅将这些缓解措施应用于 Hyper-V 主机并不足以提供 VM 内保护。 若要提供 VM 内保护,必须将流程图应用于每个 Windows VM。 在大多数情况下,这意味着要确保在 VM 中设置注册表项。

浏览流程图时,你将会遇到标有字母的蓝色圆圈,它们映射到一个操作或一系列操作,这些是缓解特定于系统配置的 L1TF 攻击途径所需的操作。必须应用你所遇到的每个操作。当你遇到绿色线条时,它表示通向终点的直接路径,并且没有任何其他缓解步骤。

右侧图例中包含对每个标有字母的缓解措施的简短解释。在“缓解措施”部分中提供了每个缓解措施的详细解释,其中包括逐步安装和配置说明。

流程图

 

缓解措施


重要说明: 以下部分介绍应仅在由上述部分的图 1 中的流程图确定的特定条件下应用的缓解措施。请不要应用这些缓解措施,除非流程图表明需要特定缓解措施。

除了软件和微码更新之外,可能还需要手动配置更改才能启用某些保护。我们还建议企业客户注册安全通知邮件程序,以便在内容发生更改时接收通知。 (请参阅 Microsoft 技术安全通知。)

缓解措施 A

获取并应用最新的 Windows 更新

应用所有可用的 Windows 操作系统更新,其中包括每月 Windows 安全更新。可以在 Microsoft 安全通报 | ADV 180018(适用于 L1TF)和安全通报 | ADV 190013(适用于 MDS)中查看受影响产品的表。

缓解措施 B

获取并应用最新的微码或固件更新

除了安装最新的 Windows 安全更新之外,还需要安装处理器微码更新。 这些更新安装由设备 OEM 提供。

注意: 如果你使用的是嵌套虚拟化(包括在来宾 VM 中运行 Hyper-V 容器),则必须向来宾 VM 公开新的微码启蒙。这可能需要将 VM 配置升级到版本 8。 版本 8 默认包含微码启蒙。 有关更多信息和所需的步骤,请参阅以下 Microsoft Docs 文章:

借助嵌套虚拟化在虚拟机中运行 Hyper-V

缓解措施 C

是否应禁用超线程 (HT)?

L1TF 和 MDS 漏洞引入了风险,即 Hyper-V 虚拟机的保密性和由 Microsoft 基于虚拟化的安全性 (VBS) 维护的机密可能会受到使用侧信道攻击的影响。 启用超线程 (HT) 后,Hyper-V 和 VBS 提供的安全边界都会被削弱。

Hyper-V 核心计划程序(从 Windows Server 2016 和 Windows 10 版本 1607 开始提供)可针对 Hyper-V 虚拟机缓解 L1TF 和 MDS 攻击途径,同时仍允许超线程保持启用状态。 这最大限度地降低了性能影响。

Hyper-V 核心计划程序不会针对受 VBS 保护的安全功能缓解 L1TF 或 MDS 攻击途径。 L1TF 和 MDS 漏洞引入了风险,即启用超线程 (HT) 后,VBS 机密的保密性可能会通过侧信道攻击遭到破坏,从而削弱 VBS 提供的安全边界。 即使增加这种风险,VBS 仍然可以提供有价值的安全优势,并在启用 HT 的情况下缓解各种攻击。 因此,我们建议继续在启用 HT 的系统上使用 VBS。 希望消除 L1TF 和 MDS 漏洞对 VBS 保密性的潜在风险的客户应考虑禁用 HT 以缓解这种额外风险。

想要消除 L1TF 和 MDS 漏洞对早于 Windows Server 2016 的 Hyper-V 版本的保密性造成的风险或对 VBS 安全功能带来的风险的客户必须权衡这一决定,并考虑禁用 HT 以缓解风险。 一般而言,此决定可以基于以下准则:

  • 对于没有运行 Hyper-V 并且未使用受 VBS 保护的安全功能的 Windows 10 版本 1607、Windows Server 2016 及更新版本的系统,客户不应禁用 HT。
  • 对于使用核心计划程序运行 Hyper-V 但并未使用受 VBS 保护的安全功能的 Windows 10 版本 1607、Windows Server 2016 及更新版本的系统,客户不应禁用 HT。
  • 对于运行 Hyper-V 的 Windows 10 版本 1511、Windows Server 2012 R2 和更早版本的系统,客户必须考虑禁用 HT 以缓解风险。

禁用 HT 所需的步骤因 OEM 不同而异。 不过,它们通常都是 BIOS 或固件设置和配置工具的一部分。

如果在 BIOS 或固件设置和配置工具中很难或无法禁用 HT,Microsoft 还引入了通过软件设置禁用超线程技术的功能。 禁用 HT 的软件设置是 BIOS 或固件设置的辅助设置,默认情况下处于禁用状态(表示 HT 将遵循 BIOS 或固件设置)。 若要了解有关此设置的更多信息以及如何使用它禁用 HT,请参阅以下文章:

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

如果可能,建议在 BIOS 或固件中禁用 HT,这样最能保证 HT 被禁用。

注意:禁用超线程将减少 CPU 内核。这可能会影响需要最少 CPU 内核即可运行的功能。 例如,Windows Defender Application Guard (WDAG)。

缓解措施 D

启用 Hyper-V 核心计划程序,并将每个核心的 VM 硬件线程计数设置为 2

注意: 这些缓解步骤仅适用于 Windows Server 2016 和 Windows 10 版本 1809 之前的版本。 在 Windows Server 2019 和 Windows 10 版本 1809 上默认启用核心计划程序。

使用核心计划程序的过程分为两个阶段,首先要求在 Hyper-V 主机上启用计划程序,然后配置每个 VM,以便通过将每个核心的硬件线程计数设置为二 (2) 来利用它。

在 Windows Server 2016 和 Windows 10 版本 1607 中引入的 Hyper-V 核心计划程序是传统计划程序逻辑的新选择。 核心计划程序降低了在启用了 HT 的 Hyper-V 主机上运行的 VM 内部工作负载的性能多变性。

有关 Hyper-V 核心计划程序的详细解释和启用步骤,请参阅下面的 Windows IT 专业人员中心文章:

了解和使用 Hyper-V 虚拟机监控程序计划程序类型

若要在 Windows Server 2016 或 Windows 10 上启用 Hyper-V 核心计划程序,请输入以下命令:

bcdedit /set HypervisorSchedulerType core

接下来,决定是否将给定 VM 的每个核心的硬件线程计数配置为二 (2)。如果将虚拟处理器是超线程的事实公开给来宾虚拟机,则可以在 VM 操作系统中启用计划程序,以及 VM 工作负载,以便在其自己的工作计划中使用 HT。为此,请输入以下 PowerShell 命令,其中 <VMName> 是虚拟机的名称:

Set-VMProcessor -VMName <VMName> -HwThreadCountPerCore 2

缓解措施 E

启用通报 CVE-2017-5715 和 CVE-2017-5754 的缓解措施

注意: 这些缓解措施默认在 Windows Server 2019 和 Windows 客户端操作系统中启用。

若要启用通报 CVE-2017-5715 和 CVE-2017-5754 的缓解措施,请使用以下文章中的指导:

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

KB 4073119 | 为 IT 专业人士提供防范推理执行侧信道漏洞的 Windows 客户端指导

 

注意: 这些缓解措施包括并自动启用 Windows 内核的安全页面帧位缓解措施以及 CVE-2018-3620 中描述的缓解措施。 有关安全页面帧位缓解措施的详细说明,请参阅以下安全研究与防卫博客文章:

L1 终端故障 (L1TF) 的分析与缓解措施