Axios NPM Supply Chain Attack Post Mortem
事件概述:2026年3月31日,流行的JavaScript HTTP客户端库Axios的两个恶意版本(1.14.1和0.30.4)被发布到npm注册表,通过社会工程攻击获取维护者账户权限,注入了名为plain-crypto-js的恶意依赖,在macOS、Windows和Linux上安装了远程访问木马(RAT)。
影响范围
- 恶意版本存活约3小时
- 攻击者通过针对维护者的社会工程活动获得访问权限
- 恶意版本已从npm移除
检测方法
grep -E "axios@(1\.14\.1|0\.30\.4)|plain-crypto-js" package-lock.json yarn.lock
补救步骤
- 降级到 axios@1.14.0 (或 0.30.3)
- 删除 node_modules/plain-crypto-js/
- 轮换所有密钥、令牌和凭证
- 检查网络日志中是否有到 sfrclak[.]com 或 142.11.206.73:8000 的连接
- 如果是CI运行程序,轮换构建期间注入的任何密钥
⚠️ 重要:如果你的机器受影响,请将该机器视为已入侵处理。
攻击时间线
- 约2周前:针对维护者的社会工程活动开始
- 3月30日 05:57 UTC:plain-crypto-js@4.2.0发布到npm
- 3月31日 00:21 UTC:axios@1.14.1发布,包含plain-crypto-js@4.2.1
- 3月31日 01:00 UTC:axios@0.30.4发布,包含相同恶意代码
- 3月31日 01:00 UTC:社区首次检测到并报告
- 3月31日 01:38 UTC:维护者删除报告问题的issues
- 3月31日 03:15 UTC:恶意版本从npm移除
- 3月31日 03:29 UTC:plain-crypto-js从npm移除
教训与改进
- 发布安全:应使用OIDC流程和不可变发布设置
- 检测能力:当时没有自动化方式检测未授权发布
- 目标风险:高影响力的开源包维护者是复杂社会工程的目标