
Habilidade do Claude Code para escanear máquinas em busca de IOCs do worm da cadeia de suprimentos Mini Shai-Hulud (CVE-2026-45321)
Uma skill do Claude Code que verifica máquinas em busca de indicadores de comprometimento (IOCs) do verme de cadeia de suprimentos Mini Shai-Hulud (CVE-2026-45321, CVSS 9.6).
Um verme de cadeia de suprimentos autopropagante que comprometeu mais de 170 pacotes npm/PyPI em 11 de maio de 2026 - incluindo @tanstack/*, @mistralai/*, @uipath/* e @opensearch-project/*. Ele rouba credenciais, persiste por meio de ferramentas de desenvolvedor e instala um interruptor de homem morto que apaga seu diretório pessoal se você revogar os tokens antes de removê-lo.
Ator da ameaça: TeamPCP
Executa 5 etapas de diagnóstico que verificam artefatos do verme. Totalmente transparente - todos os comandos são exibidos antes da execução e nada é executado sem sua aprovação explícita.
/plugin marketplace add shayr1/shai-hulud-scan
/plugin install shai-hulud-scan
Em seguida, execute com: /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
Em seguida, execute com: /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 (domínio typosquat)api.masscan.cloud (exfiltração de segredos)filev2.getsession.org (exfiltração via Session Protocol)83.142.209.194 (roubador de credenciais do 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 (conta npm do atacante)79ac49eedf (prefixo de hash de commit órfão)MIT
| Etapa | Verificação | Motivo |
|---|
| 1 | Interruptor de homem morto (gh-token-monitor) | Apaga ~/ se os tokens forem revogados antes da remoção |
| 2 | Hooks de persistência (Claude Code, VS Code, GitHub Actions) | Reexecuta o verme na inicialização da IDE |
| 3 | Arquivos maliciosos (router_init.js, tanstack_runner.js) | Payload persiste após a remoção do pacote |
| 4 | Versões de pacotes comprometidos em lockfiles | Versões afetadas do @tanstack, @mistralai, @uipath, @opensearch |
| 5 | IOCs de rede (opt-in) | Conexões C2 ativas e resolução de DNS |