间接分支跟踪 (IBT) 是英特尔控制流强制技术 (CET) 的一部分,它在 Tiger Lake CPU 和更新的 CPU 中使用,正在登陆 Linux 5.18 内核。
英特尔的 Peter Zijlstra 最近完成了针对 Linux 内核的最新 IBT 补丁的工作,将其作为最新的 CPU 安全功能。IBT 有助于防止针对 JUMP/CALL 的攻击。IBT 是基于硬件的粗粒度前沿控制流完整性 (CFI) 保护。当为内核构建启用时,它确保间接调用落在 ENDBR 指令上。除了使 IBT 成为现实的所有 Linux 内核补丁之外,还需要编译器端支持,这意味着 GCC 9 和更新版本或 LLVM Clang 14 和更新版本。
Zijlstra 将 Linux 内核的 CET-IBT 功能总结为:
添加对英特尔 CET-IBT 的支持,从 Tigerlake(第 11 代)开始提供,这是一种粗粒度、基于硬件的前向 Edge控制流完整性机制,其中任何间接 CALL/JMP 都必须针对 ENDBR 指令或遭受#CP。
此外,由于 Alderlake(第 12 代)/Sapphire-Rapids,对于不以 ENDBR 开头的分支目标,推测仅限于 2 条指令(通常更少)。CET-IBT 还限制了间接 CALL/JMP 之后对下一个顺序指令的推测。
CET-IBT 从根本上与 retpolines 不兼容,但如上所述,它提供了投机限制。
英特尔一直致力于为 Linux 内核提供影子堆栈和间接分支跟踪支持。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun142974.html