2026 年 3 月 31 日,axios 的 npm 发布账号遭到劫持,两个恶意版本被推送到 npm:
axios@1.14.1axios@0.30.4
这两个版本会在安装时悄悄植入一个跨平台远程访问木马(RAT),macOS / Windows / Linux 全中 ,且事后 npm audit 和 npm list 均无任何异常输出。
恶意版本虽已下架,但已感染的机器仍在运行中。
谁可能中招?
只要你在 2026-03-31 00:21 ~ 03:15(UTC) 这个窗口内执行过 npm install,且拉取到了上述版本,你的 小龙虾🦞、开发机或 CI/CD 服务器就可能已经沦陷。
axios 是几乎所有 JS 项目都会安装的基础库(每周下载量超 1 亿次),泄露的 Claude Code 源码也在用。
为什么小龙虾可能中招?
小龙虾(OpenClaw)是一个基于 Node.js 的桌面应用。和所有 JS 项目一样,它有自己的 node_modules,其中大概率依赖了 axios 或某个间接依赖了 axios 的包。
感染的时机不需要你主动做什么。只要满足以下任意一条:
- • 在中毒窗口期内更新过小龙虾(
npm install/npm update) - • 小龙虾的某个依赖在窗口期内触发了 CI/CD 构建并拉取了恶意版本
- • 你在同一台电脑上的任何其他 JS 项目 执行过
npm install,拉到了恶意的 axios
RAT 是落在操作系统层面 的(/Library/Caches/com.apple.act.mond / %PROGRAMDATA%\wt.exe / /tmp/ld.py),而不是藏在某个项目的 node_modules 里。一台机器上任意一个项目被感染,整台机器就算沦陷。
所以即便你的小龙虾本身没问题,同一台电脑上其他项目中招,后果是一样的。
立即排查
把下面这段提示词直接丢给小龙虾(OpenClaw),让它帮你扫一遍当前电脑:
bash
参考下面这个方法排查一遍我们的环境是否存在被投毒的 axios@1.14.1 与 axios@0.30.4,及恶意模块 plain-crypto-js,不能漏,确保排查全面:
# Step 1:检查项目中是否存在恶意 axios 版本
npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"
grep -A1 '"axios"' package-lock.json | grep -E "1\.14\.1|0\.30\.4"
# Step 2:检查 node_modules 中是否存在 plain-crypto-js
# 该目录存在即说明投放器已执行,无论其 package.json 里显示什么版本
ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENTIALLY AFFECTED"
# Step 3:检查各平台 RAT 落地文件
# macOS
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null && echo "COMPROMISED"
# Linux
ls -la /tmp/ld.py 2>/dev/null && echo "COMPROMISED"
# Windows(cmd.exe)
dir "%PROGRAMDATA%\wt.exe" 2>nul && echo COMPROMISED
发现问题怎么办?
降级 axios 并重装依赖:
bash
# 1.x 用户
npm install axios@1.14.0
# 0.x 用户
npm install axios@0.30.3
# 清除恶意依赖,用 --ignore-scripts 重装(禁止 postinstall 钩子执行)
rm -rf node_modules/plain-crypto-js
npm install --ignore-scripts
⚠️⚠️如果发现了 RAT 文件(COMPROMISED)⚠️⚠️:
视该机器为完全沦陷,不要原地清除。需要立即轮换所有曾在这台机器上使用过的凭据:npm token、SSH 私钥、云账号 Access Key、CI/CD Secret、.env 文件里的所有敏感值。
参考
原始披露报告:StepSecurity --- axios Compromised on npm(www.stepsecurity.io/blog/axios-...