傻大方


首页 > 潮·科技 > >

编程|Unicode 算法漏洞“Trojan Source”几乎影响所有编程语言



按关键词阅读: 软件 网络安全 算法 编程

编程|Unicode 算法漏洞“Trojan Source”几乎影响所有编程语言

文章图片


出品|开源中国

作者|罗奇奇
【编程|Unicode 算法漏洞“Trojan Source”几乎影响所有编程语言】11 月 1 日 , 剑桥大学研究人员:Nicholas Boucher 和 Ross Anderson 公布了一个 Unicode 双向算法“bidi”相关的漏洞 , 该漏洞被命名为“ Trojan Source” , 追踪代号   。
bidi 双向算法设计之初是用于处理不同语言的文字排序问题 , 比如将阿拉伯语单词(从右到左阅读)写入英语句子(从左到右) 。 大多数编程语言都允许开发者将 bidi 字符放在字符串文字和注释里边 , 但是 , 注释和字符串需要遵守语法 , Bidi overrides 却不用遵守 。 因此 , 将一段代码使用 Bidi 算法多层 LRI 和 RLI 相互嵌入 , 就可以把其中的字符串任意组合 , 重新排序 。 如果你有足够的时间 , 甚至可以重排一份源代码的字符 , 生成一份新的符合语法规范的代码 。
这对于像 Linux 或 Webkit 这样的超大型开源项目来说并不是一个好消息 。 如果这个漏洞被用于恶意攻击 , 将导致一个很大的问题:审查者看到的代码逻辑很可能和编译器编译出来的程序逻辑不一样 。 来看一下这个 python 的例子:

图一和图二都定义 alice 的值为100 ,并调用同一个函数:将 alice 减去 50, 根据程序逻辑 , 两组程序都应该返回 50 。
但图一插入了 RLI, subtract_funds 函数体的 return 实际上是由于 bidi RLI 覆盖而执行的 , 因此图一的 bank{account _=amount 语句永远也不会执行 , 只会返回 100。
相同的原理也可以应用于其他语言 , 这个漏洞实际上是 Unicode 自身的问题 , 却实实在在地影响到了所有支持 Unicode 的语言 , 包括 C、C++、C#、JavaScript、Java、Rust、Go 和 Python 等一系列流行的编程语言 。
目前 , 研究组已将“ Trojan Source”漏洞通知所有受影响的编程语言组织和软件商 , “ Trojan Source”漏洞报告原文可:

后续发展

  • Rust 收到消息后迅速 , 以解决此问题 。
  • 据  报导 , 软件开发商 Atlassian 迅速了针对 CVE-2021-42574 的安全公告 , 影响了从 Confluence 到 Jira 的一系列产品 , 并通过多个软件更新来解决该问题 。


    稿源:(开源中国)

    【傻大方】网址:http://www.shadafang.com/c/11049431422021.html

    标题:编程|Unicode 算法漏洞“Trojan Source”几乎影响所有编程语言


    上一篇:何同学|最新手机好评TOP10:小米无缘,华为入选,榜首有些意外

    下一篇:用户|摘下滤镜看小红书:社区叙事中的误读与错位