fabriziosalmi/tanstack-compromise-checker
GitHub: fabriziosalmi/tanstack-compromise-checker
针对 TanStack npm 供应链投毒事件的一键式入侵指标检测脚本,可快速排查本地环境和代码仓库是否受 CVE-2026-45321 影响。
Stars: 0 | Forks: 0
# tanstack-compromise-checker
用于检测您的本地计算机和代码仓库中是否存在 TanStack npm 供应链攻击迹象的 Shell 脚本。
**CVE-2026-45321 / [GHSA-g7cv-rxg3-hmpx](https://github.com/advisories/GHSA-g7cv-rxg3-hmpx)**
2026 年 5 月 11 日,攻击者通过 GitHub Actions 缓存投毒,在 42 个 `@tanstack/*` 包中发布了 84 个恶意版本。该 payload 会窃取 GitHub token、npm token、AWS/GCP/Azure 凭证,并安装一个 **dead-man's switch** 守护进程,如果被盗 token 被撤销,该守护进程会清空 `~/` 目录。
## 此脚本检查的内容
| 检查项 | 描述 |
|---|---|
| Dead-man's switch | `~/.local/bin/gh-token-monitor.sh`,LaunchAgent (macOS),systemd unit (Linux),运行中的进程 |
| Token 暴露 | shell 中存在的敏感环境变量(`GITHUB_TOKEN`、`NPM_TOKEN`、`AWS_SECRET_ACCESS_KEY` 等) |
| 仓库扫描 | 扫描根目录下所有 `package.json` 文件中是否存在 `@tanstack/router-*` 系列依赖 |
| 已安装版本 | 对照已知恶意版本列表检查 `node_modules/@tanstack/*` |
**受影响的系列**:`@tanstack/router`、`@tanstack/react-router`、`@tanstack/history`、`@tanstack/start`、`@tanstack/eslint-plugin-router` 及相关包。
**未受影响的系列**(不受影响):`@tanstack/react-query`、`@tanstack/react-table`、`@tanstack/react-virtual`、`@tanstack/form`、`@tanstack/store`。
## 用法
```
# 快速检查(当前用户主目录)
curl -fsSL https://raw.githubusercontent.com/fabriziosalmi/tanstack-compromise-checker/main/check.sh | bash
# 扫描特定目录
bash check.sh --scan-dir /path/to/your/repos
# 扫描 + 自动更新受影响的 repos
bash check.sh --scan-dir /path/to/your/repos --fix
```
## 示例输出
```
━━ 1 / 4 DEAD-MAN'S SWITCH
✔ No dead-man's switch artefacts found
━━ 2 / 4 ENVIRONMENT — TOKEN EXPOSURE
✔ No sensitive tokens exposed in current shell environment
━━ 3 / 4 REPO SCAN — @tanstack/router-* dependencies
✔ No @tanstack/router-* family found in any repo
━━ 4 / 4 INSTALLED node_modules — exact version check
✔ No compromised versions found in installed node_modules
━━ SUMMARY
Passed : 4 Warnings: 0 Failed: 0
✔ Clean — no indicators of compromise detected.
```
## 如果您已被入侵
1. 首先停止守护进程:
- macOS:`launchctl unload ~/Library/LaunchAgents/com.user.gh-token-monitor.plist`
- Linux:`systemctl --user stop gh-token-monitor && systemctl --user disable gh-token-monitor`
2. 删除脚本:`rm -f ~/.local/bin/gh-token-monitor.sh`
3. 撤销并轮换:GitHub token、npm token、AWS/GCP/Azure 凭证、SSH 密钥
4. 查看 GitHub 审计日志:
5. 检查 `~/.aws/credentials`、`~/.kube/config`、`~/.config/gh/hosts.yml`
## 参考
- [TanStack 官方事件复盘](https://tanstack.com/blog/npm-supply-chain-compromise-postmortem)
- [GitHub 安全公告 GHSA-g7cv-rxg3-hmpx](https://github.com/advisories/GHSA-g7cv-rxg3-hmpx)
- [Snyk 分析](https://snyk.io/blog/tanstack-npm-packages-compromised/)
- [Wiz 博客 — Mini Shai-Hulud](https://www.wiz.io/blog/mini-shai-hulud-strikes-again-tanstack-more-npm-packages-compromised)
- [StepSecurity 分析文章](https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem)
- [Orca Security — 160+ 个包](https://orca.security/resources/blog/tanstack-npm-supply-chain-worm/)
标签:API接口, Cutter, CVE-2026-45321, DNS 解析, GHSA-g7cv-rxg3-hmpx, GitHub Token, macOS安全, npm安全, PB级数据处理, Shell脚本, TanStack, URL发现, 供应链攻击, 凭据窃取, 包管理器安全, 安全检测, 安全运维, 库, 应急响应, 应用安全, 死键开关