如何在Windows 11中启用内核模式硬件强制堆栈保护
内核模式硬件强制堆栈保护是Windows 11 22H2中引入的一项安全功能,可保护系统免受各种内存攻击,例如堆栈缓冲区溢出。
微软在2023年4月通过Microsoft Defender更新将此功能添加到Windows 11 22H2中。
启用后,内核模式硬件强制堆栈保护将通过使用硬件来强制执行堆栈保护,从而增强Windows的安全性,使攻击者更难利用漏洞。
什么是内核模式硬件强制堆栈保护?
Windows内核模式硬件强制堆栈保护是一项安全功能,主要防御堆栈缓冲区溢出攻击。在这种攻击中,攻击者试图通过溢出堆栈(用于存储程序函数调用和局部变量的数据结构)上的缓冲区(临时内存存储)来触发任意代码执行。
在这些攻击期间,攻击者试图覆盖返回地址或控制数据,以将程序的执行重定向到运行攻击者选择的恶意代码。
覆盖返回地址或控制数据以重定向程序执行流的技术称为面向返回编程(ROP)攻击。
Windows内核模式硬件强制堆栈保护功能需要一种特殊的基于硬件的临时堆栈,称为影子堆栈,才能工作。
影子堆栈是一个临时内存堆栈,它镜像操作系统使用的标准堆栈,并且该堆栈不能被Windows中运行的应用程序修改。
这些影子堆栈的使用方式如下:
- 当调用程序的函数时,返回地址同时存储在正常堆栈和影子堆栈中。
- 当函数返回时,硬件强制堆栈保护功能会检查主堆栈中的返回地址是否与影子堆栈中存储的地址匹配。
- 如果返回地址匹配,则函数按预期返回,程序正常继续执行。
- 但是,如果返回地址不匹配,则可能表明存在攻击,例如堆栈缓冲区溢出或ROP攻击。发生这种情况时,Windows将终止进程以防止恶意代码执行。
使用影子堆栈,硬件强制堆栈保护功能可以缓解攻击,从而保护系统免受漏洞(包括零日漏洞)的影响。
然而,由于影子堆栈需要英特尔的控制流强制技术(CET)技术,因此该功能仅适用于较新的CPU。
因此,要使用Windows内核模式硬件强制堆栈保护,设备必须具有英特尔Tiger Lake CPU或AMD Zen3 CPU及更高版本,并且在BIOS中启用了CPU虚拟化。
如何启用内核模式硬件强制堆栈保护
虽然Windows内核模式硬件强制堆栈保护功能可能难以理解,但启用该功能却相当容易。
如果您运行的是具有最新更新的Windows 11 22H2,请打开Windows安全中心并进入“设备安全”>“核心隔离”。
如果您拥有所需的硬件并且启用了CPU虚拟化,您将看到一个名为“内核模式硬件强制堆栈保护”的设置,如下所示。
要启用该功能,只需将其切换为“开”,Windows将检查已加载的设备驱动程序,查看是否有任何可能与该安全功能冲突的驱动程序。
如果检测到任何冲突的驱动程序,它将提示您查看驱动程序列表以更新到较新版本,然后才能启用该功能。
将驱动程序更新到最新版本后,您可以尝试再次启用该功能,并查看是否存在进一步冲突。
如果未找到冲突的驱动程序,Windows可能会提示您重新启动计算机以启用该功能。
可能导致意外行为
不幸的是,启用此功能后,您可能会发现特定程序不再工作,因为它们的驱动程序与内核模式硬件强制堆栈保护功能冲突。
当Windows不知道某个驱动程序与该功能冲突并仍然允许启用该功能时,通常会发生这种情况。
虽然这些冲突可能导致Windows崩溃,但更常见的是程序不再启动,Windows会声明驱动程序不兼容,并提示您禁用该安全功能。
启用此功能的用户报告称,许多冲突发生在游戏使用的版权保护和反作弊驱动程序上,包括《PUBG》、《Valorant》(Riot Vanguard)、《Bloodhunt》、《Destiny 2》、《原神》、《梦幻之星在线2》(Game Guard)和《Dayz》。
然而,随着更多用户开始使用此Windows安全功能,我们可能会看到这些反作弊和版权保护程序的升级版本以支持堆栈保护。