研究人员发现了可以在源代码中隐藏恶意代码的漏洞。滥用文本编码标准英国剑桥大学的研究人员NicholasBoucher和RossAnderson发现了一种在源代码中隐藏漏洞的新方法——TrojanSource。与传统的插入逻辑漏洞相比,研究人员发现该漏洞可以通过攻击源代码文件的编码方式进行注入。TrojanSource攻击是对软件和供应链的巨大威胁。研究人员发现,用C、C++、C#、JavaScript、Java、Rust、Go和Python编写的项目都可能成为攻击者的目标。具体方法是在编码层使用Unicode控制字符对源代码中的token进行重新排序。攻击利用Unicode等文本编码标准中的微小差异(变体)来生成源代码,以不同的顺序嵌入令牌逻辑,使人类观察者无法察觉漏洞。通过利用嵌入在注释和字符串中的控制字符,攻击者可以重新排序源代码逻辑以实现新逻辑并创建可利用的漏洞。双向和同形异义词攻击研究人员指出,其中一种攻击是在双向文本上使用Unicode控件来指示内容显示的方向。该方法的CVE编号为CVE-2021-42574。双向控制LRI和RLI是不可见字符。但这不是唯一的隐形角色。此外,通过注入这些指令,编译器可以编译出与人眼所见完全不同的代码。如下图,通过对第二行的字符进行RLI/LRI控制,人眼认为是编译器会忽略的注释,其实不然。RojanSource攻击——双向控制覆盖字符另一种攻击方式是同形异义词攻击,CVE编号为CVE-2021-42694。即使用看起来相似的不同字符,例如数字0和字母O,小写l和大写I。libraries,发现大部分被测试的代码编辑器和基于web的库都容易受到TrojanSourceattacks的影响。PoC代码见:https://github.com/nickboucher/trojan-source其他7月25日,研究人员通知了受TrojanSource攻击影响的产品维护厂商,并设置了99天的漏洞修复期。研究人员平均从其中五家供应商那里获得了2,246美元的漏洞赏金。虽然目前大多数编译器无法应对TrojanSource攻击,但3家厂商声称正在部署针对TrojanSource攻击的防护措施。木马源码攻击论文下载地址:https://www.trojansource.codes/trojan-source.pdf本文翻译自:https://www.bleepingcomputer.com/news/security/trojan-source-attack-method-can-hide-bugs-into-open-source-code/
