Linux 6.13惊险一幕:微软代码改动引发混乱,英特尔和AMD紧急修复

Linux 6.13惊险一幕:微软代码改动引发混乱,英特尔和AMD紧急修复
2025年01月15日 17:20 CSDN

整理 | 苏宓

出品 | CSDN(ID:CSDNnews)

最近这两天,Linux 开发团队透露已经成功完成了 Linux 内核 6.13 rc7 版本的开发工作,因此最终的稳定版本在不出意外的情况下,将于下周正式对外发布。

作为 Linux 的核心人物,Linus Torvalds 也在每周发布的 Linux 内核开发状态公告中写道:

本周开始时看起来有些平静,但随后进展加快,经过两个安静的假期周后,我们的节奏已经完全恢复了。

这个 rc7 比平常略大一些,但考虑到时间点,这基本符合我的预期,并没有什么特别突出的地方。从修改统计来看一切正常,附加的简短日志内容也没有异常。

因此,除非下周出现什么意外,我预计会按照正常的计划在下周发布最终的 6.13 版本。

同时,心情愉快的 Linus 还透露,闲暇时他喜欢动手搭建乐高积木,并组装吉他效果器套件。他打趣道,自己正好想找个借口继续动手制作,所以想看看有没有“倒霉”的内核开发者愿意要一个,他会亲手制作并送给这位幸运儿。

所谓「不能半场开香槟」,殊不知这边在 Linus 庆祝工作告一段落之际,另一边的微软开发者在做代码贡献时捅了娄子,如果不是英特尔和 AMD 工程师在最后一刻发现并制止,那么这些代码极有可能会破坏某些系统上的 Linux 6.13。

代码修改不当险酿大祸

此次微软工程师对代码的改动主要涉及一个名为 ARCH_HAS_EXECMEM_ROX 的内核配置,该配置允许以只读执行(ROX)权限缓存可执行内存(EXECMEM)。

这一功能作为性能提升的改进,计划在 Linux 6.13 的 x86_64/AMD64 架构上引入,即针对 64 位 AMD 和 Intel 处理器。

然而,这项改动在未获得 x86 内核维护者的正式确认(Ack)情况下被推送上线,结果导致这些 CPU 上的控制流完整性(CFI, Control Flow Integrity)功能被破坏。

好在英特尔、AMD 工程师及时发现

对此,英特尔工程师 Peter Zijlstra 在发现之后,紧急提交了一项请求,要求撤回与 EXECMEM_ROX 支持相关的改动,因为该功能尚未准备好被推送上线。他在提交中写道:

“x86: 禁用 EXECMEM_ROX 支持

整个 module_writable_address() 的实现完全搞砸了 alternative.c 文件,而且还带来了不少问题——尤其是某些控制流完整性(CFI)功能直接崩溃报错。

虽然 Mike 一直在努力修补这些问题,但就目前的情况来看,这部分功能显然还没准备好上线。

先暂时禁用,我们下一周期再重新尝试。”

对于不熟悉的读者来说,控制流增强技术(CET, Control-flow Enforcement Technology) 是一项重要的安全特性,它引入了影子堆栈(Shadow Stack)和间接分支目标(IBT, Indirect Branch Targeting)。

  • 影子堆栈(Shadow Stack) 通过将正常程序堆栈与硬件存储的副本进行对比,确保返回地址的完整性,从而防御返回导向编程(ROP, Return Oriented Programming)攻击。

  • 间接分支目标(IBT) 则用于防护调用导向编程(COP, Call Oriented Programming)或跳转导向编程(JOP, Jump Oriented Programming)攻击。

简单来说,影子堆栈可以阻止恶意软件劫持合法软件的执行流程,并通过标记可能被破坏的软件,防止其运行。

微软工程师的这次更改可能会导致某些启用 CFI 的设置出现问题。有报告显示,搭载英特尔 Alder Lake 处理器的设备在从休眠中恢复时出现故障。

当前,有问题的代码仍然存在,但不会包含在即将推出的稳定内核版本中。

来自 AMD 工程师 Borislav Petkov 也对此表示了不满,他讽刺道:“我真是太喜欢这样的操作了,未经任何 x86 维护者的确认(Ack),这项改动就被提交,结果弄坏了一堆东西,但却没有被撤回。希望以后不要再这样了。”

这也让很多人好奇,为什么修改后的代码能在维护者未审核的状态下上线的?对此,有网友认为,「Linux 在应对复杂的 x86_64 硬件生态系统时面临挑战。熟悉早期英特尔 CPU 的开发者正在逐渐退休,而 Linux 开发者通常使用的是最新的硬件,因此他们可能不会将研究旧款英特尔 CPU 作为优先事项。所以,当某人添加了一些改动导致 Linux 在旧系统上出现问题时,这并不令人意外。这种情况也加重了 Linux 开发者和发行版维护团队的工作负担。」

来源:

https://www.theregister.com/2025/01/14/microsoft_linux_change_pulled/

https://lore.kernel.org/lkml/20250113115151.GDZ4T-VwIq_6ZafRE4@fat_crate.local/

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部