知名开源库 Vant 和 Rspack 被注入挖矿代码!简单分析下攻击者的攻击手段

3,703 阅读2分钟

就在今天,2024.12.19,开源 UI 组件库 Vant 新增一条 issue,报告其 npm 包被注入了恶意挖矿代码!引发社区激烈讨论 github.com/youzan/vant… 1.png 经过排查,Vant 团队发现是其一名成员的 token 被盗用, github.com/youzan/vant… 攻击者盗用 token 并注入恶意挖矿代码 2.png

与此同时,另一开源库 -- 打包工具 Rspack,也被发现存在同样漏洞 github.com/web-infra-d…

目前 Vant 与 Rspack 团队已经紧急修复此问题,废弃受攻击版本并重新发布最新安全版本。

如果你的代码里使用了上述库,请务必检查是否是存在漏洞的版本。

分析下攻击者的攻击手段

虽然 Vant 团队已经修复此问题,不过我们仍然可以在 npm 历史版本看到具体的异常代码版本:

3.png (刚进来就是醒目的安全问题警告,千万不要把有漏洞的版本安装到你的电脑上!!)

通过查看代码,可以分析出攻击者是如何让下载 npm 包的受害者执行挖矿程序的:

查看该包的 package.json 文件,发现 script 中多了一个脚本 postinstall,无论是之前没有漏洞的版本或是已经修复的版本,这个脚本都不存在,可以确定这段代码就是攻击者恶意加入的。

4.png

postinstall 是一个 npm 生命周期钩子,顾名思义,这个钩子会在开发者安装包 ( npm install ) 后执行,如果一个不知情的开发者安装了有漏洞的包,就会自动执行 node lib/utils/support.js

那么非常显然,lib/utils/support.js 内存放的就是攻击者预先写好的恶意代码,我们进入到该文件中继续分析:

5.png

可以看到该文件已经经过混淆,短时间内很难完全理清其中的逻辑

不过,不知道是攻击者技术不够还是自卖破绽,代码里留下了很多没有混淆的有意思的信息。

通过全局搜索 http,首先发现了一个 github release 链接 6.png 对应的是开源挖矿程序 XMRig

那么这段代码就是在把 XMRig 下载到受害者的电脑上,准备用受害者的 CPU / GPU 挖矿

8.png

还发现另外一个 ip 地址,估计就是攻击者自己的服务器或者是代理。

10.png

有意思的是这里有一个 renameSync 的函数调用,有一个参数是 tmp/vant_helper 。看样子攻击者是在重命名挖矿程序的文件夹,伪装成 Vant 的官方代码。

至于另外一个库 Rspack 的攻击,也是同一攻击者所为。我已经帮各位看过了,Rspack 库受攻击版本的恶意代码文件是和 Vant 库完全一致的,攻击者甚至没有修改里面关于 Vant 的代码,直接复制放到了 Rspack 的 npm 包里🧐