1 月 14 日消息,科技媒体 NeoWin 昨日(1 月 13 日)发布博文,报道称 Linux 内核 6.13 差点翻车,微软贡献的代码存在问题,不过在英特尔和 AMD 及时介入下,挽救了局面。
援引该媒体报道,微软贡献的代码与 ARCH_HAS_EXECMEM_ROX 内核配置相关,该配置允许使用只读执行(ROX)权限缓存可执行内存(EXECMEM)。
微软贡献的代码主要在 Linux 6.13 内核中,用于改善 x86_64 / AMD64(即 64 位 AMD 和英特尔 CPU)架构的性能。
不过问题是该代码未经 x86 内核维护者确认(Ack)就被推送,破坏了这些 CPU 上的控制流完整性(CFI)。
控制流执行技术(CET)是一项重要的安全功能,它引入了影子堆栈和间接分支目标(IBT)。影子堆栈用于抵御返回导向编程(ROP)攻击,而 IBT 则用于防护调用 / 跳转导向编程(COP / JOP)攻击。
CET 通过将普通程序堆栈与硬件存储的副本(影子堆栈)进行比较,确保返回地址的完整性,从而防止恶意软件劫持合法软件的进程步骤。
英特尔的 Peter Zijlstra 提交了紧急修复,以恢复与 EXECMEM_ROX 支持相关的更改。他指出,微软贡献的代码导致 alternative.c 文件出现巨大混乱,并且仍然存在错误,部分 CFI 变体甚至会导致崩溃。
AMD 的 Borislav Petkov 也对此表示不满,他批评该代码未经任何 x86 维护者确认就被合并,导致一系列问题。