速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

“Trojan Source”算法漏洞几乎影响所有代码的安全

  • 2021-11-05
  • 本文字数:3054 字

    阅读完需:约 10 分钟

“Trojan Source”算法漏洞几乎影响所有代码的安全

发表于 11 月 1 日的最新研究警告说,几乎所有的编译器(即把人类可读源码转换成计算机可执行的机器码的程序)都会受到一种“阴险的攻击”,在这种攻击中,黑客可以将目标漏洞引入任何软件而不被发现。披露这一漏洞的过程是与多个组织协调进行的,其中一些组织目前正在发布更新来解决这个安全漏洞。


剑桥大学的研究人员发现了一个 bug,这个 bug 影响了大多数计算机代码的编译器和许多软件开发环境。问题在于数字文本编码标准 Unicode 的一部分,该标准允许计算机之间进行信息交换,无论其使用何种语言。Unicode 目前定义了 154 种不同语言文字的 143000 多个字符(此外,还有许多非文字的字符集,例如表情符号)。


具体来说,这个漏洞涉及 Unicode 的双向或 “Bidi”算法,该算法处理显示的文本,包括具有不同显示顺序的混合文字,例如阿拉伯语(从右到左读)和英语(从左到右读)。


但是计算机系统需要有一种确定的方法来解决文本中相互冲突的方向性。输入“Bidi 重写”(Bidi override),它可以用来使“从左到右”的文本变成“从右到左”阅读,反之亦然。


“Bidi 算法设定的默认排序在某些情况下可能是不够的,”剑桥大学的研究人员写道,“对于这些情况,Bidi 重写控制字符可以切换字符组的显示顺序。”


Bidi 重写甚至可以使单个脚本字符不同于其逻辑编码的顺序显示。正如研究人员所指出的,这一事实以前曾被利用来掩盖通过电子邮件传播的恶意软件的文件扩展名


这就是问题:大多数编程语言都允许在注释和字符串中放置这些 Bidi 重写。这样做非常糟糕,因为大多数编程语言允许注释,而编译器和解释器会忽略所有文本(包括控制字符)。另外,这也很糟糕,因为大多数编程语言都允许字符串包含任意字符,包括控制字符。


这份研究的共同作者 Ross Anderson,剑桥大学计算机安全教授说:“因此,你可以把它们用在对人类审查者看来无害的源代码中,而实际上却能做出令人讨厌的事。对于像 Linux 和 Webkit 这样的项目来说,这是一个坏消息,这些项目接受来自随机人员的贡献,对其进行人工审查,然后将其合并到关键代码中。就我所知,这是第一个对任何事物都有影响的漏洞。”


这篇研究论文将该漏洞称为“Trojan Source”,指出虽然注释和字符串都有其开始和结束的特定语法语义,但是 Bidi 重写并没有遵循这些限制。以下摘自该论文:


“所以,通过将 Bidi 重写字符完全放入注释和字符串中,我们可以用大多数编译器接受的方式将它们‘偷渡’到源代码中。我们的主要见解是,我们可以用这样一种方法来重新排序源代码字符,而生成的显示顺序也代表了句法上有效的源代码。”


“将所有这一切结合起来,我们得出了一个新的对源代码的供应链攻击(supply-chain attack)。通过在注释和字符串中注入 Unicode Bidi 重写字符,黑客就能在大多数现代语言中产生语法有效的源代码,而在这些语言中,字符的显示顺序与真实逻辑有很大不同。事实上,我们将程序 A 变成了程序 B。”


Anderson 说,对于人类代码审查人员来说,这种攻击可能难以检测到,因为所呈现的源代码似乎是完全可以接受的。


他说:“如果逻辑上的改变足够细微,以至于在后续的测试中都没有被发现,那么黑客就能在不被发现的情况下引入有针对性的漏洞。”


还有一点也令人担心,在大多数现代浏览器、编辑器和操作系统上,Bidi 重写字符通过复制和粘贴功能都持续存在。


Anderson 表示:“任何开发者只要从不被信任的来源复制代码到受保护的代码库,都会无意中引入一个无形的漏洞。这种代码复制是现实世界中安全漏洞的重要来源。”


约翰霍普金斯大学信息安全研究所的副教授 Matthew Green 称,剑桥大学的研究清楚地表明,大多数编译器都会被 Unicode 欺骗,而不像读者所期望的那样处理代码。


图片来源:XKCD.com/2347/


Green 表示:“在阅读这篇论文之前,Unicode 可能会以某种方式加以利用的想法并不令我吃惊。令我吃惊的是,有多少编译器很乐意解析 Unicode,而不使用任何防御措施,它们从右向左的编码技术在将代码嵌入代码库方面是多么有效。那是很聪明的方法,我以前都没想到过。”


在 Green 看来,好消息是,研究人员进行了广泛的漏洞扫描,但未能发现有人利用这一漏洞的证据。


不过,Green 也说:“坏消息是,我们对它没有任何防御措施,而人们现在知道了,就可能会开始利用它。但愿编译器和代码编辑器的开发者能尽快修补这个漏洞!但是,因为有些人没有定期更新他们的开发工具,所以至少在一段时间内存在一定的风险。”


加州大学伯克利分校计算机科学系讲师 Nicholas Weaver 说,剑桥大学的研究提出了“一套非常简单、优雅的攻击方式,可能会使供应链攻击变得更多、更糟糕。”


“在源代码中,人们已经很难区分‘this is OK’和‘this is evil’,”Weaver 说,“有了这种攻击,你就可以利用方向性的转变来更改注释和字符串的呈现方式,例如,‘this is okey’就是它的呈现方式,但‘this is’ okey 就是它在代码中的存在方式。幸运的是,这种特征非常容易扫描,因此编译器可以在未来遇到它时(检测到)。”


剑桥大学那篇论文的后半部分是一项引人入胜的案例研究,介绍了在如此多受影响的编程语言和软件公司中协调漏洞披露的复杂性。研究人员称,在首次披露该漏洞后,它们提供了 99 天的时滞期,以允许受影响的产品能够通过软件更新得到修复。


研究人员写道:“我们遇到了各种各样的回应,从补丁承诺和漏洞赏金到快速解雇和提及法律政策。在我们接触过的 19 家软件供应商中,有 7 家使用外包平台接收漏洞披露,6 家有专门的门户网站接收漏洞披露,4 家通过 PGP 加密的电子邮件接受披露,2 家仅通过非 PGP 电子邮件接受披露。他们都确认收到了我们的披露,最后其中有 9 家承诺发布补丁。”


其中 11 家接受者有用于支付披露漏洞的漏洞赏金计划。但研究人员报告说,其中只有 5 家支付了赏金,平均支付额为 2246 美元,范围为 4475 美元。



Anderson 说,到目前为止,大约半数所联系的维护受影响的计算机编程语言的组织都承诺提供补丁。其他组织则在拖延时间。


“我们将在未来几天监测他们的部署情况,”Anderson 说。“我们也期望 Github、Gitlab 和 Atlassian 会采取行动,所以他们的工具应该能够检测到那些对于缺乏 Bidi 字符过滤语言的代码的攻击。”


至于需要对 Trojan Source 做什么,研究人员敦促依赖于关键软件的政府和公司查明其供应商的态势,对他们施加压力,要求他们实施足够的防御,并确保任何漏洞都被他们工具链中其他地方的控制所覆盖。


“Trojan Source 漏洞几乎影响了所有的计算机语言,这也让此成为一个难得的机会,可以进行全系统的、生态上有效的跨平台和跨厂商的响应对比,”该论文总结道,“由于使用这些技术可以很容易地发起强大的供应链攻击,参与软件供应链的组织实施防御是至关重要的。”


Weaver 称这项研究是 “是非常好的工作,因为在事情发展成问题之前阻止了它。”


“对于修复这些问题来说,协调披露是一项很好的研究,”他说,“这个漏洞确实存在,但是也凸显了我们现代代码所依赖的依赖项和软件包不断变化的更大漏洞。”


Rust 发布了一份针对此安全漏洞的安全公告,它的追踪代号是 CVE-2021-42574 和 CVE-2021-42694。其他受影响语言提供的安全建议将在此添加和更新。


Trojan Source 研究论文下载地址:https://www.trojansource.codes/trojan-source.pdf


作者介绍:

Brian Krebs,独立调查记者。报道网络犯罪、安全、隐私。《纽约时报》畅销书《Spam Nation》一书作者。前华盛顿邮报记者(1995 年~2009 年)。


原文链接:

https://krebsonsecurity.com/2021/11/trojan-source-bug-threatens-the-security-of-all-code/

2021-11-05 18:305800
用户头像
罗燕珊 AI practitioner | Tech media

发布了 499 篇内容, 共 335.5 次阅读, 收获喜欢 798 次。

关注

评论

发布
暂无评论
发现更多内容

指标平台详解(下):第三代指标平台实现了哪些突破?

Aloudata

BI ETL 指标中台; 指标中台

第三届“新科技 星力量” 科技实践案例评选【获奖名单】揭晓

星环科技

大数据 科技 大模型 获奖

“研学测”好帮手,三步带你安装体验TDH社区开发版

星环科技

大数据 信创 科技 大模型

亚马逊云科技在中国推出数字孪生服务Amazon IoT TwinMaker

财见

【第七在线】数字化转型:智能商品计划管理的核心要素

第七在线

全面升级!Apache HugeGraph 1.2.0版本发布

百度安全

星环科技基于第五代英特尔®至强®可扩展处理器的分布式向量数据库解决方案重磅发布

星环科技

大数据 信创 科技 大模型

国内首个图计算标准发布,悦数图数据库通过测试

悦数图数据库

图谱

JetBrains软件怎么设置中文,jetbrains全家桶汉化教程

南屿

编程开发 jetbrains rider破解版 JetBrains全家桶

Python 变量?对象?引用?赋值?一个例子解释清楚

EquatorCoco

Python 前端 变量 对象 开发语言

产品解读 | 新一代湖仓集存储,多模型统一架构,高效挖掘数据价值

星环科技

大数据 信创 科技 大模型

实现钉钉与宁波银行对接,助力企业实现财务智能化

聚道云软件连接器

案例分享

AppLink让你的电商运营财务管理自动化

RestCloud

零代码 APPlink 自动化集成

软件测试学习笔记丨性能测试体系

测试人

软件测试

一分钟了解Wireshark的数据包

小齐写代码

探索技术的无限可能-云原生计算2023年度奖项

字节跳动云原生计算

大数据 云原生

聚道云软件连接器1月新增应用/产品更新合集

聚道云软件连接器

功能更新

2024年前端会流行什么技术和框架了?

互联网工科生

软件开发 低代码 前端框架 JNPF

macOS数据转换工具 Easy Data Transform for mac v1.46.2激活版

南屿

Excel CSV编程文件转换 数据转换工具 Easy Data Transform

苹果电脑实用工具:Unclutter for mac 下拉菜单隐藏工具

南屿

技术解读 | KunDB助力头部金融机构关键系统的Oracle国产替代

星环科技

oracle 大数据 科技 大模型

百度安全入选2023年移动互联网APP产品安全漏洞治理十大优秀案例

百度安全

利用 Token Explorer 信号驾驭市场波动

Footprint Analytics

区块链 加密货币 Token 代币

数据中心AIOps智能运维标杆 浪潮信息InManage全新升级

财见

彰显科技硬实力!天翼云论文在国际顶刊JoCCASA发表!

天翼云开发者社区

云计算 混合云 论文

10个问题,教你如何使用一个事半功倍的代码托管平台

华为云PaaS服务小智

华为云 代码托管

软件测试学习笔记丨Flask定义接口路由和视图函数

测试人

软件测试

苹果电脑mac上好用10款系统优化软件

南屿

苹果mac系统优化 Mac卸载软件

Mac母带制作工具Steinberg WaveLab 12 Pro下载安装

南屿

Steinberg 母带处理软件 WaveLab 12

(保姆级)服务器-Zabbix6.0使用Python脚本实现带图片的邮箱的报警

不在线第一只蜗牛

Python 运维 服务器

“Trojan Source”算法漏洞几乎影响所有代码的安全_语言 & 开发_Brian Krebs_InfoQ精选文章