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

  • 注释:大多数编程语言都允许编译器和解释器忽略所有文本(包括控制符)注释;
  • 字符串:许多编程语言允许字符串可以包含任意字符 , 同理也包括控制符 。
虽然注释和字符串都具有指示其开始和结束的特定于语法的语义 , 但 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 家承诺发布补丁 。 」

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。