俗话说:“铁打的营盘,流水的兵”。流走的是岁月,留下的是人生。
您可倒好:“流水的翻车,铁打的微软”。流走的是事故,留下的是教训。
为什么这么说呢?因为,微软又双叒叕差点翻车。
今天,一则关于微软代码引发的技术事故在开源社区引起轩然大波。
微软为改善x86_64/AMD64(即64位AMD和英特尔CPU)架构性能所贡献的代码,在未经x86内核维护者确认(Ack)的情况下就被推送,这一失误险些导致Linux内核6.13版本“翻车”。
据悉,微软此次贡献代码的初衷是积极的,旨在提升相关架构的性能,为广大用户带来更流畅的使用体验。然而,在开源社区严格的代码审核流程中,未经过维护者确认便推送代码,无疑是一次严重的违规操作。
此次事件中,该代码破坏了CPU上的控制流完整性(CFI),CFI是一项重要的安全功能,通过影子堆栈和间接分支目标(IBT)来防止返回导向编程(ROP)和调用/跳转导向编程(COP/JOP)攻击。这一关键问题可能导致系统出现不稳定、易受攻击等严重后果。
幸运的是,在开源社区中,总是不乏技术大神挺身而出。
英特尔的Peter Zijlstra和AMD的Borislav Petkov迅速行动。英特尔Peter Zijlstra以恢复与EXECMEM_ROX支持相关的更改。他指出,微软的代码导致`alternative.c`文件出现巨大混乱,并且仍然存在错误,部分CFI变体甚至会导致系统崩溃。AMD Borislav Petkov也对此表示不满,批评该代码未经任何x86维护者确认就被合并,导致了一系列问题。
两位大神及时提交了紧急修复方案,成功挽救了Linux内核 6.13版本于水火之中。此次事件引发了开源社区对于代码审核流程和代码质量把控的深入讨论。
开源软件的发展依赖于全球开发者的共同努力,每一行代码的提交都关乎着整个生态的稳定与安全。此次事件也为其他参与开源项目的企业和开发者敲响了警钟,代码审核流程绝非可有可无的形式,而是保障开源软件质量的关键防线。
对于Linux内核而言,此次危机虽然有惊无险,但也暴露出在与外部企业合作过程中,对于代码引入环节的管理漏洞。
未来,Linux内核团队需要进一步完善代码审核机制,加强与外部贡献者的沟通与协作,确保每一行被合并到内核中的代码都经过严格的测试和审核。
在开源的世界里,没有绝对的权威,每一位开发者都可以为项目贡献力量,同时也都肩负着维护代码质量的责任。当遇到问题时,开源社区能够迅速凝聚力量,共同解决难题,这正是开源精神的魅力所在。