为 Linux 5.18 提交的英特尔 CET 间接分支跟踪

间接分支跟踪 (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 不兼容,但如上所述,它提供了投机限制。

 

image.php_-95
英特尔一直致力于为 Linux 内核提供影子堆栈和间接分支跟踪支持。

原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun142974.html

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2022年3月27日
下一篇 2022年3月27日

相关推荐