Intel 的 Control-flow Enforcement Technology (CET) 是一项硬件级的安全技术,旨在增强程序控制流的保护,防止攻击者利用控制流劫持(如 ROP(Return-Oriented Programming) 和 JOP(Jump-Oriented Programming) 等技术)来绕过传统的防护机制(如 DEP 和 ASLR)。CET 通过对程序的控制流进行严格的保护,限制恶意代码对程序执行路径的操控,从而增加了攻击者成功实施攻击的难度。
CET 的主要功能和工作原理
CET 主要由两部分组成:
-
Indirect Branch Tracking (IBT):
该功能防止了攻击者通过修改程序中的间接分支(如函数指针、虚函数表指针等)来控制程序的执行路径。间接分支是指那些不是固定目标的跳转指令(如jmp
,call
等),攻击者通常通过操控这些分支的目标地址来跳转到恶意代码。通过 IBT,Intel CET 通过在硬件层面上对每个间接分支进行检查,确保跳转目标是合法的,从而防止恶意的控制流劫持。- 工作原理:IBT 强制要求所有间接跳转必须跳转到合法的目标地址,这些目标地址必须位于特定的、经过验证的区域内。这样一来,恶意代码无法通过修改跳转目标地址来实现攻击。
-
Shadow Stack:
Shadow Stack 是一个硬件保护机制,用于防止 栈溢出 攻击。它通过维护一个与程序栈独立的、专门用于保存返回地址的“影子栈”来工作。正常情况下,程序在栈上执行函数调用时,会将返回地址推入栈中。当函数返回时,程序会从栈中弹出返回地址并跳转到该地址。攻击者可能会通过栈溢出等方式修改返回地址,从而劫持程序控制流。Shadow Stack 通过在硬件上独立保存返回地址,确保即使栈被篡改,程序仍然能从正确的返回地址处返回。- 工作原理:Shadow Stack 会对比栈上的返回地址与影子栈中的返回地址,如果两者不匹配,程序会触发异常,防止攻击者利用篡改的返回地址进行控制流劫持。
CET 的安全增强
-
防止 ROP 和 JOP 攻击:
ROP 和 JOP 攻击是通过组合程序中现有的代码片段(gadget)来执行恶意代码,避免了直接执行自注入的代码。CET 通过加强对间接分支和栈操作的保护,限制了这些攻击方式的有效性。 -
增强的控制流保护:
CET 提供的间接分支追踪和影子栈机制,使得控制流的任何异常变更都能被及时发现,从而增强了程序的完整性保护。这比传统的 DEP(数据执行保护)和 ASLR(地址空间布局随机化)更加细粒度和强大。 -
与其他安全技术协同工作:
CET 与现有的防护技术(如 ASLR、DEP、控制流完整性(CFI)等)协同工作,提供了更加全面的安全防护。比如,ASLR 随机化了程序的内存布局,增加了攻击者推测地址的难度,而 CET 在硬件层面上限制了恶意代码对程序控制流的篡改,进一步提高了防护效果。
CET 的工作流程
-
间接分支检查:
- 当程序执行到一个间接跳转指令时,CET 会检查该指令的目标地址是否符合预设的合法目标。如果目标地址不合法,程序会触发异常,防止攻击者跳转到恶意代码。
-
返回地址保护:
- 当程序进入函数调用时,CET 会将返回地址保存在影子栈中。如果栈上的返回地址被恶意篡改(例如,栈溢出攻击),CET 会通过对比栈上和影子栈中的地址,发现不一致并触发异常,防止跳转到不安全的位置。
硬件要求与支持
CET 是一种硬件功能,要求处理器支持并启用该技术。Intel 的 11代酷睿处理器(Rocket Lake) 及以后的处理器开始支持 CET。在操作系统和软件方面,支持 CET 需要操作系统、编译器和应用程序的配合。例如,Windows 10 和 Windows 11 都支持 CET,且开发者可以在编译时启用相关的控制流保护选项。
CET 的优点和局限性
优点:
- 增强的控制流保护:CET 提供了比传统安全技术更强的控制流完整性保护,特别是在防范 ROP 和 JOP 等攻击方面。
- 硬件层面的防护:通过硬件实现保护,相比软件防护(如 DEP、ASLR)更难被绕过。
- 与其他安全技术兼容:CET 可以与其他现有的安全技术协同工作,如 ASLR 和 DEP,增强整体防护效果。
局限性:
- 需要支持的硬件:CET 需要处理器本身支持,且在不支持的硬件上无法启用。
- 兼容性问题:启用 CET 后,可能需要修改现有软件或编译选项,以确保与 CET 的兼容性。
- 性能开销:尽管 CET 主要在硬件上执行,但仍然可能带来一定的性能开销,尤其是在高度依赖间接分支的程序中。
总结
Intel 的 Control-flow Enforcement Technology (CET) 是一项针对控制流劫持攻击的硬件级安全技术,通过引入 间接分支追踪(IBT) 和 影子栈,加强了对恶意代码控制流篡改的防护。CET 与传统的防护机制如 DEP 和 ASLR 协同工作,提供了更为全面和强大的安全防护,尤其是针对 ROP 和 JOP 等高级攻击手段。随着越来越多的处理器和操作系统支持 CET,这项技术有望成为提升系统安全性的关键工具。
标签:硬件,控制流,Programming,Oriented,地址,CET,跳转,攻击者 From: https://www.cnblogs.com/suv789/p/18589249