
Axios npm包遭恶意注入事件分析
事件概述
安全研究机构 StepSecurity 报告称,主流 JavaScript 库 Axios 的两个 npm 版本(axios@1.14.1 和 axios@0.30.4)被植入远程控制木马。攻击者通过劫持核心维护者账号,注入恶意依赖包,导致开发者安装时自动执行恶意脚本。
攻击手段与过程
- 账号劫持:黑客非法获取 Axios 核心维护者
jasonsaayman的 npm 账号,将绑定邮箱替换为匿名的 ProtonMail,绕过正常的 GitHub Actions 自动化流程,手动发布被污染版本到 npm。 - 虚假依赖包注入:未直接修改 Axios 源码,而是通过注入虚假依赖包
plain-crypto-js@4.2.1实现攻击。该包在 Axios 中从未被引用,仅通过postinstall脚本在安装时触发恶意代码执行。 - 伪装策略:攻击者提前 18 小时发布
plain-crypto-js@4.2.0(干净版本)打掩护,随后在 4.2.0 基础上发布恶意的4.2.1版本,避免被安全工具识别为“全新可疑包”。
恶意代码行为
当开发者执行 npm install axios 时,plain-crypto-js@4.2.1 被自动安装,触发 postinstall 脚本执行 setup.js,核心恶意行为包括:
- 连接远程服务器:下载隐藏的恶意程序(如
wt.exe、ld.py等)。 - 系统隐藏执行:
- macOS:下载程序到
/Library/Caches/com.apple.act.mond,伪装系统文件后台运行。 - Windows:通过
where powershell定位路径,复制到%PROGRAMDATA%\wt.exe,伪装为终端程序运行隐藏脚本。 - Linux:通过 Node.js 的
execSync执行/tmp/ld.py,并以nohup后台运行。
- macOS:下载程序到
- 自我清理:攻击完成后删除
setup.js和package.json,用纯净版本替换,掩盖痕迹。
防范与应对措施
- 检测方法:
- 执行
npm list axios检查 Axios 版本。 - 检查
node_modules/plain-crypto-js是否存在异常依赖。
- 执行
- 应急处理:若设备感染,需重装系统,更换 npm token、云服务密钥、SSH Key 等凭证,并检查 CI/CD 流水线。
核心教训
攻击者利用 npm 生态中开发者对核心包维护者的信任,通过账号劫持和虚假依赖包绕过安全检测,暴露了开源生态中“单一维护者”和“依赖注入”的安全风险。建议开发者关注依赖包的来源和完整性,及时更新工具链并加强凭证管理。
一站式数字化解决方案服务商 —— 专业提供软件开发、网站设计、APP 与小程序开发,搭载低费率支付通道,结合创意广告设计,助力企业全链路数字化升级。
- 使用本网站请联系客服
- 点击关注微信公众号:乐鱼网络
- 点击-在线客服