木马源攻击影响多数编程语言的编译器,将在软件供应链攻击中发挥巨大作用

发布于 2021-11-04 14:42 ,所属分类:软件编程学习资料

聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士


专栏·供应链安全

数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。


随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。


为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。


注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。


英国剑桥大学和爱丁堡大学的研究人员发布论文《木马源:看不见的源代码漏洞》,详细说明了一种可通过注释字段在合法 app 内插入恶意代码的理论攻击即“木马源 (Trojan Source)”攻击。



BiDi 攻击(CVE-2021-42574)


该攻击依赖的是源代码注释中的双指向控制字符。这些字符也被称为 “BiDi 字符“,是用于一行文本中的Unicode 控制字符,用于说明从LTR(从左到右)模式到RTL(从右到左)模式的转换或从RTL到LTR模式的转换。

在实践中,这些字符只适用于软件应用程序,肉眼无法看到,因为它仅用于在大块文本中嵌入阅读方向不同的文本(如在拉丁语文本中插入阿拉伯字符串或希伯来语字符串)。

研究人员发现,多数代码编译器和代码编辑器中并不存在处理BiDi 字符的协议或者表示源代码注释中存在BiDi字符的协议。攻击者能够在注释中插入 BiDi 控制字符且人工审计员根本无法肉眼看到这些字符;编译时,BiDi 控制字符将把注释字段中的文本转换成可执行代码或将安全相关的代码转移到被注释部分,从而导致应用程序易受攻击或忽视安全检查。


研究人员指出,“经验证,这种攻击适用于 C、C++、C#、JavaScript、Java、Rust、Go 和 Python 语言,而且也可能适用于多数其它现代语言。“除了代码编译器外,研究人员认为其它多个代码编辑器和源代码托管服务也易受攻击。



同形字攻击(CVE-2021-42694)


除了 BiDi 字符相关攻击外,研究人员还发现源代码编译器还易受第二个安全问题即“同形字攻击 (homoglyph attack)”的影响,如拉丁字母被替换为Unicode家族中的相似字符。研究人员指出这种攻击可用于创建使代码审计员认为相似但实际不同的两个函数。攻击者可利用依赖关系或组件,在该应用的主代码库之外定义同形字函数,并在维护人员毫无察觉的情况下在项目中注入恶意代码。


研究人员指出,由于当前的编程工作是多名开发人员的协作结果,因此代码编译器和代码编辑器应该能够检测出 BiDi 和同形字字符,并提醒代码审计人员源代码中使用了非标准的 Unicode 符号(通常用拉丁字符集编成)。


在软件供应链攻击中发挥重大作用


攻击者并不一定是在源代码中插入逻辑漏洞,而是通过攻击编码源代码文件注入漏洞,而这些恶意编码是肉眼看不见的。攻击者使用 Unicode 控制字符,在编码级别重新排列源代码中的令牌。这些可见的重新排序的令牌可用于展示这样一种逻辑:语法正确但逻辑和源代码令牌逻辑顺序展现的逻辑不同。编译器和解释器遵照的是源代码的逻辑顺序而非视觉顺序。攻击使用在注释和字符串中嵌入的控制字符,对源代码字符重新排序,从而更改其逻辑。攻击者可以利用这种欺骗手法将漏洞提交至代码中,而人工审计根本无法察觉。这种攻击方法在软件供应链攻击中尤其能够发挥巨大作用。

研究人员指出,“实验表明,截至本文成稿时,C、C++、C#、JavaScript、Java、Rust、Go 和 Python 均易受木马源攻击影响。从更广范围来看,这种攻击可能应用于接受 Unicode 源代码的常用编译器的任意语言。安全性依赖于软件供应链完整性的任意实体都应当引起注意。”

研究人员在报告中表示,由于使用这两种攻击技术可以轻松发动强大的供应链攻击,因此参与软件供应链的组织机构都应当部署相关防御措施。软件开发工具链的各层级(语言规定、编译器、文本编辑器、代码库和构建管道)均可部署应对措施。研究人员认为长期的解决方案将部署在编译器中,而且目前来看几乎所有的编译器都已经能够防御此类攻击。


修复进度


研究人员指出,已给所有受影响方99天的期限修复这两种攻击模式。

截至目前,Rust 官方编译器已发布安全更新,修复这两种攻击模式:BiDi 攻击即CVE-2021-42574和同形字攻击 CVE-2021-42694。其它修复方案将在后续发布。

可从如下"原文链接“中下载获取论文全文。



奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

觉得不错,就点个“在看” 或 "” 吧~



相关资源