Trojan Source:源码漏洞隐藏技术分析

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

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

滥用文本编码标准

英国剑桥大学研究人员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月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/

 

责任编辑:赵宁宁 来源: 嘶吼网
相关推荐

2022-01-29 08:01:43

漏洞网络攻击

2011-03-30 10:53:45

2015-02-06 15:51:11

2022-01-17 10:41:16

漏洞GCC 12Trojan Sour

2014-11-27 09:31:26

2010-09-14 09:16:44

2015-03-13 18:08:49

2013-03-22 12:02:46

2014-12-03 10:37:45

2010-10-11 12:21:18

2015-09-18 09:33:03

2017-10-21 21:46:32

2013-03-21 09:48:54

云存储成本

2022-04-28 07:59:11

Polkitpkexec漏洞

2011-03-15 11:33:18

iptables

2014-08-26 11:11:57

AsyncHttpCl源码分析

2018-11-04 11:33:37

Safari信息泄露漏洞

2010-06-18 15:34:49

2010-07-26 15:37:12

telnet安全漏洞

2010-09-16 15:17:33

点赞
收藏

51CTO技术栈公众号