早在 Linux 6.6 中,影子堆栈(Shadow Stack)支持最终被合并为英特尔控制流执行技术(CET)的一部分。这项历时多年的努力使新一代英特尔处理器能更好地抵御 ROP 攻击。在 Linux 6.10 中,Shadow Stack 支持将扩展到 x32。
x32 ABI 虽然并不常见,但仍然存在。需要提醒的是,这种 Linux ABI 在提供 x86_64 的优势的同时,仍然依赖于 32 位指针。与 x86 32 位相比,它的优势在于可以利用 x86_64 增加的寄存器集、浮点改进等,但仍依赖于 32 位指针,每个进程的内存限制为 4GB。
x32 ABI 在十年前听起来很不错,但如今已很少听到有关 x32 的消息,大多数用户都对 x86_64 感到满意。甚至偶尔还有人呼吁是否应该淘汰 x32。无论如何,令人惊喜的是,我们现在看到了对 x32 的 Shadow Stack 支持。
通过 “x86/shstk “分支在 TIP.git 中添加了对 x32 的影子堆栈支持。英特尔工程师 H.J. Lu 已使用英特尔虎湖系统在 x32 上成功测试了这一功能。现在,它已经进入了 TIP 分支,很可能会在今年夏天的 Linux 6.10 内核周期中提交。无论如何,看到英特尔在 2024 年对 Linux x32 支持进行改进还是有点令人惊讶的。