日期 |
更改说明 |
---|---|
2023 年 10 月 27 日 |
添加了对缓解措施 B 的引用 |
2023 年 7 月 17 日 |
已添加了 MMIO 信息 |
摘要
Microsoft 已经意识到这种称为“推理执行侧信道”漏洞攻击的新变体。 这些变体被命名为“L1 终端故障 (L1TF)”和“微架构数据采样 (MDS)”。 成功利用 L1TF 或 MDS 的攻击者可以跨信任边界读取特权数据。
2019 年 5 月 14 日更新:2019 年 5 月 14 日,Intel 发布了有关新的子类推理执行侧信道漏洞(称为“微架构数据采样”)的信息。 它们已被分配以下 CVE:
2019 年 11 月 12 日更新: 2019 年 11 月 12 日,Intel 发布了一个有关指定为 CVE-2019-11135 的 Intel® 事务同步扩展 (Intel® TSX) 事务异步中止漏洞的技术通报。 Microsoft 已发布多项更新来帮助缓解此漏洞。 请注意以下内容:
漏洞概述
在共享资源的环境中(如虚拟化主机),能够在一台虚拟机上运行任意代码的攻击者可以从另一台虚拟机或虚拟化主机本身访问信息。
诸如 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)
-
CVE-2019-11135 | Windows 内核信息泄露漏洞
-
CVE-2022-21123 | 共享缓冲区数据读取 (SBDR)
-
CVE-2022-21125 | 共享缓冲区数据采样 (SBDS)
-
CVE-2022-21127 | 特殊寄存器缓冲区数据采样更新(SRBDS 更新)
-
CVE-2022-21166 | 设备寄存器部分写入 (DRPW)
若要了解有关这些漏洞的更多信息,请参阅以下安全通报:
L1TF: ADV180018 | Microsoft 缓解 L1TF 变体指南
MDS: ADV190013 | Microsoft 缓解微架构数据采样漏洞指南
MMIO: ADV220002 | 有关 Intel 处理器 MMIO 过时数据漏洞的 Microsoft 指南
Windows 内核信息泄露漏洞: CVE-2019-11135 | Windows 内核信息泄露漏洞
确定缓解威胁所需的操作
以下部分有助于识别受 L1TF 和/或 MDS 漏洞影响的系统,还有助于了解和缓解风险。
潜在性能影响
在测试中,Microsoft 已经看到这些缓解措施所产生的一些性能影响,具体取决于系统配置和所需的缓解措施。
一些客户可能必须禁用超线程(也称为“同时多线程 (SMT)”),才能完全解决 L1TF 和 MDS 所产生的风险。 请注意,禁用超线程可能会导致性能下降。 这种情况适用于使用以下产品的客户:
-
早于 Windows Server 2016 或 Windows 10 版本 1607(周年更新)的 Hyper-V 版本
-
基于虚拟化的安全性 (VBS) 功能,如 Credential Guard 和 Device Guard
-
允许执行不受信任代码的软件(例如,构建自动化服务器或共享的 IIS 托管环境)
这种影响可以因硬件和在系统上运行的工作负载而异。 最常见的系统配置是启用超线程。 因此,性能影响针对正在采取措施在系统上禁用超线程的用户或管理员。
注意:若要确定你的系统是否使用受 VBS 保护的安全功能,请按照下列步骤操作:
-
在“开始”菜单上,键入“MSINFO32”。
注意: “系统信息”窗口将打开。 -
在“查找内容”框中,键入“安全性”。
-
在右窗格中,找到在屏幕截图中选择的两行,然后检查“值”列以查看是否已启用“基于虚拟化的安全性”以及哪个基于虚拟化的安全性服务正在运行。
Hyper-V 核心计划程序可针对 Hyper-V 虚拟机缓解 L1TF 和 MDS 攻击途径,同时仍允许超线程保持启用状态。 从 Windows Server 2016 和 Windows 10 版本 1607 开始提供核心计划程序。 这对虚拟机的性能影响最小。
核心计划程序不会针对受 VBS 保护的安全功能缓解 L1TF 或 MDS 攻击途径。 有关详细信息,请参阅 缓解 C 和以下虚拟化博客文章:
有关 Intel 提供的关于性能影响的详细信息,请访问下面的 Intel 网站:
确定受影响的系统和所需的缓解措施
图 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),安全公告 | ADV220002(针对 MMIO)以及 Windows 内核信息泄露漏洞的安全漏洞 | CVE-2019-11135 上查看受影响产品的表格。
缓解措施 B
获取并应用最新的微码或固件更新
除了安装最新的 Windows 安全更新之外,可能还需要处理器微码或固件更新。 建议从设备 OEM 获取并应用设备相应的最新微码更新。 有关微码或固件更新的详细信息,请参阅以下参考文档:
注意: 如果你使用的是嵌套虚拟化(包括在来宾 VM 中运行 Hyper-V 容器),则必须向来宾 VM 公开新的微码启蒙。 这可能需要将 VM 配置升级到版本 8。 版本 8 默认包含微码启蒙。 有关更多信息和所需的步骤,请参阅以下 Microsoft Docs 文章:
缓解措施 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,请参阅以下文章:
4072698 防御推理执行侧信道漏洞的 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 专业人员中心文章:
若要在 Windows Server 2016 或 Windows 10 上启用 Hyper-V 核心计划程序,请输入以下命令:
bcdedit /set HypervisorSchedulerType core
接下来,决定是否将给定 VM 的每个核心的硬件线程计数配置为 2 (2)。 如果公开虚拟处理器超线程到来宾虚拟机这一事实,请在 VM 操作系统和 VM 工作负载中启用计划程序,以便在其自己的工作计划中使用 HT。 为此,请输入以下 PowerShell 命令,其中<VMName>是虚拟机的名称:
Set-VMProcessor -VMName <VMName> -HwThreadCountPerCore 2
缓解措施 E
启用通报 CVE-2017-5715、CVE-2017-5754 和 CVE-2019-11135 的缓解措施
注意: 这些缓解措施默认在 Windows Server 2019 和 Windows 客户端操作系统中启用。
若要启用通报 CVE-2017-5715、CVE-2017-5754 和 CVE-2019-11135 的缓解措施,请使用以下文章中的指导:
4072698 防御推理执行侧信道漏洞的 Windows Server 指导
4073119 为 IT 专业人士提供防御推理执行侧信道漏洞的 Windows 客户端指导
注意: 这些缓解措施包括并自动启用 Windows 内核的安全页面帧位缓解措施以及 CVE-2018-3620 中描述的缓解措施。 有关安全页面帧位缓解措施的详细说明,请参阅以下安全研究与防卫博客文章:
参考
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 对于这些产品的性能或可靠性,我们不作任何暗示保证或其他形式的保证
我们提供了第三方联系信息,以便你寻求技术支持。 该联系信息如有更改,恕不另行通知。 我们不保证此第三方联系信息的准确性。