适用于:Windows Server 2025
Windows 10 中引入了硬件强制堆栈保护这一安全功能,用于保护用户模式进程并帮助防止堆栈被劫持。 硬件强制的堆栈保护现在扩展到 内核模式,该模式可保护内核中的堆栈免受基于返回的基于编程的攻击(ROP)。 ROP 是攻击者劫持程序执行流程并继续其攻击链以执行攻击者所需代码的常用方式。
由于用户模式堆栈现已受到保护,并能防止内核模式代码修改返回地址,攻击者无法利用内存安全漏洞。 客户已经看到内核模式硬件强制堆栈保护如何阻止与病毒和恶意软件相关的驱动程序执行其恶意有效负载。
内核模式硬件强制堆栈保护默认处于关闭状态,但如果满足先决条件,客户可以将其打开。 本文提供有关内核模式硬件强制堆栈保护的更多信息,并说明如何在 Windows 安全应用和通过组策略启用该功能。
Prerequisites
- Windows 11 2022 更新或更高版本
- Windows 安全应用版本 1000.25330.0.9000 或更高版本
- 支持英特尔控制流强制技术 (CET) 或 AMD 影子堆栈的硬件。
- 对于英特尔,为第 11 代英特尔酷睿移动处理器;对于 AMD,为 AMD Zen 3 核心(及更新版本)。
- 已启用基于虚拟化的安全 (VBS) 和虚拟机监控程序强制代码完整性 (HVCI)。
使用影子堆栈强制控制流完整性
借助内核模式硬件强制堆栈保护,所有内核堆栈都有相应的影子堆栈来强制其控制流的完整性。 如果攻击者利用内存安全漏洞,他们的下一步是将程序的控制流重定向到攻击者期望的位置。
影子堆栈可防止控制流劫持。 Windows 使用控制流保护来强制间接调用的完整性,并使用硬件强制堆栈保护来强制返回的完整性,以防范旨在重定向程序执行流的漏洞利用。 控制流保护利用位图标注有效的跳转目标,以防止被攻陷的间接调用将控制流重定向到任意位置。
影子堆栈为所有调用堆栈维护一个(硬件保护的)辅助堆栈,每当 CALL 或 RET 指令将值压入或弹出堆栈时,影子堆栈中都会有相应的条目。 当出现返回地址不匹配时,系统会触发蓝屏以防止意外的程序控制行为。
有关更多信息,请参阅关于了解硬件强制堆栈保护的博客文章。
在 Windows 安全中心启用内核模式硬件强制堆栈保护
基于虚拟化的安全 (VBS) 和虚拟机监控程序强制代码完整性 (HVCI) 是内核模式硬件强制堆栈保护的先决条件,在继续操作之前,必须首先确保已启用这些功能。 在满足最低硬件要求的 Windows 系统上,它们会自动启用。
通过以下步骤启用 VBS 和 HVCI:
打开 Windows 安全 应用。
导航到设备安全 > 核心隔离详细信息 > 内存完整性。
切换功能 启用。
做出此更改后,需要重启设备。
打开内核模式硬件强制堆栈保护
打开 Windows 安全 应用。
导航到设备安全 > 核心隔离详细信息 > 内核模式硬件强制堆栈保护。
将功能设置为 打开。
在本地组策略编辑器中启用内核模式硬件强制堆栈保护
对于企业客户,可以使用组策略启用内核模式硬件强制堆栈保护。
打开“本地组策略编辑器”。
导航到计算机配置 > 管理模板 > 系统 > 设备防护 > 打开基于虚拟化的安全。
确认 已启用基于虚拟化的安全性。
在 “选项” 下,找到 内核模式硬件强制堆栈保护。 选择“在强制模式中启用”。
选择应用。 然后 确定。
不兼容的驱动程序
有一小部分驱动程序尚未兼容。 表现出潜在恶意行为(如劫持返回地址以规避控制流策略)的驱动程序不兼容,并会被添加到内核模式硬件强制堆栈保护的易受攻击驱动程序阻止名单中。 在与驱动程序供应商合作以符合影子堆栈的方式执行代码混淆后,这些驱动程序将被允许。
为了提供良好的用户体验并避免计算机蓝屏,Windows 维护了内核模式硬件强制堆栈保护的已知不兼容驱动程序阻止名单。 这些是已知会在内核中劫持返回地址的驱动程序。 启用此功能后,不允许该驱动程序加载(而不是在尝试劫持返回地址时出现蓝屏)。 此外,如果系统上已安装阻止名单中的驱动程序,则此功能无法启用。 可以通过卸载相关驱动程序来启用此功能。
查看不兼容的驱动程序
在解决不兼容问题之前(无论是通过驱动程序供应商提供的更新版本,还是通过删除安装该驱动程序的应用程序),无法启用此功能。 要查看不兼容驱动程序的列表,请选择“查看不兼容的驱动程序”。
某些应用使用的驱动程序与内核模式硬件强制堆栈保护不兼容。 例如,使用混淆引擎保护知识产权并混淆控制流的应用,这些应用与影子堆栈不兼容。 当不安全的驱动程序尝试在启用此安全功能的情况下加载时,你会看到提示“驱动程序无法在此设备上加载”。
可以选择禁用安全功能,但这样做会降低设备的安全性。 始终可以在 Windows 安全应用中重新启用此功能。