更改日期 |
更改说明 |
---|---|
2023 年 7 月 17 日 |
在“已启用所有缓解措施的输出”部分中添加了 MMIO 和输出值的特定说明 |
摘要
为了帮助验证推理执行侧信道缓解措施的状态,我们发布了一个 PowerShell 脚本 (SpeculationControl),可以在自己的设备上运行该脚本。 本文介绍如何运行 SpeculationControl 脚本以及输出的含义。
安全公告 ADV180002、 ADV180012、 ADV180018 和 ADV190013 涵盖了以下 9 种漏洞:
-
CVE-2017-5715(分支目标注入)
-
CVE-2017-5753(边界检查绕过)
备注 针对 CVE-2017-5753(边界检查)的保护措施不需要额外的注册表设置或固件更新。
-
CVE-2017-5754(流氓数据缓存加载)
-
CVE-2018-3639(推理存储绕过)
-
CVE-2018-3620(L1 终端故障 – OS)
-
CVE-2018-11091(微架构数据采样不可缓存的内存 (MDSUM))
-
CVE-2018-12126(微架构存储缓冲区数据采样 (MSBDS))
-
CVE-2018-12127(微架构负载端口数据采样 (MLPDS))
-
CVE-2018-12130(微架构填充缓冲区数据采样 (MFBDS))
公告 ADV220002 涵盖了其他与内存映射 I/O (MMIO) 相关的漏洞:
-
CVE-2022-21123 | 共享缓冲区数据读取(SBDR)
-
CVE-2022-21125 | 共享缓冲区数据采样(SBDS)
-
CVE-2022-21127 | 特殊寄存器缓冲区数据采样更新(SRBDS 更新)
-
CVE-2022-21166 | 设备寄存器部分写入(DRPW)
本文提供有关 SpeculationControl PowerShell 脚本的详细信息,该脚本可帮助确定在某些情况下需要其他注册表设置和固件更新的上面所列各种 CVE 的缓解措施状态。
详细信息
SpeculationControl PowerShell 脚本
通过运行以下命令,安装并运行 SpeculationControl 脚本。
方法 1:使用 PowerShell 库的 PowerShell 验证(Windows Server 2016 或 WMF 5.0/5.1) |
安装 PowerShell 模块 PS> Install-Module SpeculationControl 运行 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 |
方法 2:使用来自 TechNet 的下载的 PowerShell 验证(早期 OS 版本/早期 WMF 版本) |
从 Technet 脚本中心安装 PowerShell 模块
运行 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 脚本输出
SpeculationControl PowerShell 脚本的输出将类似于以下输出。 已启用的保护将在输出中显示为“True”。
PS C:\> Get-SpeculationControlSettings
CVE-2017-5715 [分支目标注入] 的推理控制设置
对分支目标注入缓解的硬件支持存在: False
对分支目标注入缓解的 Windows OS 支持存在:True 对分支目标注入缓解的 Windows OS 支持已启用:False 系统策略已禁用对分支目标注入缓解的 Windows OS 支持:True 由于缺乏硬件支持,已禁用对分支目标注入缓解的 Windows OS 支持:TrueCVE-2017-5754 [流氓数据缓存加载] 的推理控制设置
硬件容易受到流氓数据缓存加载的影响:True
对流氓数据缓存加载缓解的 Windows OS 支持存在:True 对流氓数据缓存加载缓解的 Windows OS 支持已启用:True 硬件要求内核 VA 影子处理:True 对内核 VA 影子的 Windows OS 支持存在:False 对内核 VA 影子的 Windows OS 支持已启用:False 对 PCID 性能优化的 Windows OS 支持已启用:False CVE-2018-3639 推理控制设置 [推理存储绕过]硬件容易受到推理存储绕过的影响:True
对推理存储绕过缓解的硬件支持存在:False 对推理存储绕过缓解的 Windows OS 支持已启用:True 对推理存储绕过缓解的 Windows OS 支持已启用:FalseCVE-2018-3620 [L1 终端故障] 的推理控制设置
硬件容易受到 L1 终端故障的影响:True
对 L1 终端故障缓解的 Windows OS 支持存在:True 对 L1 终端故障缓解的 Windows OS 支持已启用:TrueMDS [微架构数据采样] 的推理控制设置
对 MDS 缓解的 Windows OS 支持存在:True
硬件容易受到 MDS 的攻击:True 对 MDS 缓解的 Windows OS 支持已启用:TrueSBDR 的推测控制设置 [共享缓冲区数据读取]
对 SBDR 缓解的 Windows OS 支持存在:True
硬件容易受到 SBDR 的攻击:True 对 SBDR 缓解的 Windows OS 支持已启用:TrueFBSDP 的推测控制设置 [填充缓冲区过时数据传播器]
对 FBSDP 缓解的 Windows OS 支持存在:True 硬件容易受到 FBSDP 的攻击:True 对 FBSDP 缓解的 Windows OS 支持已启用:TruePSDP 的推测控制设置 [主要过时数据传播器]
对 PSDP 缓解的 Windows OS 支持存在:True
硬件容易受到 PSDP 的攻击:True 对 PSDP 缓解的 Windows OS 支持已启用:TrueBTIHardwarePresent: True
BTIWindowsSupportPresent: True BTIWindowsSupportEnabled: True BTIDisabledBySystemPolicy: False BTIDisabledByNoHardwareSupport: False BTIKernelRetpolineEnabled: True BTIKernelImportOptimizationEnabled: True RdclHardwareProtectedReported: True RdclHardwareProtected: False KVAShadowRequired: True KVAShadowWindowsSupportPresent: True KVAShadowWindowsSupportEnabled: True KVAShadowPcidEnabled: True SSBDWindowsSupportPresent: True SSBDHardwareVulnerable: True SSBDHardwarePresent: False SSBDWindowsSupportEnabledSystemWide: False L1TFHardwareVulnerable: True L1TFWindowsSupportPresent: True L1TFWindowsSupportEnabled: True L1TFInvalidPteBit: 45 L1DFlushSupported: False HvL1tfStatusAvailable: True HvL1tfProcessorNotAffected: True MDSWindowsSupportPresent: True MDSHardwareVulnerable: True MDSWindowsSupportEnabled: True FBClearWindowsSupportPresent: True SBDRSSDPHardwareVulnerable: True FBSDPHardwareVulnerable: True PSDPHardwareVulnerable: TrueSpeculationControl PowerShell 脚本输出的说明
最终输出网格映射到前面行的输出。 之所以显示此内容,是因为 PowerShell 会打印输出由函数返回的对象。 下表对 PowerShell 脚本输出的每一行进行说明。
输出 |
解释 |
CVE-2017-5715 [分支目标注入] 的推理控制设置 |
本部分提供变体 2 CVE-2017-5715 分支目标注入的系统状态。 |
对分支目标注入缓解的硬件支持存在 |
映射到 BTIHardwarePresent。 该行会表明是否有硬件功能来支持分支目标注入缓解。 设备 OEM 负责提供更新的 BIOS/ 固件,固件中包含 CPU 制造商提供的微码。 如果该行为 True,则所需的硬件功能存在。 如果该行为 False,则所需的硬件功能不存在。 因此无法启用分支目标注入缓解。 备注 如果已将 OEM 更新应用到主机并遵循 指南,则 BTIHardwarePresent 在来宾 VM 中将为 True 。 |
对分支目标注入缓解的 Windows OS 支持存在 |
映射到 BTIWindowsSupportPresent。 该行会表明是否存在用于分支目标注入缓解的 Windows 操作系统支持。 如果为 True,则操作系统支持启用分支目标注入缓解(因此已安装 2018 年 1 月更新)。 如果为 False,则系统中未安装 2018 年 1 月更新,并且无法启用分支目标注入缓解。 备注 如果来宾 VM 无法检测到主机硬件更新,则 BTIWindowsSupportEnabled 将始终为 False。 |
对分支目标注入缓解的 Windows OS 支持已启用 |
映射到 BTIWindowsSupportEnabled。 该行会表明是否启用用于分支目标注入缓解的 Windows 操作系统支持。 如果为 True,则设备分支目标注入缓解的硬件支持和操作系统支持启用,从而防止 CVE-2017-5715。 如果为 False,则表明存在下列情况之一:
|
系统已禁用对分支目标注入缓解的 Windows OS 支持 |
映射到 BTIDisabledBySystemPolicy。 该行会表明系统策略(例如管理员定义的策略)是否已禁用分支目标注入缓解。 系统策略是指 KB4072698中记录的注册表控制。 如果为 True,则系统策略会禁用缓解。 如果为 False,则缓解由于其他原因而被禁用。 |
由于缺少硬件支持,已禁用对分支目标注入缓解的 Windows OS 支持 |
映射到 BTIDisabledByNoHardwareSupport。 该行会表明分支目标注入缓解是否由于缺乏硬件支持而被禁用。 如果为 True,则缺乏硬件支持会禁用缓解。 如果为 False,则缓解由于其他原因而被禁用。 备注 如果来宾 VM 无法检测到主机硬件更新,BTIDisabledByNoHardwareSupport 将始终为 True。 |
CVE-2017-5754 [流氓数据缓存加载] 的推理控制设置 |
本部分提供变体 3 CVE-2017-5754 恶意数据缓存加载的系统状态摘要。 对此的缓解被称为内核虚拟地址 (VA) 影子或流氓数据缓存加载缓解。 |
硬件容易受到流氓数据缓存加载的影响 |
映射到 RdclHardwareProtected。 该行表明硬件是否容易受到 CVE-2017-5754 的影响。 如果为 True,则认为硬件容易受到 CVE-2017-5754 的影响。 如果为 False,则认为硬件不会轻易受到 CVE-2017-5754 的影响。 |
对流氓数据缓存加载缓解的 Windows OS 支持存在 |
映射到 KVAShadowWindowsSupportPresent。 该行会表明对内核 VA 影子功能的 Windows 操作系统支持是否存在。 |
对流氓数据缓存加载缓解的 Windows OS 支持启用 |
映射到 KVAShadowWindowsSupportEnabled。 该行会表明内核 VA 影子功能是否已启用。 如果为 True,则认为硬件容易受到 CVE-2017-5754 的影响,Windows 操作系统支持存在,且该功能已启用。 |
硬件要求内核 VA 影子处理 |
映射到 KVAShadowRequired。 该行表明系统是否需要内核 VA 影子来缓解漏洞。 |
对内核 VA 影子的 Windows OS 支持存在 |
映射到 KVAShadowWindowsSupportPresent。 该行会表明对内核 VA 影子功能的 Windows 操作系统支持是否存在。 如果为 True,则已在设备上安装 2018 年 1 月更新,并支持内核 VA 影子。 如果为 False,则未安装 2018 年 1 月更新,且不支持内核 VA 影子。 |
对内核 VA 影子的 Windows OS 支持已启用 |
映射到 KVAShadowWindowsSupportEnabled。 该行会表明内核 VA 影子功能是否已启用。 如果为 True,则 Windows 操作系统支持存在,且该功能已启用。 内核 VA 影子功能当前在 Windows 的客户端版本上默认为启用,在 Windows Server 版本上默认为禁用。 如果为 False,则 Windows 操作系统支持不存在或该功能尚未启用。 |
对 PCID 性能优化的 Windows OS 支持已启用 备注 PCID 不是安全所必需的。 它仅指示是否启用了性能改进。 Windows Server 2008 R2 不支持 PCID |
映射到 KVAShadowPcidEnabled。 该行会表明内核 VA 影子的附加性能优化是否已启用。 如果为 True,则已启用内核 VA 影子,存在 PCID 的硬件支持,且已启用内核 VA 影子的 PCID 优化。 如果为 False,则硬件或操作系统可能不支持 PCID。 不启用 PCID 优化并不是安全缺陷。 |
对推理存储绕过禁用的 Windows 操作系统支持存在 |
映射到 SSBDWindowsSupportPresent。 该行会表明对推理存储绕过禁用的 Windows 操作系统支持是否存在。 如果为 True,则已在设备上安装 2018 年 1 月更新,并支持内核 VA 影子。 如果为 False,则未安装 2018 年 1 月更新,且不支持内核 VA 影子。 |
硬件需要推理存储绕过禁用 |
映射到 SSBDHardwareVulnerablePresent。 该行表明硬件是否容易受到 CVE-2018-3639 的影响。 如果为 True,则认为硬件容易受到 CVE-2018-3639 的影响。 如果为 False,则认为硬件不会轻易受到 CVE-2018-3639 的影响。 |
对推理存储绕过禁用的硬件支持存在 |
映射到 SSBDHardwarePresent。 该行会表明是否存在硬件功能来支持推理存储绕过禁用。 设备 OEM 负责提供更新的 BIOS/ 固件,固件中包含 Intel 提供的微码。 如果此行为 True,则所需的硬件功能存在。 如果行为 False,则所需的硬件功能不存在。 因此无法启用推理存储绕过禁用。 备注 如果已将 OEM 更新应用到主机,则 SSBDHardwarePresent 在客户 VM 中将为 True。 |
对推理存储绕过禁用的 Windows OS 支持已启用 |
映射到 SSBDWindowsSupportEnabledSystemWide。 该行会表明是否在 Windows 操作系统中启用了推理存储绕过禁用。 如果为True,则会对设备启用推理存储绕过禁用的硬件支持和操作系统支持,以免发生推理存储绕过,从而完全消除安全风险。 如果为 False,则表明存在下列情况之一:
|
CVE-2018-3620 [L1 终端故障] 的推理控制设置 |
本部分提供 CVE-2018-3620 所引用的 L1TF(操作系统)的汇总系统状态。 此缓解措施可确保安全页面帧位用于不存在或无效的页表项。 备注 。本部分并未提供 CVE-2018-3646 所引用的 L1TF (VMM) 的缓解状态汇总。 |
硬件容易受到 L1 终端故障的影响:True |
映射到 L1TFHardwareVulnerable。 该行表明硬件是否容易受到 L1 终端故障(L1TF,CVE-2018-3620)的影响。 如果为 True,则认为硬件容易受到 CVE-2018-3620 的影响。 如果为 False,则认为硬件不会轻易受到 CVE-2018-3620 的影响。 |
对 L1 终端故障缓解的 Windows OS 支持存在:True |
映射到 L1TFWindowsSupportPresent。 该行表明对 L1 终端故障 (L1TF) 操作系统缓解的 Windows 操作系统支持是否存在。 如果为 True,则已在设备上安装 2018 年 8 月更新,并且存在 CVE-2018-3620 的缓解措施。 如果为 False,则未安装 2018 年 8 月更新,且不存在 CVE-2018-3620 的缓解措施。 |
对 L1 终端故障缓解的 Windows OS 支持已启用:True |
映射到 L1TFWindowsSupportEnabled。 该行表明是否已启用 L1 终端故障(L1TF,CVE-2018-3620)的 Windows 操作系统缓解。 如果为 True,则认为硬件容易受到 CVE-2018-3620 的影响,对缓解的 Windows 操作系统支持存在,且缓解已启用。 如果为 False,则硬件不易受影响,Windows 操作系统支持不存在或缓解尚未启用。 |
MDS [微架构数据采样] 的推理控制设置 |
本部分提供 MDS 漏洞集(CVE-2018-11091、CVE-2018-12126、CVE-2018-12127、CVE-2018-12130 和 ADV220002)的系统状态。 |
对 MDS 缓解的 Windows OS 支持存在 |
映射到 MDSWindowsSupportPresent。 该行表明对微架构数据采样 (MDS) 操作系统缓解的 Windows 操作系统支持是否存在。 如果为 True,则表明已在设备上安装 2019 年 5 月更新,并且存在 MDS 的缓解措施。 如果为 False,则表明未安装 2019 年 5 月更新,并且不存在 MDS 的缓解措施。 |
硬件容易受到 MDS 的攻击 |
映射到 MDSHardwareVulnerable。 该行表明硬件是否易受微架构数据采样 (MDS) 漏洞集(CVE-2018-11091、CVE-2018-12126、CVE-2018-12127、CVE-2018-12139)的影响。 如果为 True,则表明硬件容易受到这些漏洞的影响。 如果为 False,则表明硬件不易受到影响。 |
对 MDS 缓解的 Windows OS 支持已启用 |
映射到 MDSWindowsSupportEnabled。 该行表明是否对微架构数据采样 (MDS) 启用了 Windows 操作系统缓解措施。 如果为 True,则认为硬件容易受到 MDS 漏洞的的影响,对缓解的 Windows 操作系统支持存在,且缓解措施已启用。 如果为 False,则硬件不易受影响,Windows 操作系统支持不存在或缓解尚未启用。 |
对 SBDR 缓解的 Windows OS 支持存在 |
映射到 FBClearWindowsSupportPresent。 该行表明对 SBDR 操作系统缓解的 Windows 操作系统支持是否存在。 如果为 True,则表明已在设备上安装 2022 年 6 月更新,并且存在 SBDR 的缓解措施。 如果为 False,则表明未安装 2022年 6 月更新,并且不存在 SBDR 的缓解措施。 |
硬件容易受到 SBDR 影响 |
映射到 SBDRSSDPHardwareVulnerable。 该行表明硬件是否容易受到 SBDR [共享缓冲区数据读取] 漏洞集 (CVE-2022-21123) 的影响。 如果为 True,则表明硬件容易受到这些漏洞的影响。 如果为 False,则表明硬件不易受到影响。 |
对 SBDR 缓解的 Windows OS 支持已启用 |
映射到 FBClearWindowsSupportEnabled。 该行表明是否已启用 SBDR [共享缓冲区数据读取]的 Windows 操作系统缓解。 如果为 True,则认为硬件容易受到 SBDR 漏洞的的影响,对缓解的 Windows 操作系统支持存在,且缓解措施已启用。 如果为 False,则硬件不易受影响,Windows 操作系统支持不存在或缓解尚未启用。 |
对 FBSDP 缓解的 Windows OS 支持存在 |
映射到 FBClearWindowsSupportPresent。 该行表明是否存在对 FBSDP 操作系统缓解的 Windows 操作系统支持。 如果为 True,则表明已在设备上安装 2022 年 6 月更新,并且存在 FBSDP 的缓解措施。 如果为 False,则表明未安装 2022年 6 月更新,并且不存在 FBSDP 的缓解措施。 |
硬件容易受到 FBSDP 影响 |
映射到 FBSDPHardwareVulnerable。 该行表明硬件是否容易受到 FBSDP [填充缓冲区过时数据传播器] 漏洞集(CVE-2022-21125、 CVE-2022-21127和CVE-2022-21166)的影响。 如果为 True,则表明硬件容易受到这些漏洞的影响。 如果为 False,则表明硬件不易受到影响。 |
对 FBSDP 缓解的 Windows OS 支持启用 |
映射到 FBClearWindowsSupportEnabled。 该行表明是否已启用 FBSDP [填充缓冲区过时数据传播器]的 Windows 操作系统缓解。 如果为 True,则认为硬件容易受到 FBSDP 漏洞的的影响,对缓解的 Windows 操作系统支持存在,且缓解措施已启用。 如果为 False,则硬件不易受影响,Windows 操作系统支持不存在或缓解尚未启用。 |
对 PSDP 缓解的 Windows OS 支持存在 |
映射到 FBClearWindowsSupportPresent。 该行表明是否存在对 PSDP 操作系统缓解的 Windows 操作系统支持。 如果为 True,则表明已在设备上安装 2022 年 6 月更新,并且存在 PSDP 的缓解措施。 如果为 False,则表明未安装 2022年 6 月更新,并且不存在 PSDP 的缓解措施。 |
硬件容易受到 PSDP 影响 |
映射到 PSDPHardwareVulnerable。 该行表明硬件是否容易受到 PSDP [主要过时数据传播器] 漏洞集的影响。 如果为 True,则表明硬件容易受到这些漏洞的影响。 如果为 False,则表明硬件不易受到影响。 |
对 PSDP 缓解的 Windows OS 支持已启用 |
映射到 FBClearWindowsSupportEnabled。 该行表明是否已启用 PSDP [主要过时数据传播器]的 Windows 操作系统缓解。 如果为 True,则认为硬件容易受到 PSDP 漏洞的的影响,对缓解的 Windows 操作系统支持存在,且缓解措施已启用。 如果为 False,则硬件不易受影响,Windows 操作系统支持不存在或缓解尚未启用。 |
已启用 所有缓解措施的输出
对于启用了所有缓解措施的设备,应提供以下输出,以及满足每个条件所需的内容。
BTIHardwarePresent:True -> OEM BIOS/固件更新应用指南操作。 BTIDisabledBySystemPolicy: False -> 请确保策略不会禁用。 BTIDisabledByNoHardwareSupport: False -> 确保应用 OEM BIOS/固件更新。 BTIKernelRetpolineEnabled:False BTIKernelImportOptimizationEnabled:True KVAShadowRequired:True 或 False -> 无需执行任何操作,这是计算机使用的 CPU 的一个功能 如果 KVAShadowRequired 为 True KVAShadowWindowsSupportPresent:True -> 安装 2018 年 1 月 更新 KVAShadowWindowsSupportEnabled:True -> 在客户端,无需执行任何操作。 在服务器上,按照 指南操作。 KVAShadowPcidEnabled: True or False -> 无需执行任何操作,这是计算机使用的 CPU 的一个功能
BTIWindowsSupportPresent:True -> 2018 年 1 月 更新已安装 BTIWindowsSupportEnabled:True -> 在客户端,无需执行任何操作。 在服务器上,按照如果 SSBDHardwareVulnerablePresent 为 TrueADV180012 SSBDHardwarePres 中所述的 Windows 更新:True ->安装设备 OEM 提供的支持 SSBD 的 BIOS/固件更新 SSBDWindowsSupportEnabledSystemWide:True ->遵循 建议的操作 启用 SSBD
SSBDWindowsSupportPresent: True ->安装如果 L1TFHardwareVulnerable 为 TrueADV180018 中所述的 Windows 更新 L1TFWindowsSupportEnabled: True ->按照适用于 Windows Server 或客户端的 ADV180018 中所述的操作进行操作,以启用 L1TFInvalidPteBit: 0 L1DFlushSupported: True MDSWindowsSupportPresent: True -> 安装 2022 年 6 月更新 MDSHardwareVulnerable: False -> 已知硬件不存在漏洞 MDSWindowsSupportEnabled:True -> 已启用微架构数据采样 (MDS) 缓解功能 FBClearWindowsSupportPresent:True -> 安装 2022 年 6 月更新 SBDRSSDPHardwareVulnerable:True -> 硬件受到这些漏洞的影响 FBSDPHardwareVulnerable:True -> 硬件受到这些漏洞的影响 PSDPHardwareVulnerable:True -> 硬件受到这些漏洞的影响 FBClearWindowsSupportEnabled:True -> 表示 SBDR/FBSDP/PSDP 的缓解启用。 确保 OEM BIOS/固件已更新,FBClearWindowsSupportPresent 为 True,ADV220002 中已启用缓解措施,KVAShadowWindowsSupportEnabled 为 True。
L1TFWindowsSupportPresent: True ->安装注册表
下表映射输出到 中涵盖的注册表项:防范基于芯片的微架构和推理执行侧信道漏洞的 Windows Server 和 Azure Stack HCI 指南。
注册表项 |
映射 |
FeatureSettingsOverride – 位 0 |
映射到 - 分支目标注入 - BTIWindowsSupportEnabled |
FeatureSettingsOverride – 位 1 |
映射到 - 流氓数据缓存加载 - VAShadowWindowsSupportEnabled |
参考
我们提供了第三方联系信息,以便你寻求技术支持。 该联系信息如有更改,恕不另行通知。 我们不保证此第三方联系信息的准确性。