一键式供应链攻击扫描器,针对 CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx
检测在2026年5月11日危害了42个@tanstack/* npm包(84个恶意版本)的"Mini Shai-Hulud"蠕虫。
# 一行命令——扫描你的项目
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash
# 扫描指定目录
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash -s -- /path/to/project
# 下载并直接使用
git clone https://github.com/Caixa-git/tanstack-shield.git
cd tanstack-shield
python3 tanstack-shield.py .
在 2026年5月11日,一名攻击者串联了三种已知的漏洞类别——pull_request_target(Pwn Request)配置错误、GitHub Actions缓存投毒以及OIDC令牌内存提取——在TanStack的可信npm身份下发布了 42个@tanstack/*包的 84个恶意版本。
该恶意软件窃取凭证(GitHub令牌、npm令牌、SSH密钥、AWS/GCP/Kubernetes/Vault),通过Session信使外泄,并自我传播到受害者维护的其他包。
同一攻击活动还波及了 Mistral AI(npm + PyPI)、UiPath(65个包)、OpenSearch(每周130万npm下载量),以及 170多个npm包和2个PyPI包。
只读扫描器,检查你的项目:
| 检查项 | 文件 | 结果 |
|---|---|---|
| npm 锁文件 | package-lock.json, npm-shrinkwrap.json | 🔴 精确匹配恶意版本 |
| pnpm 锁文件 | pnpm-lock.yaml | 🔴 精确匹配恶意版本 |
| yarn 锁文件 | yarn.lock | 🔴 精确匹配恶意版本 |
| 清单依赖 | package.json(根目录 + 工作区) | 🟡 包存在警告 |
| 恶意软件指纹 | optionalDependencies中的@tanstack/setup | 🔴 确认恶意软件 |
| 可疑git依赖 | github:tanstack/router#<commit> | 🔴 确认恶意软件 |
| 生命周期脚本 | 包含bun + router_init的prepare | 🔴 确认恶意软件 |
| node_modules | node_modules/@tanstack/*(备选) | 🔴 精确版本匹配 |
注意: 锁文件仅在项目根目录扫描。如果你使用的是子目录中带锁文件的单体仓库(例如packages/web/package-lock.json),请在每个工作区内运行扫描器,或者在顶部锁文件所在的单体仓库根目录运行。
@tanstack/* 出现在package.json中。请检查你的锁文件。⚠️ 关键提示:此恶意软件是凭证窃取器,而非破坏PC的病毒。 如果检测到🔴:
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash -s -- --json
此工具为 只读。它不会在系统上创建、修改或删除任何文件。
MIT