一个快速、零依赖的 Bash 扫描器,用于检测您的机器是否受到 CVE-2026-45321 "Mini Shai-Hulud" 供应链攻击的影响。
2026年5月11日,来自 TanStack、Mistral AI、UiPath、OpenSearch 和 Guardrails AI 的 超过 170 个 npm 包 和 2 个 PyPI 包 同时被投毒。恶意负载会窃取 AWS 凭证、GitHub 令牌、npm 令牌、Vault 密钥和 SSH 密钥——并且包含一个可通过 CI/CD 管道自我传播的蠕虫。
curl -fsSL https://raw.githubusercontent.com/qi-scape/scan-shai-hulud/main/scan-shai-hulud.sh | bash
或者克隆并运行:
git clone https://github.com/qi-scape/scan-shai-hulud.git
cd scan-shai-hulud
chmod +x scan-shai-hulud.sh
./scan-shai-hulud.sh
# 扫描当前目录 + 系统范围持久性检查
./scan-shai-hulud.sh
# 扫描特定项目
./scan-shai-hulud.sh ~/my-project
# 扫描整个主目录的深度扫描
./scan-shai-hulud.sh --full
扫描器执行 8 个步骤:
| 步骤 | 描述 |
|---|---|
| 持久性 | macOS LaunchAgent(文件 + launchctl 加载状态)、Linux systemd 服务、死劫开关脚本、.claude/ 和 .vscode/ 有效负载投放、注入的 GitHub Actions 工作流、/tmp 投放器 |
| 恶意文件 | router_init.js、tanstack_runner.js、router_runtime.js、gh-token-monitor.sh、transformers.pyz——对照 3 个已知 SHA-256 哈希值进行验证 |
| C2 指标 | 扫描配置文件(.npmrc、.bashrc、.zshrc、.env)和项目源代码,查找 6 个 C2 域名及活动标记 |
| npm 包 | 所有 node_modules 树、npm 全局根目录、锁定文件(package-lock.json、yarn.lock、pnpm-lock.yaml、bun.lock)、npm 缓存——精确匹配每个包(42 个特定的 @tanstack router 包,而非整个作用域) |
| PyPI 包 | 对所有 Python/conda 环境执行 pip show,同时检查 requirements.txt、pyproject.toml、Pipfile、poetry.lock |
| Git 仓库 | 历史记录中的恶意提交哈希、dependabout/*/setup-formatter 死劫分支、死劫提交作者、注入的 codeql_analysis.yml |
| Shell 历史与环境 | Bash/Zsh/Fish 历史中的有效负载执行痕迹、Shell RC 文件中的注入、环境变量中的 C2 域名 |
| 网络与令牌 | 通过 lsof 检查与 C2 的活动连接、/etc/hosts、~/.ssh/known_hosts、npm 令牌列表 |
15 个作用域下的 170 个 npm 包:
react-router、vue-router、solid-router、router-core 等)mistralai、mistralai-azure、mistralai-gcpopensearchagentwork-cli、cmux-agent-mcp、cross-stitch、、、、、、、2 个 PyPI 包:
mistralai==2.4.6guardrails-ai==0.10.1如果扫描器报告了 严重 发现:
ghp_*、gho_*、ghs_*)、npm 令牌、Vault 令牌、SSH 密钥、Kubernetes 服务账户令牌npm cache clean --force && rm -rf node_modules && npm installlaunchctl unload ~/Library/LaunchAgents/com.user.gh-token-monitor.plist2026-05-11T19:20Z 以来的 GitHub Actions 运行npm access ls-packagesfind、grep、shasum)mdfind(macOS Spotlight,用于更快文件搜索)npm、pip(用于包/令牌检查)git(用于仓库检查)lsof(用于网络连接检查)MIT
git-branch-selectorgit-git-gitml-toolkit-tsnextmove-mcpsafe-actionts-dnawot-api| 指标 | 值 |
|---|
| 主要回传地址 | filev2.getsession.org |
| 会话种子 | seed{1,2,3}.getsession.org |
| 次要 C2 | api.masscan.cloud、git-tanstack.com |
| 有效负载暂存 | litter.catbox.moe/h8nc9u.js、litter.catbox.moe/7rrc6l.mjs |
| 恶意提交 | 79ac49eedf774dd4b0cfa308722bc463cfe5885c |