黑客24小时在线接单的网站

黑客24小时在线接单的网站

影响众多编程语言、引发供应链攻击,剑桥大学发布「木马源」漏洞

漏洞和攻击无处不在。最近,剑桥大学的两名研究人员发现了一个漏洞,可以影响计算机代码编译器和软件开发环境——Trojan Source(木马源) 洞几乎影响了所有的计算机语言,包括 C、C 、C#、JavaScript、Java、Rust、Go 和 Python 。

另外,恶意代码可以 Trojan Source 用于供应链攻击。

                   
  • 论文地址:https://trojansource.codes/trojan-source.pdf
  •                
  • GitHub 地址:https://github.com/nickboucher/trojan-source

Trojan Source 攻击方法采用字符编码标准 Unicode 有以下两种攻击方法:

                   
  • 第一种是通过 Unicode 的 Bidi 算法(CVE-2021-42574),算法处理从左到右(如英语)和从右到左(如阿拉伯语和希伯来语)脚本显示顺序。该漏洞允许在视觉上重新排序字符,使其呈现不同于编译器和解释器的逻辑顺序;
  •                
  • 二是同源攻击 (CVE-2021-42694),两个不同的字符有相似的视觉表达,如拉丁语 H 和西里尔字母Н。

研究人员表示如果攻击者通过逃过人类审阅成功地将目标漏洞提交到开源代码中,下游软件可能会继承该漏洞。在 GitHub 在存储库中,他们提供了 的概念验证(PoC) 脚本。

Trojan-Source 攻击

重新排序字符

Unicode 标准规定,内存表示顺序称为逻辑顺序。当文本在一行时,大多数脚本从左到右显示字符(如英语)。然而,也有一些脚本(如阿拉伯语或希伯来语)显示文本的自然顺序是从右到左。当混合不同显示顺序的脚本时,必须有一种确定性的方法来解决方向冲突。Unicode ,双向或 Bidi 算法可以实现。

在某些场景下,Bidi 算法设置的默认排序可能不够。对于这些情况,Bidi 该算法提供覆盖控制字符(override control characters)。Bidi 算法覆盖是一个不可见的字符,可以切换字符组的显示顺序。

例如,考虑以下 Unicode 字符序列:RLI a b c PDI,然后显示为:c b a。

下表 I 提供与此攻击相关的控制符列表:

隔离重新排序

在 Bidi 在规范中,隔离(isolates)是被视为单个实体的字符组;也就是说,当显示顺序重写时,整个字符组将作为单个块移动,隔离可以嵌套。

假设 Unicode 字符为:RLI LRI 4 5 6 PDI LRI 1 2 3 PDI PDI,然后将显示为:1 2 3 4 5 6。

相互嵌入多层 LRI 和 RLI,字符串几乎可以随意重新排序。然后攻击者可以将凌乱的字符插入当前的开源项目,让用户下载后执行,以便在不知情的情况下执行漏洞代码。

语法依从性

大多数设计良好的编程语言不允许在源代码中使用任何控制字符,因为它们被认为是影响逻辑的 token。因此, 随机放置在源代码中Bidi 覆盖字符通常会导致编译器或解释器的语法错误。为了避免这种错误,我们可以使用以下两个原则:

                   
  • 注:大多数编程语言允许编译器和解释器忽略所有文本(包括控制符)的注释;
  •                
  • 字符串:许多编程语言允许字符串包含任何字符,也包括控制符。

虽然注释和字符串具有特定于语法的语义,指示其开始和结束,但 Bidi 覆盖不遵守这些界限。因此,通过 Bidi 覆盖字符专门放置在注释和字符串中,我们可以通过大多数编译器可接受的方式将其注入源代码。

示例展示

如下图所示,代码逻辑是通过任意控制符改变的。 在以下代码中if 条件没有执行,而是放在注释部分,程序显示效果欺骗用户。

研究人员还展示了如何 C 在同源文本攻击中执行。他们使用了两个看起来相似但实际上不同的 H,蓝色拉丁语 H 和红色西里尔字母Н。编译时,程序输出文本「Goodbye,World!」。

加强防御

这种攻击可能很难检测,因为渲染的源代码看起来非常完美。如果逻辑变化足够小,以至于在后续测试中没有发现,攻击者可能会在未被发现的情况下引入有针对性的漏洞。

同样令人担忧的是,Bidi 通过复制和粘贴,覆盖字符仍然存在于浏览器、编辑器和操作系统中。

「开发人员将代码从不可信的来源复制到受保护的代码库中,这种做法可能会无意中引入一个不可见的漏洞,」剑桥大学计算机安全教授,这项研究的合作者 Anderson 表示。「这种代码复制是现实世界安全漏洞的重要来源。」

约翰霍普金斯信息安全研究所副教授 Matthew Green 表示,「剑桥研究清楚地表明,大多数编译器都可以被 Unicode 欺骗,以不同于研究人员预期的方式处理代码。」

好消息是,研究人员进行了广泛的漏洞扫描,没有人使用这个漏洞。坏消息是,目前还没有防御措施,将来可能会有人利用这个漏洞进行一些破坏。

Green 说:我希望编译器和代码编辑器开发人员能快速修复这个漏洞!但至少有一些风险,因为有些人不时更新他们的开发工具。

图源:XKCD.com/2347/

加州大学伯克利分校计算机科学系讲师 Nicholas Weaver 表示,剑桥提出了一组非常简单、优雅的攻击,可能会使供应链攻击变得更加严重。

从源代码中很难区分人类「this is OK、this is evil」,Weaver 表示。对于这种攻击,你可以用改变方向来改变注释和字符串的呈现,比如「This is okay」只是一种呈现形式,但「This is」okay 是它存在于代码中的方式。幸运的是,它有一个非常容易扫描的标记,所以编译器将来可以遇到它「检测」它。

研究人员表示,软件公司在最初披露期间提供了 99 天的监禁期,允许通过软件更新和修复受影响的产品。

研究人员写道:「我们收到了各种各样的回应,包括修复承诺,Bug 赏金计划、快速拒绝等。在我们与之合作的 19 软件供应商中, 7 家庭使用外包平台接收漏洞披露,6 家庭拥有专门的漏洞披露门户网站,4 家庭通过 PGP 加密电子邮件被披露,另外两个只通过非 PGP 电子邮件被披露。他们都证实收到了我们的披露,最后 9家承诺发布补丁。」

此外, 11 家族的接受者也有 Bug 赏金计划,为漏洞披露提供报酬。但研究人员报告说,只有 5 家支付赏金,平均支付 2,246 美元。

Anderson 表示,「到目前为止,大约一半的组织已经承诺提供补丁,而其他组织仍在拖延。我们将监控他们的部署,并希望 GitHub、Gitlab 、 Atlassian 采取行动。」

参考链接:

https://krebsonsecurity.com/2021/11/trojan-source-bug-threatens-the-security-of-all-code/http://cn-sec.com/archives/609155.htmlhttp://cn-sec.com/archives/609155.html

【本文是51CTO专栏机构“机器之心”微信微信官方账号原创译文“机器之心( id: almosthuman2014)”】

戳这里,看作者更好的文章

   
  • 评论列表:
  •  莣萳优伶
     发布于 2022-06-14 04:47:24  回复该评论
  • 洞的重要来源。」约翰霍普金斯信息安全研究所副教授 Matthew Green 表示,「剑桥研究清楚地表明,大多数编译器都可以被 Unicode 欺骗,以不同于研究人员预期的方式处理代码。」好消息是,研究人员进行了广泛的漏洞扫描,没有人使用这个漏洞。坏消息是,目前还没有防
  •  晴枙桃靥
     发布于 2022-06-14 07:05:42  回复该评论
  • 11/trojan-source-bug-threatens-the-security-of-all-code/http://cn-sec.com/archives/609155.htmlhttp://cn-sec.com/archives/609155
  •  澄萌末屿
     发布于 2022-06-14 04:07:28  回复该评论
  •    二是同源攻击 (CVE-2021-42694),两个不同的字符有相似的视觉表达,如拉丁语 H 和西里尔字母Н。研究人员表示如果攻击者通过逃过人类审阅成功地将目标漏洞提交到开源代码中,下游软件可能会继承该漏洞。在 GitHub 在存储库
  •  弦久空宴
     发布于 2022-06-14 02:37:23  回复该评论
  • 过 Unicode 的 Bidi 算法(CVE-2021-42574),算法处理从左到右(如英语)和从右到左(如阿拉伯语和希伯来语)脚本显示顺序。该漏洞允许在视觉上重新排序字符,使其呈现不同于编译器和解释器的逻辑顺序;            
  •  孤央漠望
     发布于 2022-06-14 07:33:08  回复该评论
  • 09155.html【本文是51CTO专栏机构“机器之心”微信微信官方账号原创译文“机器之心( id: almosthuman2014)”】戳这里,看作者更好的文章    

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.