当前位置: 首页 > 科技观察

警报!易于隐藏的“木马源码”代码漏洞正在对企业供应链发起攻击

时间:2023-03-20 12:40:59 科技观察

来自剑桥大学的两位研究人员NicholasBoucher和RossAnderson本周披露了一个隐藏在Unicode(统一码)中的安全漏洞,这个漏洞编号CVE-2021-42574将影响所有支持Unicode的编程语言。目前已确认受影响的语言涵盖C、C++、C#、JavaScript、Java、Rust、Go和Python等,推测可能还有其他受害语言。该漏洞将允许黑客在开源代码中注入人类代码检查员看不到的安全漏洞,因此被研究人员称为TrojanSource攻击。木马源漏洞和攻击模式Anderson和他的同事NicholasBoucher(博士生)揭示了两种攻击模式,统称为木马源攻击。该漏洞涉及两个CVE,均按照Unicode规范发布。研究人员称这是对Unicode双向算法(BiDi)的“潜在破坏性”攻击,该算法自14.0版起被追踪为CVE-2021-42574。BiDi处理文本显示的顺序,例如,拉丁字母从左到右,阿拉伯或希伯来字符从右到左。另一种相关攻击依赖于使用视觉上相似的字符,称为同形异义词,被追踪为CVE-2021-42694。为了给漏洞修复腾出时间,安全研究人员特地延迟了99天才正式公开了相关漏洞信息。与此同时,研究人员与19个组织进行了协调,其中许多组织现在正在发布更新,以解决代码编译器、解释器、代码编辑器和存储库中的安全漏洞。更多技术细节可以在他们的论文中找到。研究人员已经确认,该攻击已经影响到C、C++、C#、JavaScript、Java、Rust、Go和Python等编程语言,并有望扩展到其他现代语言。他们还提出了应该在编译器、解释器和支持Unicode的构建管道中实施的防御措施;语言规范;和代码(文本)编辑器和存储库前端。他们向可以建立这些防御措施的各种组织和公司披露了他们的发现(处于禁运状态)。“我们相信这个问题的长期解决方案将部署在编译器中。我们注意到,几乎所有编译器都已经防止相关攻击涉及使用零宽度字符来创建对抗性函数名称,而三个编译器会针对另一个编译器产生错误,利用函数名称中的同形异义词,”他们分享道。“大约一半的编译器我们在公开曝光期间联系的维护者正在开发补丁,或者已经承诺这样做。在其他人拖泥带水的这段时间部署其他控件是明智的,因为它既快速又便宜,而且非常必要。维护代码库的三个公司也部署了防御措施。我们建议依赖关键软件的政府和公司确定其供应商的位置,向他们施加压力以实施充分的防御,并确保任何漏洞都被其工具链中的其他控制措施所覆盖。“目前,已经实施修复并在其供应链中检测到修复的组织包括Rust团队、GitHub、RedHat和Atlassian(多个产品受到影响)。