黑客可以利用一类新的漏洞,以语义上允许的方式注入具有视觉欺骗性的恶意软件,但会改变源代码定义的逻辑,从而有效地为更多的第一方和供应链风险打开大门。
剑桥大学研究人员在一篇新发表的论文中说:“这种被称为“特洛伊木马源攻击”的技术“利用了Unicode等文本编码标准的微妙之处来生成源代码,其令牌的逻辑编码顺序与其显示顺序不同,从而导致无法直接感知的漏洞由人类代码审查员。”
这些漏洞会影响所有流行编程语言的编译器,例如
C、C++、C#、JavaScript、Java、Rust、Go 和 Python。
该问题的核心是 Unicode 的双向(或Bidi)算法,该算法支持从左到右(例如,英语)和从右到左(例如,阿拉伯语或希伯来语)语言,并且还具有所谓的双向性覆盖以允许在从右到左的句子中写入从左到右的单词,反之亦然,从而可以将不同阅读方向的文本嵌入大文本块中。
虽然期望编译器的输出正确实现提供给它的源代码,但通过将 Unicode Bidi 覆盖字符插入注释和字符串而产生的差异可能会产生一种产生语法有效的源代码的场景,其中字符的显示顺序呈现不同的逻辑从实际逻辑来看。
换句话说,攻击通过针对源代码文件的编码来制造有针对性的漏洞,而不是故意引入逻辑错误,以便在视觉上重新排序源代码中的令牌,虽然以完全可接受的方式呈现,但会欺骗编译器进行处理以不同的方式编写代码并彻底改变程序流程——例如,使注释看起来好像它是代码。
“实际上,我们将程序 A 转换为程序 B,”研究人员推测道。“如果逻辑上的变化足够微妙以至于在后续测试中未被发现,那么攻击者可能会在不被发现的情况下引入有针对性的漏洞。”
研究人员警告说,当注入开源软件的隐形软件漏洞进入下游时,这种对抗性编码会对供应链产生严重影响,可能会影响软件的所有用户。更糟糕的是,如果攻击者使用同形文字重新定义上游包中预先存在的函数并从受害者程序中调用它们,则木马源攻击可能会变得更加严重。
通过用来自其他 Unicode 系列集的相似字符替换拉丁字母(例如,将“H”更改为西里尔字母“Н”),威胁行为者可以创建一个看似与原始函数相似但实际上包含恶意代码的同形文字函数,然后被添加到开源项目中而不会受到太多审查。该论文指出,当针对通过导入的依赖项或库提供的通用功能时,这种类型的攻击可能是灾难性的。
研究人员指出:“Trojan Source 漏洞几乎影响所有计算机语言,这一事实使其成为系统范围内和生态上有效的跨平台和跨供应商响应比较的难得机会。”
“由于使用这些技术可以轻松发起强大的供应链攻击,因此参与软件供应链的组织实施防御至关重要。”
Myasiacloud亞洲雲海
網路安全防禦專家---免備案CDN解決方案
亞太高防資源 無上限防禦DDoS/CC攻擊
全球優質節點 中國大陸全境加速
海外加速
詳情訪問https://www.myasiacloud.com/clouddf
商務聯絡TG:@myasiacloud66
评论
发表评论