Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
tanstack-compromise-checker — Shell-Skript zum Erkennen von Indikatoren für den TanStack npm Supply-Chain-Angriff (CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx) | Kitploit
Tools/GitHubGitHub/fabriziosalmi/tanstack-compromise-checker
Management von Indicators of Compromise (IOC)SchwachstellenscannerContainer-SicherheitForensikMalware-AnalyseDevSecOpsSecret-ErkennungBedrohungsanalyseLieferkettensicherheit

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Incident Response
GitHubfabriziosalmi/tanstack-compromise-checker

tanstack-compromise-checker

Shell-Skript zum Erkennen von Indikatoren für den TanStack npm Supply-Chain-Angriff (CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx)

Repository anzeigen
2156vor 7 TagenNoch nicht geprüft
Teilen

tanstack-compromise-checker

Erkennen Sie Indikatoren des TanStack npm Supply-Chain-Angriffs auf einem Entwicklungsrechner, einem Repository oder einem CI-Runner. Bash-Skript, Docker-Image und GitHub Action – gleiche Engine, drei Einstiegspunkte.

CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx

Am 11. Mai 2026 veröffentlichten Angreifer 84 schädliche Versionen über 42 @tanstack/* Pakete via GitHub Actions Cache-Vergiftung. Die Nutzlast stiehlt GitHub-Tokens, npm-Tokens, AWS-/GCP-/Azure-Anmeldeinformationen und installiert einen Dead-Man's-Switch-Daemon, der ~/ löscht, sobald der gestohlene Token widerrufen wird.

Schnellstart

Wählen Sie den Einstiegspunkt, der zu Ihrer Situation passt.

macOS / Linux / WSL2 / Git Bash

root@kitploit:~
TAG=v1.0.0
curl -fsSLO https://github.com/fabriziosalmi/tanstack-compromise-checker/releases/download/$TAG/check.sh
curl -fsSLO https://github.com/fabriziosalmi/tanstack-compromise-checker/releases/download/$TAG/check.sh.sha256
sha256sum -c check.sh.sha256
bash check.sh --online

Docker – funktioniert auf jedem Betriebssystem, das Docker ausführt (inkl. Windows)

root@kitploit:~
docker run --rm -v "$PWD":/scan \
  ghcr.io/fabriziosalmi/tanstack-compromise-checker:v1.0.0 \
  /scan true fail tanstack-findings.json '' GHSA-g7cv-rxg3-hmpx

Das Image ist Multi-Arch (linux/amd64, linux/arm64) und wird mit einer via GitHub OIDC signierten Build-Provenienz ausgeliefert. Überprüfen Sie vor der Ausführung:

root@kitploit:~
gh attestation verify \
  oci://ghcr.io/fabriziosalmi/tanstack-compromise-checker:v1.0.0 \
  --repo fabriziosalmi/tanstack-compromise-checker

GitHub Action – blockieren Sie kompromittierte Abhängigkeiten in CI

root@kitploit:~
permissions: {}

jobs:
  check:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v6
        with:
          persist-credentials: false
      - uses: fabriziosalmi/tanstack-compromise-checker@v1
        with:
          scan-dir: .
          online: 'true'
          fail-on: fail

Ein vollständig gehärteter Workflow befindet sich unter .github/workflows/tanstack-check.yml und ist derselbe Workflow, den dieses Repository gegen sich selbst ausführt.

Was das Skript prüft

#CheckDescription
1Dead-man's switch~/.local/bin/gh-token-monitor.sh, LaunchAgents + LaunchDaemons (macOS), systemd Benutzer- + System-Units (Linux), laufende Prozesse
2PersistenceShell-RC-Dateien, Benutzer-/System-Crontab, /etc/cron.*, XDG-Autostart, globales Git core.hooksPath
3Credentialssensible Umgebungsvariablen, ~/.npmrc, ~/.yarnrc.yml, ~/.aws/credentials, ~/.config/gh/hosts.yml, ~/.netrc, ~/.docker/config.json, ~/.kube/config, Auflistung von .env*-Dateien
4Network IOClaufende node-Prozesse mit etablierten ausgehenden TCP-Verbindungen (heuristisch, manuelle Überprüfung)
5Repo scanin package.json deklarierte Abhängigkeiten + in Lockdateien festgelegte Versionen (package-lock.json, yarn.lock, pnpm-lock.yaml)
6Installednode_modules/@tanstack/*/package.json wird mit der Liste bekannter schädlicher Versionen abgeglichen, dann mit der npm-Registry time[<version>] bei --online
7Actions hints.github/workflows/* wird gescannt auf pull_request_target, fehlendes --ignore-scripts, Nutzung von actions/cache
8Mini Shai-Hulud IOCsPayload-Dateien in node_modules (router_init.js, tanstack_runner.js), @tanstack/setup als optionalDependency, Manipulation von KI-Tool-Konfigurationen, C2-Domains im Quellcode, Angreifer-Commit-Autor + Branch-Muster, mit Lösegeld markierte npm-Tokens, sekundäre wurmverbreitete Pakete, plus Info-Level-Heuristiken für unbekannte Payload-Formen

Mit --online ruft das Skript zur Laufzeit auch die GHSA-Advisory ab, sodass die Erkennungsabdeckung dem Live-Zustand der Advisory folgt, anstatt einer fest codierten Liste von Versionen.

Betroffene Familie: @tanstack/router, @tanstack/react-router, @tanstack/history, @tanstack/start, @tanstack/eslint-plugin-router und verwandte Pakete.

Saubere Familien (nicht betroffen): @tanstack/react-query, @tanstack/react-table, @tanstack/react-virtual, @tanstack/form, @tanstack/store.

Verwendung

root@kitploit:~
# Quick check (current user's home)
bash check.sh

# Online mode: query the GHSA advisory and npm registry publish-time
bash check.sh --online

# Scan a specific directory
bash check.sh --scan-dir /path/to/your/repos

# JSON output for CI/SIEM integration
bash check.sh --json > findings.json

# Suggest pin commands for affected repos (dry-run)
bash check.sh --scan-dir /path/to/repos --fix

# Provide an extended known-bad list
bash check.sh --bad-versions-file ./extra-bad-versions.txt

Alle Optionen

FlagDescription
--scan-dir DIRRoot-Verzeichnis zum Scannen (Standard: $HOME). Weigert sich, Systemverzeichnisse wie /, /etc, /usr zu scannen.
--onlineRuft die GHSA-Advisory und das time[<version>] der npm-Registry ab, um die Kompromittierung zu bestätigen. Standardmäßig deaktiviert – Opt-in.
--ghsa GHSA-IDÜberschreibt die Advisory-ID, die bei --online verwendet wird (Standard GHSA-g7cv-rxg3-hmpx).
--attack-window-start ISO, --attack-window-end ISOÜberschreibt das Veröffentlichungszeitfenster, das bei --online verwendet wird.
--fixGibt empfohlene Pin-Befehle für betroffene Repos aus (standardmäßig Trockenlauf).
--applyMit --fix: Opt-in zur Ausführung. Verweigert derzeit noch blindes update; manuelles Pinning ist erforderlich.
--yes, -yÜberspringt die Bestätigungsaufforderung für --apply.
--jsonGibt Ergebnisse als JSON auf stdout aus (impliziert --quiet).
--bad-versions-file FFügt Einträge (pkg@version, eine pro Zeile) zur Liste bekannter schädlicher Versionen hinzu.
--no-colorDeaktiviert ANSI-Farben.
--quiet, -qUnterdrückt die Ausgabe pro Prüfung, gibt nur Zusammenfassung aus.
-h, --helpZeigt Hilfe an.

Exit-Codes

CodeMeaning
0Sauber – keine Indikatoren im gescannten Bereich
1Nur Warnungen – Überprüfung empfohlen
2Fehler – Kompromittierungsindikatoren vorhanden
3Tool-/Anwendungsfehler

Sicherheitshaltung

Dieses Repository schützt sich gegen dieselbe Angriffsklasse, die es erkennt. Konkret:

  • Jede GitHub Action uses: ist auf einen 40-Zeichen-Commit-SHA festgelegt, nicht auf ein schwebendes Tag.
  • Das Docker-Basis-Image ist auf einen unveränderlichen Multi-Arch-Manifest-Digest festgelegt.
  • Jeder Workflow deklariert permissions: {} auf oberster Ebene; Jobs gewähren nur, was sie benötigen.
  • actions/checkout wird mit persist-credentials: false aufgerufen, sodass kein authentifiziertes Git-Remote in $GITHUB_WORKSPACE verbleibt.
  • step-security/harden-runner ist der erste Schritt jedes Workflows und überwacht den Runner-Ausgang.
  • OpenSSF Scorecard läuft wöchentlich und bei jedem Push auf main; Ergebnisse werden als SARIF hochgeladen.
  • Jede Veröffentlichung veröffentlicht eine SLSA-Build-Provenienz-Bescheinigung für das Docker-Image. Jeder kann es offline mit gh attestation verifizieren.
  • Jede Veröffentlichung enthält eine check.sh.sha256, die alle installierbaren Artefakte abdeckt.

Die vollständige Richtlinie befindet sich in SECURITY.md.

Verwenden Sie nicht curl | bash für irgendein Sicherheitstool, einschließlich dieses. Laden Sie immer herunter, überprüfen Sie die Prüfsumme, inspizieren Sie und führen Sie dann aus.

Beispielausgabe

root@kitploit:~
━━  1 / 8  DEAD-MAN'S SWITCH ARTEFACTS
  ✔  No dead-man's switch artefacts found

━━  2 / 8  PERSISTENCE VECTORS
  ✔  No persistence vectors detected

━━  3 / 8  TOKEN / CREDENTIAL EXPOSURE
  ✔  No credential exposure detected

━━  4 / 8  NETWORK INDICATORS
  ✔  No node TCP connections currently established (or none observable)

━━  5 / 8  REPO SCAN — package.json + lockfiles
  ℹ  Found 12 package.json + 8 lockfile(s)
  ✔  No compromised family declared in any package.json
  ✔  No compromised pins found in any lockfile

━━  6 / 8  INSTALLED node_modules — direct version check
  ✔  No compromised packages in installed node_modules

━━  7 / 8  GITHUB ACTIONS HARDENING HINTS
  ✔  No risky GitHub Actions patterns detected (in scanned scope)

━━  8 / 8  MINI SHAI-HULUD PAYLOAD + AUXILIARY IOCs
  ✔  No Mini Shai-Hulud payload / auxiliary IOCs detected

━━  SUMMARY
  Passed: 8    Warnings: 0    Failed: 0
  Scope : /Users/alice/dev
  ✔  No indicators of compromise within scope: /Users/alice/dev
  Note: a clean result for /Users/alice/dev does not certify the rest of the system.

Wenn Sie kompromittiert sind

Widerrufen Sie Ihren GitHub-Token NICHT, bevor Sie den Daemon stoppen – der Dead-Man's-Switch wird rm -rf ~/ ausführen, sobald der Token widerrufen wird.

  1. Stoppen Sie zuerst den Daemon:
    • macOS 14+: launchctl bootout gui/$UID ~/Library/LaunchAgents/com.user.gh-token-monitor.plist
    • macOS legacy: launchctl unload ~/Library/LaunchAgents/com.user.gh-token-monitor.plist
    • Linux: systemctl --user stop gh-token-monitor && systemctl --user disable gh-token-monitor
  2. Entfernen Sie das Skript: rm -f ~/.local/bin/gh-token-monitor.sh
  3. Dann widerrufen und rotieren: GitHub-Token, npm-Token, AWS-/GCP-/Azure-Anmeldeinformationen, SSH-Schlüssel, SSH-Agent.
  4. Überprüfen Sie das GitHub-Überwachungsprotokoll: https://github.com/settings/security-log
  5. Überprüfen Sie ~/.aws/credentials, ~/.kube/config, ~/.config/gh/hosts.yml, ~/.npmrc.

Abhängigkeiten

  • bash 4+
  • jq (empfohlen) – package-lock.json Parsen
  • python3 (optionaler Fallback) – wird verwendet, wenn jq fehlt
  • curl – erforderlich für --online
  • lsof oder ss (optional) – Netzwerk-IOC-Heuristik

Das Docker-Image bündelt alle oben genannten. Verwenden Sie es auf Systemen, auf denen Sie diese Tools nicht installieren können oder möchten.

Mitwirken

Issues und Pull-Requests sind willkommen. Beachten Sie, dass dieses Repository CODEOWNERS verwendet: Alle PRs benötigen eine Überprüfung durch einen Betreuer.

Referenzen

  • Offizieller Postmortem von TanStack
  • GitHub Advisory GHSA-g7cv-rxg3-hmpx
  • Snyk-Analyse
  • Wiz Blog – Mini Shai-Hulud
  • StepSecurity-Bericht
  • Orca Security – 160+ Pakete

Lizenz

MIT.

Tool herunterladen