APP下载

研究揭露新的木马源攻击,可于开源程式码中注入不可见的安全漏洞

消息来源:baojiabao.com 作者: 发布时间:2024-11-25

报价宝综合消息研究揭露新的木马源攻击,可于开源程式码中注入不可见的安全漏洞

photo by Irvan Smith on unsplash

两名来自剑桥大学的研究人员Nicholas Boucher与Ross Anderson,在本周揭露了一个藏匿在统一码(Unicode)中的安全漏洞,此一编号为CVE-2021-42574的漏洞,将影响所有支援Unicode的程式语言,目前已确定受到波及的涵盖了C、C++、C#、JavaScript、Java、Rust、Go与Python等,推测可能也有其它受害的语言。该漏洞将允许骇客于开源码中、注入人类程式码审查员看不见的安全漏洞,因而被研究人员称为木马源(Trojan Source)攻击。

国际化的文字编码必须同时支援由左到右、以及由右到左的文字,前者像是英文与俄文,后者则有希伯来文或阿拉伯文,当以不同的显示排序来混合脚本时,则必须解决方向的冲突,Unicode所采用的算法称为“双向”(Bidirectional,Bidi)。

在某些情况下,光由双向算法来设定排序是不够的,因而可透过覆盖控制字元来解决,这是个不可见的字元,可用来切换字元组的显示排序。

于是,当骇客于开源码中嵌入不可见的控制字元时,程式码中的字元排序与它真正执行时是不同的。例如透过执行一个看起来像是在注释中的return语句,来造成功能短路;或者是让一个注释看起来看是程式码,但它并不会被执行;也能让字串的部分看起来像是程式码,但它们其实属于不会被执行的字串。

研究人员表示,迄今有心人士若要在开源码中嵌入漏洞,通常是在晦涩的程式码中插入一个不显眼的错误,然而,重要的开源码专案通常会有人类审查员来审核程式,CVE-2021-42574却可让人类审查员看不见漏洞的存在。建议支援Unicode的编译器、直译器或建置管道,应该要在注释与字串中出现未关闭的Bidi控制字元或混淆字元时,显示错误或警告;而程式语言的规范则应直接禁止于注释或字串中,写入未关闭的Bidi控制字元。

这两名研究人员已在99天之前,就将漏洞提报给19个相关组织,包括Unicode、红帽、Atlassian及Rustc等,Unicode亦已于今年9月发布的Unicode 14改善了Bidi的规则。

2021-11-02 16:51:00

相关文章