数据中台|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 收到消息后迅速 , 以解决此问题 。
- 【数据中台|Unicode 算法漏洞“Trojan Source”几乎影响所有编程语言】据 报导 , 软件开发商 Atlassian 迅速了针对 CVE-2021-42574 的安全公告 , 影响了从 Confluence 到 Jira 的一系列产品 , 并通过多个软件更新来解决该问题 。
- text|《2021大数据产业年度创新技术突破》榜重磅发布丨金猿奖
- 酷睿处理器|关键数据出炉,京东比阿里差远了
- 财智干货|数智化发展任重道远,财务中台提升数据服务价值 | 大数据
- 央媒表态后,联想关键数据出炉,柳传志这回要扳回一局?
- 数据库|OPPO悄悄上新机,骁龙8核+5000mAh电池,256G仅售1599元
- 数据仓库|红米真我moto三款骁龙870手机对比:2000元以内,谁更值得买?
- 中文|爱数智慧CEO张晴晴:基于”情感“的人机交互,要从底层数据开始
- B费全场数据:2次射正打入2球,3次抢断、1次拦截
- iPhone|东芝NAS硬盘N300系列+ORICO硬盘柜=“数据保险柜”
- 数据库|丁磊致歉“鱼眼观察”作者并回应:已撤回删稿函