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