行业新闻

攻击技术研判|见微知著,NPM软件包供应链攻击赏析

攻击技术研判|见微知著,NPM软件包供应链攻击赏析

情报背景

近日ReversingLabs的工作人员在Node.js的开源包管理器NPM的在线存储库中发现了含有恶意代码的第三方软件包,该恶意代码通过部署后门达到窃取用户浏览器中保存的账户密码的目的。

在本篇研判中,我们将通过对本次供应链攻击事件的分析,揭秘利用NPM存储库投递恶意代码的攻击手法,对公共软件包存储库可能存在的安全隐患进行思考。

组织名称

暂无

战术标签

初始访问 执行 权限维持

技术标签

供应链攻击、NPM劫持、nodejs服务创建

情报来源

https://blog.secure.software/groundhog-day-npm-package-caught-stealing-browser-passwords

攻击技术分析

亮点一:滥用NPM包安装配置文件实现命令劫持

攻击者通常将恶意软件包名称伪装为其他更为流行的软件包诱导受害者进行下载与执行。而在本次供应链攻击事件中,攻击者采取了滥用NPM安装配置文件的方法来对jstest软件包进行劫持。jstest是一个跨平台的JavaScript测试框架,在开发者当中具有相当的流行度。

NPM包管理器通过创建符号链接的方式将命令添加到PATH中,两种安装模式会在不同位置创建符号链接:全局模式将会符号链接安装至安装路径下的prefix/bin中,本地安装模式则会创建于./node_modules/.bin/中。

1627888398_61079b0eb934a0e7ca264.jpg?1627888398821NPM包的package.json配置文件中包含了“bin”字段,该字段说明了命令与文件路径的对应关系。如上图,该配置文件指明jstest命令所对应的二进制位置是该恶意软件包中包含的“./bin/jstest”文件。在本地安装模式中,即便jstest命令已存在,仍会在无需用户二次确认的情况下覆盖原有链接文件,实现对该命令的劫持。一旦用户在命令行中执行jstest命令,软件包中的恶意代码将以与用户相同的权限被执行。用户通常在命令行中使用jstest测试工具是攻击者选择命令劫持这种方式的主要原因。

亮点二:滥用node.js创建服务实现权限维持

在成功完成命令劫持之后,攻击者通过将恶意软件包中的lib/test.js文件安装为系统服务来实现权限维持的目的。1627888430_61079b2e4f0b89950ab57.png?1627888430810

此处攻击者利用了第三方库node-windows来完成服务创建的操作,该第三方库的主打功能是将node.js脚本作为Windows服务执行,并且支持指定nodejs执行参数。

攻击者并未对此部分代码未作太多修改,与示例代码差别不大,但值得注意的是该恶意服务的uninstall函数的实际操作依然是将恶意脚本再次执行而非真正卸载,这导致用户将无法通过正常方式直接卸载该服务。

1627888457_61079b4955d4c54b1088a.png?1627888457594

缺陷:软件包中的测试文件泄露攻击者凭据信息

攻击者利用NirSoft出品的浏览器密码恢复工具ChromePass工具实现用户密码的窃取。该工具本身并非恶意软件,但因可从命令行启动导出,并导出chrome中保存的用户名与密码的能力被攻击者滥用。

1627888475_61079b5b64ca0b3039934.png?1627888475628

命令行方式执行,导出chrome中保存的用户名与密码到单文件。

1627888496_61079b709dc76f523165b.png?1627888496837

攻击者因为疏漏将其在个人电脑测试该工具而导出的密码文件上传至repo,并以文本文件“a.txt”的形式包含在了1.1.1与1.1.2版本的发布中。

1627888516_61079b8445fb059bec6b6.png?1627888516494

该文件包含了攻击者个人主机中从2020年3月20日到2020年12月2日的282个登录凭据,包括用户名、密码与登录网址。

总结

本次事件是基于开源软件公共软件包存储库的供应链攻击的典型案例,攻击者利用开发者对与第三方开源软件包的盲目信任,部署窃取用户信息的后门木马。

本次基于NPM的供应链攻击事件具有以下特点:

1. 门槛低:任何注册了NPM账号的用户都可以上传发布自己开发的软件包,缺乏必要的审核措施

2. 数量大:虽然有恶意软件举报机制,但高达130万个三方软件包的托管量导致缺乏有效及时的监管方法

3. 少意识:开发者仅关注功能需求,缺乏对第三方库的源码加以甄别的安全意识与能力,随意地安装测试

这些因素共同提升了恶意代码通过NPM软件包被引入项目的风险。

经过多年的实网攻防对抗的磨练,各家厂商对于外部的威胁无不秣马厉兵、枕戈待旦。但自solarwinds事件开始,供应链攻击似乎越来越成为一种潜在的攻击趋势,隐匿而致命地由内部击破安全防线。在这种大环境下,如何有效地防范这种针对开发人员的供应链攻击手段,是所有安全工作者应当思考的。

关闭