注意
- 原始发布日期: 2024 年 8 月 13 日
- KB ID: 5042562
注意
- 对 Windows 10 的支持已于 2025 年 10 月 14 日结束
- 2025 年 10 月 14 日之后,Microsoft 将不再为 Windows 10 提供来自 Windows 更新的软件更新、技术协助或安全修补程序。 你的电脑仍可正常工作,但我们建议迁移到 Windows 11。
- 了解详细信息
有关 SkuSiPolicy.p7b 策略的重要说明
有关应用更新策略的说明,请参阅 (SkuSiPolicy.p7b) 部署Microsoft签名吊销策略 部分。
本文内容
摘要
Microsoft注意到 Windows 中的一个漏洞,该漏洞允许具有管理员权限的攻击者替换具有较旧版本的更新的 Windows 系统文件,从而为攻击者重新引入基于 虚拟化的安全性 (VBS) 打开了大门。 回滚这些二进制文件可能允许攻击者绕过 VBS 安全功能,并窃取受 VBS 保护的数据。 CVE-2024-21302 |Windows 安全内核模式权限提升漏洞。
为了解决此问题,我们将撤销未更新的易受攻击的 VBS 系统文件。 由于必须阻止大量与 VBS 相关的文件,我们使用另一种方法来阻止不更新的文件版本。
影响范围
所有支持 VBS 的 Windows 设备都会受此问题影响。 这包括本地物理设备和虚拟机 () 的 VM。 Windows 10 及更高版本的 Windows 版本以及 Windows Server 2016 及更高版本的 Windows Server 支持 VBS。
可通过 Microsoft 系统信息工具 检查 VBS 状态 (Msinfo32.exe) 。 此工具会收集有关设备的信息。 启动 Msinfo32.exe 后,向下滚动到 “基于虚拟化 的安全”行。 如果此行的值为 “正在运行”,则 VBS 已启用并正在运行。
也可以使用 Win32_DeviceGuard WMI 类通过 Windows PowerShell 检查 VBS 状态。 若要从 PowerShell 查询 VBS 状态,请打开提升的 Windows PowerShell 会话,然后运行以下命令:
注意
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
运行上述 PowerShell 命令后,VBS 状态应为以下状态之一。
| 字段名称 | 状态 |
|---|---|
| VirtualizationBasedSecurityStatus |
|
可用缓解措施
对于所有受支持的 Windows 10 版本、版本 1507 及更高版本以及 Windows Server 2016 及更高版本的 Windows Server,管理员可以在 SkuSiPolicy.p7b) (部署Microsoft签名吊销策略。 这将阻止操作系统加载未更新的易受攻击版本的 VBS 系统文件。
将 SkuSiPolicy.p7b 应用于 Windows 设备时,也将通过向 UEFI 固件添加变量来将策略锁定到设备。 启动期间,策略将加载,Windows 会阻止加载违反策略的二进制文件。 如果应用了 UEFI 锁定,并且删除了策略或将其替换为较旧的版本,则 Windows 引导管理器将不会启动,并且设备将不会启动。 此启动失败不会显示错误,系统将继续执行下一个可用的启动选项,这可能会导致启动循环。
添加了一个未绑定到 UEFI 的默认启用且不需要其他部署步骤的附加 Microsoft 签名 CI 策略。 此已签名的 CI 策略将在启动期间加载,并且强制实施此策略将阻止在该启动会话期间回滚 VBS 系统文件。 与 SkuSiPolicy.p7b 不同,如果卸载更新,设备可以继续启动。 此策略包含在所有受支持的 Windows 10 版本 1507 及更高版本中。 管理员仍可应用 SkuSkiPolicy.p7b,为跨启动会话的回滚提供额外的保护。
用于证明电脑启动运行状况的 Windows 测量启动日志包括有关启动过程中加载的策略版本的信息。 这些日志在启动期间由 TPM 安全维护,Microsoft 证明服务将分析这些日志,以验证是否加载了正确的策略版本。 证明服务强制执行确保加载特定策略版本或更高版本的规则;否则,系统将无法被证明为正常。
要使策略缓解正常工作,必须使用 Windows 服务更新来更新策略,因为 Windows 的组件和策略必须来自同一版本。 如果将策略缓解复制到设备,则如果应用了错误版本的缓解,设备可能无法启动,或者缓解可能无法按预期工作。 此外, KB5025885 中所述的缓解措施应应用于你的设备。
在 Windows 11 版本 24H2、Windows Server 2022 和 Windows Server 23H2 上,用于测量 (DRTM 的动态信任根) 为回滚漏洞添加了额外的缓解措施。 默认情况下启用此缓解措施。 在这些系统上,受 VBS 保护的加密密钥绑定到默认启用的启动会话 VBS CI 策略,并且仅在强制执行匹配的 CI 策略版本时才会解封。 为了启用用户发起的回退,添加了宽限期,以便在不失去解封 VSM 主密钥的能力的情况下安全回退 1 个版本的 Windows 更新包。 但是,仅当未应用 SkuSiPolicy.p7b 时,才有可能进行用户发起的回滚。 VBS CI 策略强制确保所有启动二进制文件未回滚到已吊销的版本。 这意味着,如果具有管理员权限的攻击者回滚易受攻击的启动二进制文件,则系统将不会启动。 如果 CI 策略和二进制文件都回滚到早期版本,则不会解封受 VSM 保护的数据。
了解缓解风险
在应用 Microsoft 签名的吊销策略之前,需要了解潜在风险。 在应用缓解 措施之前 ,请查看这些风险并对恢复媒体进行任何必要的更新。
备注 这些风险仅适用于 SkuSiPolicy.p7b 策略,不适用于默认启用的保护。
- UEFI 锁定和卸载更新。 在设备上使用 Microsoft 签名吊销策略应用 UEFI 锁定后,无法通过卸载 Windows 更新、使用还原点或其他方式) (继续应用安全启动来还原设备。 即使重新格式化磁盘也不会删除缓解的 UEFI 锁(如果已应用)。 这意味着,如果尝试将 Windows 操作系统还原为未应用缓解措施的早期状态,则设备将不会启动,不会显示错误消息,并且 UEFI 将继续下一个可用的启动选项。 这可能会导致启动循环。 必须禁用安全启动才能删除 UEFI 锁定。 在将本文概述的吊销应用于设备之前,请了解所有可能的影响并进行彻底测试。
- 外部启动介质。 将 UEFI 锁定缓解措施应用于设备后,必须使用设备上安装的最新 Windows 更新更新外部启动介质。 如果外部启动介质未更新为同一 Windows 更新版本,则设备可能无法从该介质启动。 在应用缓解措施之前,请参阅“ 更新外部启动媒体 ”部分中的说明。
- Windows 恢复环境。 在将 SkuSipolicy.p7b 应用到设备之前,必须使用设备上的 2025 年 7 月 8 日发布的最新 Windows 安全操作系统动态更新更新设备上的 Windows 恢复环境 (WinRE) 。 省略此步骤可能会阻止 WinRE 运行 重置电脑功能。 有关详细信息,请参阅将更新包添加到 Windows RE。
- 预启动执行环境 (PXE) 启动。 如果缓解部署到设备,并且你尝试使用 PXE 启动,则设备将不会启动,除非最新的 Windows 更新也应用于 PXE 服务器启动映像。 我们不建议将缓解措施部署到网络启动源,除非 PXE 启动服务器已更新到 2025 年 1 月或之后发布的最新 Windows 更新,包括 PXE 启动管理器。
缓解部署指南
若要解决本文中所述的问题,可以在 SkuSiPolicy.p7b) (部署Microsoft签名吊销策略。 仅 Windows 10 版本 1507 及更高版本的 Windows 版本以及 Windows Server 2016 支持此缓解措施。
备注 如果使用 BitLocker,请确保已备份 BitLocker 恢复密钥。 可以从管理员命令提示符运行以下命令,并记下 48 位数字密码:
注意
manage-bde -protectors -get %systemdrive%
(SkuSiPolicy.p7b 部署Microsoft签名吊销策略)
Microsoft 签名的吊销策略包含在最新 Windows 更新中。 此策略应仅通过安装最新的可用 Windows 更新应用于设备,然后执行以下步骤:
备注 如果缺少更新,设备可能无法在应用缓解措施的情况下启动,或者缓解措施可能无法按预期工作。 在部署策略之前,请确保使用最新的可用 Windows 更新来更新可启动 Windows 媒体。 有关如何更新可启动媒体的详细信息,请参阅更新 外部启动媒体 部分。
确保已安装 2025 年 1 月或之后发布的最新 Windows 更新。
- 对于 Windows 11 版本 22H2 和 23H2,请先安装 2025 年 7 月 22 日 (KB5062663) 或更高版本的更新,然后再执行这些步骤。
- 对于 Windows 10 版本 21H2,请先安装 2025 年 8 月发布的 Windows 更新或更高版本的更新,然后再执行这些步骤。
在提升的 Windows PowerShell 提示中运行以下命令:
注意
$PolicyBinary = $env:windir+"\System32\SecureBootUpdates\SkuSiPolicy.p7b"
$MountPoint = 's:'
$EFIDestinationFolder = “$MountPoint\EFI\Microsoft\Boot”
mountvol $MountPoint /S
if (-Not (test-path $EFIDestinationFolder) ) { New-Item -path $EFIDestinationFolder -type directory -force }
Copy-Item -path $PolicyBinary -destination $EFIDestinationFolder -force
mountvol $MountPoint /D重新启动设备。
使用 Windows 事件日志部分中的信息确认策略已加载到事件查看器中。
注意
- 部署 SkuSiPolicy.p7b 吊销 (策略) 文件后,不应将其删除。 如果文件已删除,则设备可能无法再启动。
- 如果设备未启动,请参阅 “恢复过程 ”部分。
正在更新外部启动媒体
若要在应用了 Microsoft 签名吊销策略的设备上使用外部启动媒体,必须使用包括启动管理器在内的最新 Windows 更新来更新外部启动媒体。 如果媒体不包含最新的 Windows 更新,媒体将不会启动。
重要 建议在继续操作之前 先创建一个恢复驱动器 。 此媒体可用于在出现重大问题时重新安装设备。
使用以下步骤更新外部启动介质:
- 转到安装了最新 Windows 更新的设备。
- 将外部启动媒体装载为驱动器号。 例如,将拇指驱动器装载为 D:。
- 单击“开始”,在搜索框中键入“创建恢复驱动器”,然后单击“创建恢复驱动器控制面板”。 按照说明使用装载的闪存驱动器创建恢复驱动器。
- 安全移除已装载的闪存驱动器。
如果使用“ 通过动态更新更新 Windows 安装媒体 ”指南管理环境中的可安装媒体,请按照以下步骤操作:
- 转到安装了最新 Windows 更新的设备。
- 按照 使用动态更新更新 Windows 安装媒体 中的步骤创建安装了最新 Windows 更新的媒体。
Windows 事件日志
当加载代码完整性策略(包括 SkuSiPolicy.p7b)以及由于策略强制执行而阻止加载文件时,Windows 会记录事件。 可以使用这些事件来验证是否已应用缓解措施。
代码完整性日志可在应用程序和服务日志、>Microsoft>Windows>CodeIntegrity>操作>应用程序和服务日志、服务日志>、>Microsoft>Windows>AppLocker>MSI 和脚本下的 Windows 事件查看器中找到。
有关代码完整性事件的详细信息,请参阅 Windows Defender 应用程序控制操作指南。
策略激活事件
策略激活事件可在应用程序和服务日志>下的 Windows 事件查看器中使用Microsoft>Windows>CodeIntegrity>操作。
- PolicyNameBuffer – Microsoft Windows SKU SI 策略
- PolicyGUID – {976d12c8-cb9f-4730-be52-54600843238e}
- 策略哈希 – 107E8FDD187C34CF8B8EA46A4EE99F0DB60F491650DC989DB71B4825DC73169D
如果已将审核策略或缓解措施应用到设备,并且所应用策略的 CodeIntegrity 事件 3099 不存在,则未强制执行该策略。 请参阅 部署说明 以验证策略是否已正确安装。
注意
- 备注Windows 10 企业版 2016、Windows Server 2016 和 Windows 10 企业版 2015 长期服务版本不支持代码完整性事件 3099。 若要验证该策略是否已应用 (审核或吊销策略) ,必须使用 mountvol.exe 命令装载 EFI 系统分区,并查看策略是否已应用于 EFI 分区。 验证后,请务必卸载 EFI 系统分区。
- SkuSiPolicy.p7b - 吊销策略
-
审核和阻止事件
代码完整性、审核和阻止事件可在应用程序和服务日志、>MicrosoftWindows>CodeIntegrity>、操作>应用程序和服务日志、>Microsoft>>Windows>AppLocker>MSI 和脚本下的 Windows 事件查看器中找到。
前一个日志记录位置包括有关可执行文件、dll 和驱动程序的控件的事件。 后者的日志记录位置包括有关控制的 MSI 安装程序、脚本和 COM 对象的事件。
“CodeIntegrity – 操作”日志中的 CodeIntegrity 事件 3077 指示已阻止加载可执行文件、.dll 或驱动程序。 此事件包含被阻止的文件和强制执行的策略相关的信息。 对于缓解阻止的文件,CodeIntegrity 事件 3077 中的策略信息将与 CodeIntegrity 事件 3099 中 SkuSiPolicy.p7b 的策略信息匹配。 如果设备上没有任何违反代码完整性策略的可执行文件、.dll 或驱动程序,则不会出现 CodeIntegrity 事件 3077。
有关其他代码完整性审核和阻止事件,请参阅 了解应用程序控制事件。
策略删除和恢复过程
如果在应用缓解措施后出现问题,可以使用以下步骤移除缓解措施:
如果已启用 BitLocker,请暂停它。 从提升的命令提示符窗口中运行以下命令:
注意
Manager-bde -protectors -disable c: -rebootcount 3
从 UEFI BIOS 菜单关闭 安全启动 。
关闭安全启动的过程因设备制造商和型号而异。 有关查找关闭安全启动的位置的帮助,请参阅设备制造商提供的文档。 有关详细信息,请参阅 禁用安全启动。
删除 SkuSiPolicy.p7b 策略。
正常启动 Windows,然后登录。
必须从以下位置删除 SkuSiPolicy.p7b 策略:
- <EFI 系统分区>\Microsoft\Boot\SkuSiPolicy.p7b
从提升的 Windows PowerShell 会话运行以下命令,以清除来自这些位置的策略:
注意
$PolicyBinary = $env:windir+"\System32\SecureBootUpdates\SkuSiPolicy.p7b" $MountPoint = 's:' $EFIPolicyPath = "$MountPoint\EFI\Microsoft\Boot\SkuSiPolicy.p7b" $EFIDestinationFolder="$MountPoint\EFI\Microsoft\Boot" mountvol $MountPoint /S if (-Not (Test-Path $EFIDestinationFolder)) { New-Item -Path $EFIDestinationFolder -Type Directory -Force } if (Test-Path $EFIPolicyPath ) {Remove-Item -Path $EFIPolicyPath -Force } mountvol $MountPoint /D
启用 BIOS 中的安全启动 。
请参阅设备制造商提供的文档,以查找打开安全启动的位置。
如果在步骤 1 中关闭了安全启动,并且驱动器受 BitLocker 保护,请 暂停 BitLocker 保护 ,然后从 UEFI BIOS 菜单启用安全启动。
打开 BitLocker。 从提升的命令提示符窗口中运行以下命令:
注意
Manager-bde -protectors -enable c:
重新启动设备。
对本文所做的更改
| 更改日期 | 说明 |
|---|---|
| 2025 年 12 月 17 日 |
|
| 2025 年 7 月 22 日 |
|
| 2025 年 7 月 10 日 |
|
| 2025 年 4 月 8 日 |
|
| 2025 年 2 月 24 日 |
|
| 2025 年 2 月 11 日 |
|
| 2025 年 1 月 14 日 |
|
| 2024 年 11 月 12 日 |
|