一个 Claude Code 技能,用于扫描机器中来自 Mini Shai-Hulud 供应链蠕虫 (CVE-2026-45321, CVSS 9.6) 的入侵指标 (IOC)。
一种自我传播的供应链蠕虫,于 2026 年 5 月 11 日感染了 170 多个 npm/PyPI 包——包括 @tanstack/*、@mistralai/*、@uipath/* 和 @opensearch-project/*。它会窃取凭据、通过开发者工具持久化,并安装一个死循环开关,如果在移除蠕虫之前撤销令牌,该开关会清空您的主目录。
威胁行为者:TeamPCP
运行 5 项诊断检查以查找蠕虫工件。完全透明——每条命令在执行前都会显示,并且未经您明确批准不会运行任何内容。
| 检查项 | 检查内容 | 原因 |
|---|---|---|
| 1 | 死循环开关 (gh-token-monitor) | 如果在移除前撤销令牌,清空 ~/ |
| 2 | 持久化钩子 (Claude Code, VS Code, GitHub Actions) | 在 IDE 启动时重新执行蠕虫 |
| 3 | 恶意文件 (router_init.js, tanstack_runner.js) | 有效载荷在包移除后仍然存在 |
| 4 | 锁定文件中的受损包版本 | 受影响的 @tanstack, @mistralai, @uipath, @opensearch 版本 |
| 5 | 网络 IOC (可选) | 活跃的 C2 连接和 DNS 解析 |
/plugin marketplace add shayr1/shai-hulud-scan
/plugin install shai-hulud-scan
然后运行:/shai-hulud-scan
git clone https://github.com/shayr1/shai-hulud-scan.git /tmp/shai-hulud-scan
mkdir -p ~/.claude/skills/shai-hulud-scan
cp /tmp/shai-hulud-scan/SKILL.md ~/.claude/skills/shai-hulud-scan/SKILL.md
然后运行:/shai-hulud-scan
Detected platform: macOS. All commands below are tailored for this environment.
### Pass 1: Dead-Man's Switch
The worm installs a daemon called `gh-token-monitor` that polls GitHub every
60 seconds. If it detects that your GitHub token has been revoked, it executes
`rm -rf ~/` - wiping your entire home directory.
Commands that will run:
test -f ~/Library/LaunchAgents/com.user.gh-token-monitor.plist && echo "FOUND" || echo "NOT FOUND"
launchctl list 2>/dev/null | grep gh-token-monitor || echo "NOT FOUND"
test -f ~/.local/bin/gh-token-monitor.sh && echo "FOUND" || echo "NOT FOUND"
> Approve running these commands? [Approve / Skip]
Pass 1 - Dead-man's switch: CLEAN
## Scan Complete - Results
| Pass | Check | Result |
|------|-----------------------|---------|
| 1 | Dead-man's switch | CLEAN |
| 2 | Persistence hooks | CLEAN |
| 3 | Malicious files | CLEAN |
| 4 | Compromised packages | CLEAN |
| 5 | Network IOCs | SKIPPED |
CVE: CVE-2026-45321 | CVSS: 9.6 | Threat Actor: TeamPCP
ab4fcadaec49c03278063dd269ea5eef82d24f2124a8e15d7b90f2fa8601266c - router_init.js2ec78d556d696e208927cc503d48e4b5eb56b31abc2870c2ed2e98d6be27fc96 - tanstack_runner.js2258284d65f63829bd67eaba01ef6f1ada2f593f9bbe41678b2df360bd90d3df - setup.mjsgit-tanstack.com (域名抢注)api.masscan.cloud (秘密泄漏)filev2.getsession.org (Session 协议泄漏)83.142.209.194 (mistralai 凭据窃取器)~/Library/LaunchAgents/com.user.gh-token-monitor.plist (macOS)~/.config/systemd/user/gh-token-monitor.service (Linux)~/.local/bin/gh-token-monitor.sh (macOS/Linux)~/.claude/router_runtime.js, ~/.claude/setup.mjs.vscode/setup.mjs, .github/workflows/codeql_analysis.ymlvoicproducoes (攻击者 npm 帐户)79ac49eedf (孤立提交哈希前缀)MIT