“木马源”攻击影响多数编程语言的编译器,将在软件供应链攻击中发挥巨大作用...
聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士
专栏·供应链安全
数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
英国剑桥大学和爱丁堡大学的研究人员发布论文《木马源:看不见的源代码漏洞》,详细说明了一种可通过注释字段在合法 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。其它修复方案将在后续发布。
可从如下"原文链接“中下载获取论文全文。
推荐阅读
GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞
流行的 NPM 包依赖关系中存在远程代码执行缺陷
速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年
Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件
微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析
速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年
SolarWinds 供应链事件后,美国考虑实施软件安全评级和标准机制
找到软件供应链的薄弱链条
GitHub谈软件供应链安全及其重要性
揭秘新的供应链攻击:一研究员靠它成功入侵微软、苹果等 35 家科技公司
开源软件漏洞安全风险分析
开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析
集结30+漏洞 exploit,Gitpaste-12 蠕虫影响 Linux 和开源组件等
限时赠书|《软件供应链安全—源代码缺陷实例剖析》新书上市
热门开源CI/CD解决方案 GoCD 中曝极严重漏洞,可被用于接管服务器并执行任意代码
GitKraken漏洞可用于盗取源代码,四大代码托管平台撤销SSH密钥
因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露
彪马PUMA源代码被盗,称客户数据不受影响
原文链接
https://therecord.media/new-trojan-source-attack-impacts-compilers-for-most-programming-languages/
https://trojansource.codes/trojan-source.pdf
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 "赞” 吧~
“木马源”攻击影响多数编程语言的编译器,将在软件供应链攻击中发挥巨大作用...相关推荐
- 技嘉固件组件可被滥用为后门,影响700万台设备,易触发供应链攻击
聚焦源代码安全,网罗国内外最新资讯! 作者:Lucian Constantin 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支 ...
- FIN7 正在转向密码重置和软件供应链攻击
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士团队 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的 ...
- 2021年软件供应链攻击数量激增300%+
聚焦源代码安全,网罗国内外最新资讯! 作者:Help Net Security 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支 ...
- NPM 修复两个严重漏洞但无法确认是否已遭在野利用,可触发开源软件供应链攻击...
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...
- 8大软件供应链攻击事件概述
在软件开发中所面临的新型威胁已经不仅仅与特定的公司相关,整个软件供应链的上下游都已成为攻击者的目标,因此必须保证每个环节的安全性,因为如果一个环节出现问题,一切都会受到影响. 供应链活动包括将原材料. ...
- SushiSwap MISO 遭软件供应链攻击,价值300万美元的以太坊被盗
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 SushiSwap("寿司")公司的首席技术官 Joseph Delong表示该公司的 MISO 平台遭软件供应链攻击.一名 ...
- 朝鲜 APT37被指发动软件供应链攻击,瞄准股票投资人
聚焦源代码安全,网罗国内外最新资讯! 本周发布的一份报告指出,朝鲜黑客组织 Thallium(即 APT37)专门针对一家私有股票投资通讯服务发动软件供应链攻击. 目前,该组织主要依靠钓鱼攻击如通过 ...
- 3CX Desktop App 遭受软件供应链攻击(CVE-2023-29059)
漏洞描述 3CX Desktop App 是一款集成电话.视频会议.即时消息等多种通信方式的桌面软件,在海外有较多企业客户使用. 疑似由于3CX Desktop App通过git构建时引入了受供应链攻 ...
- 微软:Nobelium 组织正在发动新一轮软件供应链攻击
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...
最新文章
- 你的生产型ML复现不了,可能是工作流程出了问题
- PHP的TRUE|FALSE
- python pytest
- python rpy2时间序列_当从多线程使用rpy2调用r函数时,模型作为r函数的参数
- 开发extjs常用的插件
- 多模态 | 从顶会论文看多模态预训练研究进展
- Question | 你所遇到的验证码问题可能都在这里了
- 北理校园网省流攻略之下载篇
- linux服务器的外网IP查阅方式
- rockchip rk3566 调试杂记
- SAP 玻璃原片单位问题处理
- UG NX 12 组件装配约束
- kettle效率提升
- 转行成为大数据工程师要怎么做?
- An Indexable Time Series Dimensionality Reduction Method for Maximum Deviation Reduction and Simi...
- 学习Docker之Docker初体验 简单用例---SpringBoot集成Docker的部署、发布与应用
- 移动电源/便携式汽车应急启动电源UKCA/CE认证
- python asyncio_python中asyncio模块
- 群控手机源码二次开发
- Android 9的新特性 eSIM LPA