账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
看木马程式如何潜入程式码中?
简单的复制贴上就可能产生资安危机!

【作者: 叡揚資訊資訊安全事業處】2022年08月11日 星期四

浏览人次:【19785】

2021年11月初,剑桥大学发布了名为「Trojan-source」的研究。这项研究的重点是如何利用定向格式化字元(directional formatting characters)将後门隐藏在程式码与注解中,使程式码被恶意编码,而编辑器对这些程式码的逻辑判断解释与人工审查程式码的解读方式不同。


这是一个新的漏洞,尽管Unicode在过去曾被恶意使用,例如「reversing the direction of the last part of a filename」,意即反转文件档名的最後一部分,来隐藏该文件的真实名称。


最近的研究显示,许多编辑器会在没有警告的情况下,忽略程式码中的Unicode字元,而文本编辑器(包括程式编辑器)亦可能在这个基础上重新排列包含注解及程式码的顺序。因此,编辑器可能会以不同的方式显示程式码与注解,并以不同的顺序呈现编辑器如何解析它甚至将程式码与注释进行互换。


Bidirectional text双向文本

其中一种木马程式源的攻击,利用Unicode Bidi算法将显示顺序不同的文本放在一起,如英语(从左到右)和阿拉伯语(从右到左)。定向格式化字元可以用来重新组织分组和显示字元的顺序。



图一
图一

由图表一可看到一些运用Bidi覆盖字元进行攻击的例子,举例如下:


RLI e d o c PDI


缩写 RLI 是指从右到左进行区隔,它将本文与其上下文以 Pop-Direction-Isolate(PDI)隔开,并从右到左进行阅读,使得结果如下:


c o d e


然而,编辑器与直译器在解析程式码之前,通常不会处理格式化控制字元,包括Bidi overrides,因此,如果他们忽略定向格式化字元,他们将会解析成下方所示:


e d o c


新瓶装旧酒?

当然,这并非什麽新鲜事,过往在档名中??入定向格式化字元,以掩盖其恶意的性质。如果不是因为出现了RLO(从右到左的区隔)字元,显示了真正的名称是「myspecialcod.exe」,否则显示为「myspecialexe.doc」的电子邮件附件看起来似??没有问题。


木马程式码攻击那些在程式中已存在的注解与字元串,并在其中??入定向格式化字元,因为这些不会产生任何语法或编译的错误。这些控制字元改变了程式的逻辑显示顺序,导致编辑器读取的内容与人工解读时完全不同。例如,依顺序呈现字元的文件:



图二
图二

若加入了定向格式化字元,重新排序如下:



图三
图三

如果没有明确的使用定向格式化字元,将导致程式码被更改为下图列:



图四
图四

而且在最後一行,RLO将注解的结尾符号「 */ 」更改为「 { 」,反之亦然。如此更改的结果将变成「你是一位管理员」,而管理员检查被注解掉了,但控制字元却让人觉得它还存在。[1]


这将会产生什麽影响?

许多语言都容易受到这种攻击,例如:C、C++、C#、JavaScript、Java、Rust、Go以及Python,甚至更多。现在,一般的开发人员看到程式码中的定向格式化字元或许会皱眉头,然而新手可能只会耸耸肩,觉得没什麽。此外,这些字元的视觉化多半取?於整合开发环境(Integrated Development Environment;IDE),所以不能保证它们会被发现。


不过,这个漏洞是如何在一开始便潜入程式码呢?这可能发生在起初就使用来源不可靠的程式码,其已经隐含了恶意程式码却没有被注意到。其次,它可能藉由从网路上搜寻到的程式码,进行简单的复制、贴上所导致,多数开发人员以前都做过这种事情。许多组织依赖来自多个软体供应商的套件,这就出现了一个问题,我们能够完全信任及依赖这些程式码到何种程度呢?我们又该如何才能筛选出含有隐藏後门的程式码?


这是谁的问题?

一方面,编辑器和build pipelines应该禁止程式码行具有多个方向,除非我们能在字元串及注解中限制一个方向。请注意,如果未跳出字元串或注解中未被凸显定向格式化字元,则可以将方向更改扩展到程式行尾。


一般来说,程式编辑器应该明确地呈现及凸显可疑的Unicode字元,例如同形字及定向格式化字元。自2021年11月起,GitHub为每一行包含双向Unicode文本的程式码,加注警告标示与讯息,但它没有凸显这些字元在程式行中的位置,这还是可能导致恶意程式改变其方向并伪装成好的字元潜入程式码中。


开发人员和程式码审查人员的资讯安全意识是不可或缺的,这也是为何我们需要一套有效的学习平台,以进行该漏洞的演练。目前针对该漏洞的攻防演练适用於Java、C#、Python、GO和PHP。


(本文由??扬资讯资讯安全事业处提供)


资料来源


[1] https://github.com/nickboucher/trojan-source/blob/main/C%23/commenting-out.csx


[2] https://www.securecodewarrior.com/blog/what-is-trojan-source


相关文章
为什麽资讯科技服务管理越来越重要?
comments powered by Disqus
相关讨论
  相关新闻
» 研华AIoV智慧车联网解决方案 打造智慧交通与商用车国家队
» 资策会MIC 37th春季研讨会即将登场 聚焦AI主轴探讨趋势
» MSI於2024 NAB Show展示媒体及娱乐产业适用的GPU伺服器
» 鼎新电脑串连生态系夥伴 数智驱动智慧低碳未来制造
» 微星科技携手Discovery推动世界地球日


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK84K0Y7VL2STACUKO
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw