⚠️ 紧急安全预警
2026年3月30-31日,全球最流行的 JavaScript HTTP 客户端库 axios 遭遇严重的供应链攻击!
攻击者劫持了 axios 主要维护者的 npm 账号,发布了两个恶意版本,悄无声息地在开发者机器上植入跨平台远程访问木马 (RAT)。
axios 周下载量超过 3 亿次,几乎所有 Node.js 项目都在使用,这次攻击的影响面极其广泛。
—
📋 事件概要
| 项目 | 详情 |
| 受影响包 | axios |
| 恶意版本 | axios@1.14.1、axios@0.30.4 |
| 恶意依赖 | plain-crypto-js@4.2.1 |
| 攻击类型 | npm 账号劫持 + 供应链攻击 |
| 攻击载荷 | 跨平台 RAT 木马 |
| 受影响系统 | macOS、Windows、Linux |
| 发现时间 | 2026年3月31日 UTC 零点前后 |
—
🔍 攻击时间线
攻击准备(3月30日早上)
- 攻击者劫持 axios 主要维护者 jasonsaayman 的 npm 账号
- 将账号邮箱改为匿名 ProtonMail 地址
投放诱饵(3月30日晚)
- 发布干净的 plain-crypto-js@4.2.0 建立信任
- 18小时后发布恶意 plain-crypto-js@4.2.1
发动攻击(3月31日零点前)
- 发布 axios@1.14.1 和 axios@0.30.4
- 恶意版本依赖 plain-crypto-js@4.2.1
- 通过 postinstall 脚本植入 RAT
被发现(3月31日)
- 安全公司 StepSecurity 和 Socket 检测到异常
- npm 官方下架恶意版本
—
🦠 恶意载荷分析
macOS
/Library/Caches/com.apple.act.mond
- 伪装成 Apple 系统进程
- C++ 编译的跨平台二进制
- 窃取 SSH 密钥、云凭证、浏览器数据
Windows
%PROGRAMDATA%\wt.exe
- 复制 PowerShell 并隐藏运行
- 通过 VBS 脚本加载恶意载荷
Linux
/tmp/ld.py
—
✅ 如何检查是否中招
1. 检查 axios 版本
# 检查全局安装的 axios 版本
npm list -g axios
# 检查项目中的 axios 版本
cat package-lock.json | grep axios
安全版本:axios@1.14.0、axios@0.30.3 及更早版本
恶意版本:axios@1.14.1、axios@0.30.4 ❌
2. 检查恶意依赖
npm ls plain-crypto-js
如果输出不为空,说明已安装恶意依赖!
3. 检查恶意文件
macOS:
ls -la /Library/Caches/com.apple.act.mond
Windows:
dir %PROGRAMDATA%\wt.exe
Linux:
ls -la /tmp/ld.py
—
🛡️ 紧急处置方案
如果已安装恶意版本
立即降级
npm uninstall axios
npm install axios@1.14.0 --save-exact
删除恶意依赖
rm -rf node_modules
npm install
删除恶意文件(如果存在)
# macOS
sudo rm -f /Library/Caches/com.apple.act.mond
# Windows(管理员权限)
del %PROGRAMDATA%\wt.exe
# Linux
rm -f /tmp/ld.py
立即轮换所有凭证
- SSH 密钥
- API 密钥
- 云服务商凭证 (AWS/GCP/Azure)
- 数据库密码
- npm tokens
如果未安装恶意版本
锁定 axios 版本
// package.json
{
"dependencies": {
"axios": "1.14.0"
}
}
确保 lockfile 提交到 Git
git add package-lock.json
git commit -m "chore: lock axios to safe version"
近期不要升级 axios,等官方确认安全后再更新
—
🔐 防范供应链攻击的最佳实践
1. 使用锁定文件
- 始终提交 package-lock.json 到 Git
- CI/CD 使用 npm ci 而不是 npm install
- 启用冻结模式 npm install –frozen-lockfile
2. 精确版本锁定
// 使用精确版本号,不要用 ^ 或 ~
{
"dependencies": {
"axios": "1.14.0"
}
}
3. 使用私有 npm 仓库
- 部署 Artifactory、Nexus、Verdaccio
- 配置白名单策略
- 拦截可疑包
4. 启用 npm 审计
npm audit
npm audit fix
5. 轮换为短生命周期 Token
- 不要使用长期有效的 npm token
- 使用 OIDC 发布证明
—
📊 影响评估
axios 是 JavaScript 生态中最流行的 HTTP 客户端库之一:
- 周下载量:3 亿次+
- 依赖项目:数百万个
- GitHub Stars:10万+
- 使用场景:几乎所有 Node.js 和前端项目
即使恶意版本只存在了几小时,在这期间执行 npm install 的开发者都可能中招。
—
📰 相关 CVE
此次攻击本身不是 axios 代码漏洞,而是维护者账号被劫持。但 axios 之前也有其他 CVE:
| CVE | 版本范围 | 严重程度 | 问题 |
| CVE-2025-27152 | 1.0.0 - 1.8.1 | 高 | SSRF 和凭证泄露 |
| CVE-2023-45857 | <=0.29.0, 1.0.0-1.8.1 | 高 | CSRF 漏洞 |
—
💡 总结
这次 axios 投毒事件再次敲响了供应链安全的警钟:
- npm 生态信任链脆弱 - 维护者账号是单点故障
- 攻击检测窗口极短 - 恶意版本存活不到24小时
- 影响范围巨大 - 开发者机器上有大量敏感凭证
- 防护手段有限 - 只能靠版本锁定和最小权限
立即检查你的项目,确保 axios 版本安全!
—
🔗 参考来源:
- GitHub Security Advisory
- StepSecurity 分析报告
- Socket 检测报告
- npm 官方公告
📅 更新时间:2026年4月1日