知名开源HTTP客户端库axios近日遭遇严重供应链安全事件。攻击者通过劫持axios核心维护者的npm账户,发布了两个恶意版本(1.14.1和0.30.4),在数百万下载量的开源包中植入了跨平台远程访问木马(RAT)。网络安全公司StepSecurity第一时间发现并披露了这一攻击。
![]()
据介绍,此次攻击展现了极高的专业性和预谋性。攻击者首先劫持了一位axios核心维护者的npm账户,将其邮箱修改为ProtonMail匿名地址,绕过正常的GitHub Actions CI/CD流程,直接使用npm CLI手动发布了恶意版本。
与常见的直接篡改源代码不同,攻击者采用了更为隐蔽的依赖注入方式。恶意版本中新增了一个看似正常的依赖包plain-crypto-js@4.2.1,该包在axios源码中从未被引用,其唯一功能是通过postinstall脚本在安装时执行恶意代码。这种"影子依赖"技术使得代码审计难以发现异常,因为axios本身的代码是干净的。
攻击者构建了针对macOS、Windows和Linux三个主流平台的定制化载荷。安装恶意版本后,脚本会检测操作系统类型,从远程命令控制服务器下载对应的第二阶段攻击载荷。
在macOS上,木马使用AppleScript作为投递机制;Windows版本则结合VBScript和PowerShell;Linux平台采用Python脚本。这种跨平台设计表明攻击者并非临时起意,而是具备充足资源和技术能力的组织化行为。
更令人警惕的是,攻击者在部署恶意依赖包时展现了出色的操作安全意识。plain-crypto-js在axios恶意版本发布前18小时就已上传至npm,此举可规避安全扫描器中"新发布可疑包"的检测规则。两个主要版本分支(1.14.1和0.30.4)在39分钟内接连被攻破,时间配合精准。
恶意脚本的执行流程体现了高度的反取证设计。载荷运行后,木马会立即删除自身痕迹,并将package.json文件替换为干净的"诱饵"版本。这意味着开发者在事后检查node_modules目录时,几乎不可能发现任何异常——目录结构看起来完全正常,仿佛什么都没有发生过。
StepSecurity通过其Harden-Runner运行时监控工具,成功捕获了完整的攻击链。监控数据显示,恶意脚本确实与外部C2服务器建立了网络连接,确认了远程控制功能的实际激活。
axios是npm生态系统中下载量排名前十的包,每周下载量超过5000万次。这两个恶意版本在被下架前已有一定数量的下载,具体影响范围仍在评估中。
npm官方和axios维护团队已在接到披露后紧急下架了相关版本。安全专家建议:
- 立即检查项目中axios版本号,如安装过1.14.1或0.30.4,应假设系统已受感染
- 回退至安全版本(1.14.0或0.30.3)
- 对受影响的开发环境和服务器进行完整的安全审计
- 轮换所有可能暴露的敏感凭据
参考来源:
- https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan
- https://github.com/axios/axios/issues/10604