研究人员发现恶意代码的漏洞可以隐藏在源代码中。
滥用文本编码标准
剑桥大学的研究人员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控制,人眼认为这是编译器会忽略的注释,但事实并非如此。
rojan Source攻击——双向控制覆写字符
另一种攻击方法是同形字攻击,CVE编号为CVE-2021-42694。也就是说,使用看起来非常相似的不同字符,如数字0和字母O,小写的l和大写的I。
Trojan Source 攻击—— 同形字
PoC
基于多个主流代码编辑器的研究人员web的库进行了Trojan Source攻击测试发现,基于攻击测试的大多数代码编辑器web的库都受到Trojan Source攻击的影响。
PoC代码参见:https://github.com/nickboucher/trojan-source
其他
7研究人员于1月25日通知他们Trojan Source攻击影响的产品维修厂家,并设99天的漏洞修复期。研究人员从其中5家获得了平均2246美元的漏洞奖励。
虽然目前大多数编译器无法处理Trojan Source但有三家制造商表示正在部署攻击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/