写点什么

“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:306153
用户头像
罗燕珊 AI practitioner | Tech media

发布了 534 篇内容, 共 395.3 次阅读, 收获喜欢 845 次。

关注

评论

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

链表反转

Echo!!!

typescript Reverse linkedlist

喜报!天翼云论文被权威国际学术会议IEEE/ACM CCGrid收录

编程猫

智能座机方案建设与实践

之家技术

人工智能 企业号 4 月 PK 榜

从基础到高级,带你深入了解和使用curl命令(一)

霍格沃兹测试开发学社

零训练创建大模型的新方法:进化算法在模型融合中的应用

算AI

人工智能 神经网络 深度学习 算法

浅谈TypeScript对业务可维护性的影响

前夕

typescript 前端

AI程序员上岗1年!四分之一代码都靠TA,还能检测修复安全漏洞!

百度安全

大模型驱动的新范式选车引擎

之家技术

大模型 AIGC 企业号 4 月 PK 榜

UniApp 应用发布到苹果商店指南

从基础到高级,带你深入了解和使用curl命令(二)

霍格沃兹测试开发学社

反套路打工:王子公主职场图鉴

白洞计划

云计算

阿里云可观测 2024 年 3 月产品动态

阿里巴巴云原生

阿里云 云原生 可观测

AIGC在广告创意上的实践

之家技术

大模型 AIGC 企业号 4 月 PK 榜

顶级Layer-3 通证正在飙升,布局龙头Degen Chain(含bitget教程)

股市老人

pageSpy - 远程调试利器

前夕

前端 pagespy

汽车智能化多模态交互

之家技术

大模型 AIGC 企业号 4 月 PK 榜

汽车之家人的“灵创”AI应用平台及编程助手AutoCode

之家技术

大模型 AIGC 企业号 4 月 PK 榜

Databend 集成 PRQL:现代数据处理的一小步

Databend

Apache Doris 2.1.1 版本正式发布!

SelectDB

数据库 大数据 开源 数据分析 大数据 开源

全网唯一能够秒回粉丝的博主, 是如何做到的?

前夕

前端 Electron React 自媒体

快马科技丨中小型经销商数字化怎么玩?

科技热闻

日志服务 HarmonyOS NEXT 日志采集最佳实践

阿里巴巴云原生

阿里云 云原生 HarmonyOS 日志服务 sls

AI广告创意生产实践

之家技术

大模型 AIGC 企业号 4 月 PK 榜

苹果开发新款 AI 能「看懂」屏幕上内容;阿里未来 20% 代码将由 AI 编写丨 RTE 开发者日报 Vol.177

声网

C++ While 和 For 循环:流程控制全解析

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

《计算机程序设计艺术(第2卷)》PDF

程序员李木子

室内全彩LED显示屏的构成与技术

Dylan

技术 LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏

持续兑现承诺,英特尔锐炫Day 0驱动支持网易武侠大作《射雕》

E科讯

连接世界,选择国外主机服务,让你的网站跨越地域限制

一只扑棱蛾子

国外主机 国外主机服务

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