
Erkennt die Supply-Chain-Kompromittierung CVE-2026-45321 Mini Shai-Hulud — scannt nach 170 vergifteten npm-Paketen und 2 vergifteten PyPI-Paketen bei TanStack, Mistral AI, UiPath, OpenSearch und Guardrails AI.
Ein schneller, dependencies-freier Bash-Scanner, der erkennt, ob Ihr System von der Lieferketten-Attacke CVE-2026-45321 „Mini Shai-Hulud“ betroffen ist.
Am 11. Mai 2026 wurden über 170 npm-Pakete und 2 PyPI-Pakete bei TanStack, Mistral AI, UiPath, OpenSearch und Guardrails AI gleichzeitig vergiftet. Die schadhafte Payload stiehlt AWS-Anmeldedaten, GitHub-Tokens, npm-Tokens, Vault-Secrets und SSH-Schlüssel – und enthält einen sich selbst verbreitenden Wurm, der sich über CI/CD-Pipelines ausbreitet.
curl -fsSL https://raw.githubusercontent.com/qi-scape/scan-shai-hulud/main/scan-shai-hulud.sh | bash
Oder klonen und ausführen:
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
# Aktuelles Verzeichnis scannen + systemweite Persistenzprüfungen
./scan-shai-hulud.sh
# Ein bestimmtes Projekt scannen
./scan-shai-hulud.sh ~/mein-projekt
# Tiefenscan über das gesamte Home-Verzeichnis
./scan-shai-hulud.sh --full
Der Scanner führt 8 Prüfungen durch:
170 npm-Pakete in 15 Scopes:
react-router, vue-router, solid-router, router-core usw.)mistralai, mistralai-azure, mistralai-gcpopensearchagentwork-cli, cmux-agent-mcp, cross-stitch, , , , , , , 2 PyPI-Pakete:
mistralai==2.4.6guardrails-ai==0.10.1Wenn der Scanner KRITISCHE Befunde meldet:
ghp_*, gho_*, ghs_*), npm-Tokens, Vault-Tokens, SSH-Schlüssel, Kubernetes-Service-Account-Tokensnpm cache clean --force && rm -rf node_modules && npm installlaunchctl unload ~/Library/LaunchAgents/com.user.gh-token-monitor.plist2026-05-11T19:20Z prüfennpm access ls-packagesfind, grep, shasum)mdfind (macOS Spotlight, wird für schnellere Dateisuche verwendet)npm, pip (für Paket-/Token-Prüfungen)git (für Repository-Prüfungen)lsof (für Netzwerkverbindungsprüfungen)MIT
| Schritt | Beschreibung |
|---|
| Persistenz | macOS LaunchAgent (Datei + launchctl-geladener Zustand), Linux-systemd-Dienst, Totmannschalter-Skript, Payload-Ablagen in .claude/ und .vscode/, injizierte GitHub-Actions-Workflows, /tmp-Dropper |
| Bösartige Dateien | router_init.js, tanstack_runner.js, router_runtime.js, gh-token-monitor.sh, transformers.pyz – verifiziert gegen 3 bekannte SHA-256-Hashes |
| C2-Indikatoren | Durchsucht Konfigurationsdateien (.npmrc, .bashrc, .zshrc, .env) und Projektquellcode nach 6 C2-Domains + Kampagnen-Markern |
| npm-Pakete | Alle node_modules-Bäume, npm-global-Root, Lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lock), npm-Cache – mit präzisem paketweitem Abgleich (42 spezifische @tanstack-Router-Pakete, nicht der gesamte Scope) |
| PyPI-Pakete | pip show über alle Python-/Conda-Umgebungen + requirements.txt, pyproject.toml, Pipfile, poetry.lock |
| Git-Repos | Bösartiger Commit-Hash im Verlauf, dependabout/*/setup-formatter-Dead-Drop-Branches, Dead-Drop-Commit-Autor, injizierte codeql_analysis.yml |
| Shell-Verlauf & Umgebung | Bash-/Zsh-/Fish-Verlauf auf Payload-Ausführungsspuren, Shell-RC-Dateien auf Injektionen, Umgebungsvariablen auf C2-Domains |
| Netzwerk & Tokens | Aktive Verbindungen zu C2 über lsof, /etc/hosts, ~/.ssh/known_hosts, npm-Token-Liste |
git-branch-selectorgit-git-gitml-toolkit-tsnextmove-mcpsafe-actionts-dnawot-api| Indikator | Wert |
|---|
| Primäre Exfiltration | filev2.getsession.org |
| Session-Seeds | seed{1,2,3}.getsession.org |
| Sekundäre C2 | api.masscan.cloud, git-tanstack.com |
| Payload-Staging | litter.catbox.moe/h8nc9u.js, litter.catbox.moe/7rrc6l.mjs |
| Bösartiger Commit | 79ac49eedf774dd4b0cfa308722bc463cfe5885c |