
Skill de Claude Code para escanear máquinas en busca de IOCs del gusano de la cadena de suministro Mini Shai-Hulud (CVE-2026-45321)
Una habilidad de Claude Code que escanea máquinas en busca de indicadores de compromiso (IOCs) del gusano de cadena de suministro Mini Shai-Hulud (CVE-2026-45321, CVSS 9.6).
Un gusano de cadena de suministro autopropagable que comprometió más de 170 paquetes npm/PyPI el 11 de mayo de 2026, incluidos @tanstack/*, @mistralai/*, @uipath/* y @opensearch-project/*. Roba credenciales, persiste a través de herramientas de desarrollo e instala un interruptor de hombre muerto que borra tu directorio personal si revocas los tokens antes de eliminarlo.
Actor de amenaza: TeamPCP
Ejecuta 5 pasadas de diagnóstico que buscan artefactos del gusano. Totalmente transparente: cada comando se muestra antes de ejecutarse y nada se ejecuta sin tu aprobación explícita.
/plugin marketplace add shayr1/shai-hulud-scan
/plugin install shai-hulud-scan
Luego ejecuta con: /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
Luego ejecuta con: /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 (dominio typosquat)api.masscan.cloud (exfiltración de secretos)filev2.getsession.org (exfiltración vía Protocolo Session)83.142.209.194 (ladrón de credenciales de 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 (cuenta npm del atacante)79ac49eedf (prefijo de commit huérfano)MIT
| Pasada | Comprobación | Por qué |
|---|
| 1 | Interruptor de hombre muerto (gh-token-monitor) | Borra ~/ si los tokens se revocan antes de la eliminación |
| 2 | Ganchos de persistencia (Claude Code, VS Code, GitHub Actions) | Re-ejecuta el gusano al iniciar el IDE |
| 3 | Archivos maliciosos (router_init.js, tanstack_runner.js) | El payload persiste después de eliminar el paquete |
| 4 | Versiones de paquetes comprometidos en lockfiles | Versiones afectadas de @tanstack, @mistralai, @uipath, @opensearch |
| 5 | IOCs de red (opt-in) | Conexiones C2 activas y resolución DNS |