Trojan Source:源码漏洞隐藏技术分析
2021-11-06 12:50:00 Author: www.4hou.com(查看原文) 阅读量:56 收藏

研究人员发现可在源码中隐藏恶意代码的漏洞。

滥用文本编码标准

英国剑桥大学研究人员Nicholas Boucher和Ross Anderson发现了一种可以在源码中隐藏漏洞的新方法——Trojan Source。与传统的插入逻辑漏洞相比,研究人员发现可以通过攻击源码文件的编码方式来注入漏洞。Trojan Source攻击对软件和供应链来说是巨大的威胁。

研究人员发现用C、C++、C#、JavaScript、Java、Rust、Go和Python编写的项目都可能会成为攻击者的目标。具体的方式就是使用Unicode控制字符来对源码中的token进行在编码层进行重新排序。攻击利用Unicode这样的文本编码标准中的微小差异(变化)来生成源码,将token逻辑嵌入到不同的顺序中,使得漏洞无法被人类观察者感知到。

通过利用嵌入在注释和字符串中的控制字符,攻击者可以对源码逻辑进行重新排序以实现新的逻辑,并创建一个可利用的漏洞。

双向和同形字攻击

研究人员指出其中一种攻击方式就是对双向文本使用Unicode控制以表明内容展示的方向。该方法CVE编号为CVE-2021-42574。

双向控制LRI和RLI是不可见的字符。但这并不是唯一不可见的字符。此外,通过注入这些指令,编译器可以编译出与人眼看到的完全不同的代码。

如下图所示,通过对第二行的字符进行RLI/LRI控制,人眼认为其是编译器会忽略的注释,但事实并不是。

Trojan Source attack - Bidi override characters

Trojan Source攻击——双向控制覆写字符

另一种攻击方式是同形字攻击,CVE编号为CVE-2021-42694。即利用看着很像的不同字符,比如数字0和字母O,小写的l和大写的I。

image.png

Trojan Source 攻击—— 同形字

PoC

研究人员对多个主流的代码编辑器和基于web的库进行了Trojan Source攻击测试,发现大多数受测的代码编辑器和基于web的库都受到Trojan Source攻击的影响。

Trojan Source attack - vulnerable compilers and repository front ends

PoC代码参见:https://github.com/nickboucher/trojan-source

其他

7月25日,研究人员通知了受到Trojan Source攻击影响的产品维护厂商,并设置了一个99天的漏洞修复期限。研究人员从其中5个厂商收到了平均2246美元的漏洞奖励。

虽然目前大多数编译器是无法应对Trojan Source攻击的,但有3个厂商称正在部署针对Trojan Source攻击的防护措施。

关于Trojan Source攻击的论文下载地址:https://www.trojansource.codes/trojan-source.pdf

本文翻译自:https://www.bleepingcomputer.com/news/security/trojan-source-attack-method-can-hide-bugs-into-open-source-code/如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/oXy3
如有侵权请联系:admin#unsafe.sh