跳至主要内容

博文

目前显示的是 十一月, 2021的博文

新的“特洛伊木马源”技术让黑客可以隐藏源代码中的漏洞

  黑客 可以利用一类新的漏洞,以语义上允许的方式注入具有视觉欺骗性的恶意软件,但会改变源代码定义的逻辑,从而有效地为更多的第一方和供应链风险打开大门。   剑桥大学研究人员在一篇新发表的论文中说 : “ 这种被称为“特洛伊木马源 攻击 ”的技术“利用了 Unicode 等文本编码标准的微妙之处来生成源代码,其令牌的逻辑编码顺序与其显示顺序不同,从而导致无法直接感知的漏洞由人类代码审查员 。 ”   这些漏洞 会 影响所有流行编程语言的编译器,例如 C 、 C++ 、 C# 、 JavaScript 、 Java 、 Rust 、 Go 和 Python 。   该问题的核心是 Unicode 的双向(或 Bidi )算法,该算法支持从左到右(例如,英语)和从右到左(例如,阿拉伯语或希伯来语)语言,并且还具有所谓的双向性覆盖以允许在从右到左的句子中写入从左到右的单词,反之亦然,从而可以将不同阅读方向的文本嵌入大文本块中。   虽然期望编译器的输出正确实现提供给它的源代码,但通过将 Unicode Bidi 覆盖字符插入注释和字符串而产生的差异可能会产生一种产生语法有效的源代码的场景,其中字符的显示顺序呈现不同的逻辑从实际逻辑来看。 换句话说,攻击通过针对源代码文件的编码来制造有针对性的漏洞,而不是故意引入逻辑错误,以便在视觉上重新排序源代码中的令牌,虽然以完全可接受的方式呈现,但会欺骗编译器进行处理以不同的方式编写代码并彻底改变程序流程——例如,使注释看起来好像它是代码。 “实际上,我们将程序 A 转换为程序 B , ” 研究人员推测道。 “ 如果逻辑上的变化足够微妙以至于在后续测试中未被发现,那么攻击者可能会在不被发现的情况下引入有针对性的漏洞。 ” 研究人员警告说,当注入开源软件的隐形软件漏洞进入下游时,这种对抗性编码会对供应链产生严重影响,可能会影响软件的所有用户。更糟糕的是,如果攻击者使用同形文字重新定义上游包中预先存在的函数并从受害者程序中调用它们,则木马源攻击可能会变得更加严重。 通过用来自其他 Unicode 系列集的相似字符替换拉丁字母(例如,将 “H” 更改为西里尔字母 “Н” ),威胁行为者可以创建一个看似与原始函数相似但实际上包含恶意代码的同形文字函数,然后被添加到开源项目中而不