近期,Phylum检测到数十个新发布的Pypi软件包执行供应链攻击,在这些软件包中,通过隐藏的__import__将窃取程序投递到开发人员的机器上。攻击者利用代码审核者所使用IDE默认的不换行代码显示设置隐藏自身的行为与载荷,本文将就其中出现的供应链攻击技术及其演进进行分析。
组织名称:未知
相关工具:W4SP
战术标签:初始访问
技术标签:开源代码仓库 源代码投毒
情报来源:https://blog.phylum.io/phylum-discovers-dozens-more-pypi-packages-attempting-to-deliver-w4sp-stealer-in-ongoing-supply-chain-attack
一、攻击技术分析
亮点:巧妙隐藏于在代码行末的载荷
1.攻击者在setup.py文件中通过命令执行安装原版的库。
2.攻击者将本应写在requirements.txt中的依赖库在代码中直接使用命令进行安装,将自身隐藏在正版库身后。在这段代码的末尾,攻击者植入了恶意代码片段。
3.攻击者用分号将恶意代码片段串联成一行放于行末,展开如下:
4.被植入的代码在安装脚本中从远端拉取Python脚本,并利用pythonw.exe执行,以实现在不打开控制台窗口的前提下,静默执行恶意代码。
5.可能是由于基于URL的检测技术的应用,攻击者改进了攻击方式。在改进后的版本中,攻击者将有效载荷的数据直接存放在代码文件中。利用IDE一般以不换行格式查看的特点,将有效载荷藏匿于正常代码中。
6.攻击者声称代码被Hyperion混淆,实际上代码文件已经被植入了有效载荷。
7.攻击者利用分号将恶意代码隐藏在合法代码的行末。有效载荷被分装为14个压缩字节对象,这些对象通过后续的调用,解压后以某种指定的顺序保存为文件,最终完成W4SP窃取程序的组装与落地。
在先前的供应链攻击中,攻击者往往通过在代码文件中植入载荷下载代码等完成攻击。但在本次事件中,攻击者通过将有效载荷分段隐藏在行末,并利用代码进行组装落地。一方面,由于IDE的特性,这种形式的代码不容易被发现;另一方面,通过执行代码拉取远端植入了载荷的代码,在本地执行时组装落地,降低了被检测的几率。
二、小结
引入开源组件降低开发成本已是当前主流的开发方式,但开源社区的开放性与有限的维护资源,导致恶意代码注入的攻击可被实施,用于突破企业防御边界。供应链攻击近年来热度居高不下,对供应链代码的安全检验也逐渐受到重视。
在现网攻击中,在供应链上的利用也逐渐增多。PyPI、npm等常用开源软件生态系统作为供应链攻击的高发区,在使用时要格外注意代码安全性。在本次事件中,攻击者利用代码文件不换行执行的特点,将恶意载荷隐藏在代码行末,不易被发现。若未及时发现,将导致使用该开源代码库的下游软件都被植入恶意载荷,这对于供应链代码安全审计与检测提出了更高的要求。
传统的SCA检测工具针对软件供应链的安全防护略显乏力,但UniSCA作为一款专业的软件供应链安全管理平台,可以有效监测在供应链上的0day漏洞,第一时间做出有效防御。