DLYZZT/axios-version-scanner
GitHub: DLYZZT/axios-version-scanner
针对 axios npm 供应链投毒事件的磁盘级版本扫描工具,帮助快速定位受感染项目并提供应急响应指引。
Stars: 0 | Forks: 0
# axios-version-scanner
[中文](README_zh.md)
一个用于检测涉及 **2026 年 3 月 axios 供应链攻击事件** 的恶意 npm 包的安全工具。
## 背景
2026 年 3 月,有三个 npm 包被确认为恶意软件:
| 包名 | 恶意版本 | 安全版本 |
|---|---|---|
| `axios` | `1.14.1` | `1.14.0` |
| `axios` | `0.30.4` | `0.30.3` |
| `plain-crypto-js` | `4.2.1` | — |
这些包包含一个后门,会与 C2 域名 `sfrclak.com`(IP `142.11.206.73`)进行通信。如果您的项目中存在这些版本中的任何一个,请将其视为已被入侵。
## 环境要求
- Python 3.10+
- 无外部依赖 — 仅使用标准库
## 用法
```
# 扫描当前目录
./scan_axios_versions.py .
# 扫描主目录
./scan_axios_versions.py ~
# 扫描多个根目录
./scan_axios_versions.py /Users /Volumes/work
# JSON 输出(用于编程用途)
./scan_axios_versions.py . --json
# 隐藏摘要
./scan_axios_versions.py . --no-summary
# 跳过特定目录
./scan_axios_versions.py . --skip-dir node_modules
./scan_axios_versions.py . --skip-dir node_modules --skip-dir vendor
```
如果未指定根目录,扫描器将默认使用 `/`(扫描整个文件系统)。
## 输出
默认输出为制表符分隔格式,并包含表头行:
```
risk package version source path
MALICIOUS axios 1.14.1 package-lock:packages /app/package-lock.json
SAFE_REF axios 1.14.0 package.json:dependencies /app/package.json
```
**风险值:**
| 值 | 含义 |
|---|---|
| `MALICIOUS` | 已知被入侵版本 — 需立即调查 |
| `SAFE_REF` | 已知安全版本 — 无需处理 |
| `UNKNOWN` | 版本不在已知恶意/已知安全列表中 |
摘要信息(输出到 stderr)会显示总命中数、恶意命中数,以及每个包检测到的所有版本。
## 扫描的文件类型
扫描器在遍历目录时会读取以下文件:
- `package.json`
- `package-lock.json`
- `npm-shrinkwrap.json`
- `pnpm-lock.yaml`
- `yarn.lock`
- `node_modules//package.json`
## 事件响应
如果发现 `MALICIOUS` 命中:
1. **切勿**在生产环境中运行受影响的应用程序。
2. 立即移除或降级恶意包(执行 `npm install axios@1.14.0` 或类似命令)。
3. 审计您的系统中是否存在 C2 活动迹象:
- 指向 `sfrclak.com` 或 `142.11.206.73` 的出站连接
- 被异常释放到临时目录或用户主目录的文件
4. 轮换受影响进程有权访问的所有密钥(API 密钥、令牌、凭据)。
5. 检查您的 CI/CD 流水线,查找是否已被入侵的痕迹。
## 许可证
MIT
标签:axios, DNS 解析, GPT, Node.js安全, npm安全, plain-crypto-js, Python, 依赖项检查, 动态分析, 后门检测, 命令与控制(C2), 库, 应急响应, 恶意软件扫描, 无后门, 漏洞管理, 磁盘扫描, 网络信息收集, 网络安全, 隐私保护