内容:
近日,科技媒体 NeoWin 报道了 Linux 内核版本 6.13 在发布后遇到的一场潜在危机,令人瞩目的是,问题的起因居然源于微软所提供的代码。这一变故引发了英特尔和 AMD 的紧急响应,他们迅速采取措施来修复相关漏洞,从而避免了可能出现的更大规模的系统故障。
根据 IT 之家对该报道的跟进,问题的核心在于与 ARCH_HAS_EXECMEM_ROX 内核配置相关的代码。此配置的功能是允许缓存可执行内存(EXECMEM),并提升只读执行(ROX)权限。这一功能在理论上使得 x86_64 和 AMD64 架构的性能得以改善,但实际应用时却因技术缺陷而危险重重。
微软在 6.13 内核引入的代码本意是为了增强在特定硬件架构(如 64 位的 Intel 和 AMD 处理器)上的性能表现,这种改动却意外破坏了这些 CPU 的控制流完整性(CFI)机制。控制流执行技术(CET)是一项在 CPU 上实现的安全特性,目的是通过引入影子堆栈和间接分支目标(IBT)来提高软件的安全性。影子堆栈用于防止返回导向编程(ROP)攻击,而 IBT 则能有效抵御调用 / 跳转导向编程(COP / JOP)攻击,构建了一道有效的安全防线。
微软所贡献的代码却在不知不觉中削弱了这一防护措施,导致原有的安全机制受到威胁。控制流完整性,必然成为黑客攻击的新目标,确保程序调用逻辑的安全成为当务之急。英特尔的开发者 Peter Zijlstra 迅速提交了新增的紧急补丁,目的是将与 EXECMEM_ROX 支持相关的变更恢复到安全状态。他在提交信息中明确表示,微软提出的修改导致了 alternative.c 文件的严重混乱,且代码中仍然潜藏着大量的错误,其中某些 CFI 变体甚至有可能导致系统崩溃。
AMD 的开发者 Borislav Petkov 对微软提交的代码表示强烈不满,指出这一变更在没有得到适当的 x86 维护者审查的情况下被直接合并,造成了一系列的安全隐患和性能问题。这种情况让整个社区意识到,在快速发展的技术环境中,代码的审查和验证的重要性再次被凸显。
尽管英特尔和 AMD 均已采取了相应的修复措施,但这次事件揭示了开源软件开发过程中的一项核心原则:即使是像微软这样的行业巨头,在与开源社区合作时,也需要遵循严格的审查流程。否则,盲目的改动可能会导致无法预料的后果。
该事件也将引发对整个开源生态系统中代码贡献和管理机制的反思。越来越多的大型公司参与到开源项目的开发中,它们的代码质量和安全性将直接影响到众多依赖这些项目的开发者和企业。因此,建立起有效的管理和评估体系,为代码贡献者提供必要的审核和反馈,显得尤为重要。
Linux 内核 6.13 的代码改动引发的风波不仅是一次技术上的短暂危机,还是对整个开源社区在贡献与合作中的一种警示。未来,无论是大型企业还是个人开发者,在参与到开源项目中时,都必须更加注重代码的质量与安全性,共同维护这个庞大生态系统的健康发展。希望借此事件,能促使各方在审查、沟通与协作上更为谨慎,避免重蹈覆辙。