Axios 作为周下载超亿次的前端最主流 HTTP 请求库,于 2026年3月30日 被曝出 npm 上两个恶意版本:axios@1.14.1 和 axios@0.30.4 ,属于极高危供应链攻击。
核心攻击方式
- 维护者账号被盗 攻击者盗取 axios 核心维护者 npm 账号,直接绕过官方 CI/CD 流程发布恶意版本,无合法 Git 提交与 OIDC 校验,肉眼极难区分真伪。
- 植入幽灵依赖 两个恶意版本仅修改
package.json,偷偷加入依赖 plain-crypto-js@4.2.1 ,该包在 axios 源码中完全没有被引用 ,唯一作用就是触发postinstall安装钩子。 - 跨平台 RAT 远控木马
plain-crypto-js自带混淆后的恶意脚本setup.js,安装时自动执行:
- 识别 macOS / Windows / Linux 系统
- 连接攻击者 C2 服务器
sfrclak.com:8000下载对应 payload - 窃取本地密钥、SSH、云凭证、环境变量等敏感信息
- 极强反侦察能力 木马执行后会自我删除,并把
package.json替换成干净版本,npm list会显示正常版本号,事后检查几乎无痕迹。 唯一判断依据 :node_modules/plain-crypto-js目录存在即代表已中招。
受影响版本
- 有毒:
axios@1.14.1、axios@0.30.4、plain-crypto-js@4.2.1 - 安全:
axios@1.14.0、axios@0.30.3
前端自查命令
bash
# 检查是否安装恶意版本
npm list axios | grep -E "1\.14\.1|0\.30\.4"
# 检查是否存在恶意依赖目录
ls node_modules/plain-crypto-js
紧急修复步骤
- 降级回安全版本
perl
npm install axios@1.14.0
# 旧版用户
npm install axios@0.30.3
- 在
package.json锁定版本,防止依赖升级 - 删除恶意目录:
rm -rf node_modules/plain-crypto-js - CI/CD 构建建议加上
--ignore-scripts禁用安装钩子 - 若机器已执行恶意包,立即轮换所有密钥与凭证,必要时重装环境
高危提醒
该攻击精准度极高、隐蔽性极强,从安装到外联控制仅需数秒,前端项目、本地开发机、CI 流水线均存在泄密风险,务必尽快排查。