Mini-Shai-Hulud-Supply-Chain-Angriff auf npm-Pakete, GitHub Actions und Entwicklerumgebungen
Blog

Mini Shai-Hulud: Neuer npm-Angriff trifft über 320 Pakete

Mini Shai-Hulud trifft über 320 npm-Pakete rund um @antv, timeago.js und echarts-for-react. Was Teams jetzt prüfen müssen.

Mika Schmidt, IT Security Experte

Mika Schmidt

IT Security Experte

Mini Shai-Hulud ist zurück. Am 19. Mai 2026 wurde eine neue Welle der Supply-Chain-Kampagne sichtbar, diesmal mit Schwerpunkt auf dem @antv-Ökosystem und weiteren beliebten npm-Paketen. SecurityWeek berichtet am 20. Mai 2026 von mehr als 320 betroffenen npm-Paketen sowie Bezügen zu GitHub Actions, einer VS-Code-Extension und PyPI.

Socket zählt für diese Welle 639 kompromittierte Versionen in 323 Paketen. Über die gesamte Mini-Shai-Hulud-Kampagne hinweg nennt Socket 1.055 Versionen in 502 Paketen, davon der überwiegende Teil in npm. Das macht den Vorfall nicht nur zu einem Paketproblem, sondern zu einem Risiko für CI/CD, Entwicklergeräte und Cloud-Zugangsdaten.

Was ist passiert?

Der kompromittierte npm-Maintainer-Account atool hatte Zugriff auf Pakete im @antv-Namensraum und veröffentlichte unter anderem timeago.js. Nach der Kompromittierung wurden schadhafte Paketversionen in kurzer Folge veröffentlicht. Betroffen waren Datenvisualisierung, Graphing, Mapping, Charting und React-Komponenten, darunter echarts-for-react mit hoher Download-Reichweite.

Der Angriff ist deshalb besonders kritisch, weil er nicht bei einem einzelnen Paket stehen bleibt. Die Malware enthält Logik zum Missbrauch von npm-Tokens: Token validieren, Pakete eines Maintainers enumerieren, Tarballs herunterladen, Payload und preinstall-Hook einfügen, Versionen erhöhen und veränderte Pakete erneut veröffentlichen.

Umfang am 20. Mai 2026

BereichStand 20. Mai 2026Warum relevant?
Neue npm-Welle323 Pakete, 639 Versionen laut SocketVor allem @antv, aber nicht nur scoped Pakete
Kampagne gesamt502 Pakete, 1.055 Versionen laut SocketMehrere Ökosysteme, npm dominiert
Weitere ZieleGitHub Actions, VS-Code-Extension, PyPIEntwickler- und Build-Umgebungen im Fokus
Vorherige WelleTanStack: 42 Pakete, 84 VersionenZeigt Muster und Risiko für Release-Pipelines

Welche Pakete sind betroffen?

Die auffälligste betroffene Gruppe sind Pakete aus dem @antv-Namensraum, etwa @antv/g2, @antv/g6, @antv/x6, @antv/l7, @antv/s2, @antv/f2, @antv/g, @antv/g2plot, @antv/graphin und @antv/data-set. Socket nennt zusätzlich nicht gescopte Pakete wie echarts-for-react, timeago.js, size-sensor und canvas-nest.js.

StepSecurity listet ebenfalls zahlreiche Pakete, darunter mcp-echarts, mcp-mermaid, jest-canvas-mock, jest-date-mock sowie mehrere @openclaw-cn/*-Pakete. Weil die Kampagne aktiv untersucht wird, sollten Teams nicht mit einer statischen Liste arbeiten, sondern aktuelle Advisory-Daten aus SCA-, npm- und Threat-Intel-Quellen einbeziehen.

Wie die Malware arbeitet

Die kompromittierten npm-Pakete enthalten einen Installationszeit-Payload. Socket beschreibt eine obfuskierte index.js, die package.json so verändert, dass der Schadcode über einen preinstall-Hook ausgeführt wird. Das ist für CI/CD besonders unangenehm: Schon npm install, pnpm install oder ähnliche Dependency-Schritte reichen als Ausführungspunkt.

Der Payload sucht nach GitHub-Tokens, npm-Tokens, AWS-, GCP- und Azure-Zugangsdaten, Kubernetes-Service-Account-Material, HashiCorp-Vault-Tokens, SSH-Keys, Docker-Authentifizierung und weiteren Entwickler-Secrets. StepSecurity beobachtete zudem Versuche, Speicher des GitHub-Actions-Runners zu lesen, um maskierte CI/CD-Secrets im Klartext zu gewinnen.

Exfiltriert wird über zwei Wege: einerseits über eine C2-Infrastruktur, andererseits über GitHub-Repositories, die mit gestohlenen Tokens im Konto des Opfers erzeugt werden. Wiz und Socket nennen als wiederkehrenden Marker die Rückwärts-Zeichenkette niagA oG eW ereH :duluH-iahS, die vorwärts gelesen Shai-Hulud: Here We Go Again ergibt.

Die zentrale Lehre: Diese Malware sucht nicht nur nach Quellcode. Sie sucht nach allem, womit ein Build-System, ein Maintainer-Konto oder eine Cloud-Umgebung weiter bewegt werden kann.

Persistenz, C2 und Entwickler-Tools

Wiz beschreibt eine Python-basierte Backdoor unter ~/.local/share/kitty/cat.py. Auf macOS und Linux wurden Persistenzmechanismen wie com.user.kitty-monitor.plist und kitty-monitor.service genannt. Die Backdoor pollt GitHub nach signierten Kommandos mit dem Marker firedalazer und kann bei gültigen Anweisungen weitere Python-Payloads abrufen.

StepSecurity berichtet außerdem von Backdoors in Claude-Code- und VS-Code-Konfigurationen. SecurityWeek und Wiz verweisen auf eine kompromittierte VS-Code-Extension nrwl.angular-console in Version 18.95.0 sowie auf kompromittierte GitHub Actions aus dem actions-cool-Umfeld. Das erweitert den Blick von Paketmanagern auf die gesamte Entwickler-Toolchain.

PyPI: durabletask als Warnsignal

Die aktuelle Kampagne ist nicht sauber auf npm begrenzt. StepSecurity analysiert kompromittierte Versionen von Microsofts durabletask-Python-SDK auf PyPI: 1.4.1, 1.4.2 und 1.4.3. Laut Analyse wurden diese Versionen innerhalb eines kurzen Zeitfensters direkt auf PyPI hochgeladen, ohne passende Tags, Releases oder CI/CD-Läufe im GitHub-Repository.

Für Python-Teams ist der operative Punkt simpel: Wenn durabletask in den genannten Versionen installiert oder importiert wurde, sollte die Umgebung als kompromittiert behandelt werden. StepSecurity empfiehlt, auf 1.4.0 zu pinnen und Incident Response zu starten. Der Fall zeigt außerdem, warum Trusted Publishing statt langfristiger Publish-Tokens auch im PyPI-Umfeld relevant ist.

Warum der TanStack-Kontext wichtig bleibt

Der bestehende TanStack-Vorfall vom 11. Mai 2026 war eine frühere Mini-Shai-Hulud-Welle. TanStack bestätigte damals 84 kompromittierte Versionen von 42 @tanstack/*-Paketen. Die Ursache lag nicht in einem klassischen npm-Token-Diebstahl, sondern in einer missbrauchten GitHub-Actions-Release-Pipeline mit pull_request_target, Cache-Poisoning und OIDC-Kontext.

Genau deshalb gehören beide Wellen in dieselbe Risikoanalyse. Die Payloads und Infrastrukturen unterscheiden sich, aber das Zielbild bleibt gleich: Entwickler- und CI/CD-Umgebungen sind wertvolle Orte für Angreifer, weil dort Secrets, Publish-Rechte, Cloud-Zugriffe und Build-Artefakte zusammenlaufen.

Sofort-Check für Projekte und CI/CD

Starten Sie mit den Systemen, die am 19. oder 20. Mai 2026 Dependencies installiert haben: CI/CD-Runner, Build-Images, Entwicklergeräte, Preview-Deployments und Container-Builds. Der folgende Check ist bewusst breit, damit er erste Treffer in Lockfiles und Build-Artefakten findet.

bash
rg -n "(@antv/|echarts-for-react|timeago\.js|timeago-react|size-sensor|canvas-nest\.js|jest-canvas-mock|jest-date-mock|mcp-echarts|mcp-mermaid|@openclaw-cn/|@starmind/collector-cli|durabletask)" package-lock.json pnpm-lock.yaml yarn.lock bun.lockb requirements.txt poetry.lock uv.lock pyproject.toml
Lockfiles auf betroffene Pakete prüfen
bash
rg -n "t\.m-kosche\.com|m-kosche\.com|niagA oG eW ereH :duluH-iahS|Shai-Hulud: Here We Go Again|results/results-|firedalazer|kitty-monitor|\.local/share/kitty/cat\.py|@antv/setup|preinstall.*bun run index\.js" .
IOCs in Dateien und Artefakten suchen

Wenn Sie Treffer finden oder ein Installationszeitpunkt in das Risiko-Fenster fällt, behandeln Sie die Umgebung nicht als reines Dependency-Update. Mini Shai-Hulud ist ein Credential-Stealer mit Persistenz- und Propagationslogik.

Sofortreaktion in fünf Schritten

  1. 1

    Isolieren

    Betroffene Runner, Workstations und Build-Images aus der Rotation nehmen.

  2. 2

    Beweise sichern

    CI-Logs, npm-/PyPI-Logs, Proxy-/DNS-Telemetrie, Prozessdaten und relevante Home-Verzeichnisse sichern.

  3. 3

    Persistenz prüfen

    Nach cat.py, kitty-monitor, ungewöhnlichen LaunchAgents/systemd-User-Services, manipulierten VS-Code- oder Claude-Code-Konfigurationen suchen.

  4. 4

    GitHub prüfen

    Unerwartete Repositories, Repository-Beschreibungen mit Shai-Hulud-Markern, neue Tokens, ungeplante Workflow-Läufe und auffällige Pushes suchen.

  5. 5

    Secrets rotieren

    Erst nach Persistenzprüfung GitHub-, npm-, PyPI-, Cloud-, Kubernetes-, Vault-, SSH- und CI/CD-Secrets erneuern.

GitHub Actions und Build-Workflows auditieren

Die neue Welle nutzt vor allem Paketinstallation und gestohlene Tokens. Der TanStack-Fall zeigt aber, dass auch die Release-Pipeline selbst zum Angriffsweg werden kann. Prüfen Sie deshalb, welche Workflows untrusted Code ausführen, welche Jobs Publish-Rechte haben und ob Caches zwischen Vertrauenszonen wiederverwendet werden.

bash
rg -n "pull_request_target|id-token:\s*write|actions/cache|npm publish|pnpm publish|yarn npm publish|pypi|twine|trusted.?publish|GITHUB_TOKEN|NODE_AUTH_TOKEN|PYPI_API_TOKEN" .github/workflows
Workflows auf riskante Muster prüfen

Gute Zielbilder für Build- und Release-Umgebungen:

  • pull_request_target nur für Metadaten-Aufgaben einsetzen, nicht für Checkout und Ausführung von Fork-Code.
  • Caches strikt trennen: untrusted PR-Jobs dürfen keine Artefakte erzeugen, die später von Release-Jobs blind wiederhergestellt werden.
  • Publish-Rechte und id-token: write nur in minimalen, expliziten Release-Jobs erlauben.
  • Third-Party-Actions auf Commit-SHAs pinnen und unerwartete Tag-Änderungen überwachen.
  • Outbound Traffic aus CI/CD beschränken, damit Paketinstallationen nicht beliebig zu C2-Endpunkten kommunizieren können.

Indicators of Compromise

Die folgenden IOCs sind ein Startpunkt für Hunting und Triage. Sie sollten mit aktuellen Feeds abgeglichen werden, weil sich Infrastruktur und Paketlisten bei aktiven Supply-Chain-Kampagnen schnell ändern können.

Indicators of Compromise

KategorieIndikatoren
Netzwerkt.m-kosche[.]com, https://t.m-kosche[.]com:443/api/public/otel/v1/traces, m-kosche[.]com, 185.95.159.32, check.git-service[.]com
GitHub-MarkerniagA oG eW ereH :duluH-iahS, Shai-Hulud: Here We Go Again, results/results-*.json
Persistenz~/.local/share/kitty/cat.py, com.user.kitty-monitor.plist, ~/.config/systemd/user/kitty-monitor.service
Payload-Hinweisepreinstall-Hook mit bun run index.js, @antv/setup, obfuskierte index.js, unerwartete GitHub-API-Nutzung während Paketinstallation
TanStack-Kontextrouter_init.js, router_runtime.js, tanstack_runner.js, @tanstack/setup, filev2.getsession.org, seed*.getsession.org

Was Unternehmen daraus lernen sollten

Für Unternehmen ist Mini Shai-Hulud ein Lehrstück für Software Supply Chain Security. Der Angriff verbindet drei Risikofelder, die oft getrennt behandelt werden: Abhängigkeiten aus Open Source, CI/CD-Runtime-Sicherheit und Secret-Management. Wer nur auf Dependabot-Updates oder Vulnerability-Scans schaut, übersieht den wichtigsten Punkt: Ein kompromittiertes Paket kann in Sekunden den gesamten Build-Kontext lesen.

Fazit: Supply-Chain-Schutz endet nicht am Paketnamen

Die neue Mini-Shai-Hulud-Welle zeigt, wie schnell ein kompromittierter Maintainer-Account zum Risiko für hunderte Pakete und tausende Downstream-Projekte werden kann. Entscheidend ist nicht nur, ob ein Paketname in Ihrer Dependency-Liste steht. Entscheidend ist, ob der Code in einer Umgebung lief, die Zugang zu GitHub, npm, PyPI, Cloud, Kubernetes oder SSH-Schlüsseln hatte.

Gute Supply-Chain-Sicherheit kombiniert aktuelle Advisory-Daten, reproduzierbare Dependency-Updates, gehärtete CI/CD-Runner, minimale Publish-Rechte und Incident-Response-Prozesse, die speziell auf Entwickler- und Build-Umgebungen zugeschnitten sind. Mini Shai-Hulud ist damit weniger ein einzelner npm-Vorfall als ein Stresstest für moderne Softwarelieferketten.

Häufige Fragen

Diese FAQ ist für die schnelle Betroffenheitsprüfung gedacht. Für eine echte Incident Response sollten Lockfiles, Telemetrie, Paketlisten und GitHub-/Registry-Aktivitäten gemeinsam bewertet werden.

Häufige Fragen

Bin ich vom neuen Mini-Shai-Hulud-npm-Angriff betroffen?
Sie sind potenziell betroffen, wenn seit dem 19. Mai 2026 eines der kompromittierten npm-Pakete installiert wurde, insbesondere Pakete aus dem @antv-Umfeld, echarts-for-react, timeago.js, size-sensor, canvas-nest.js, mcp-echarts, mcp-mermaid oder weitere von Socket, StepSecurity und Wiz gelistete Pakete. Prüfen Sie Lockfiles, CI-Logs, Build-Caches und Entwicklergeräte.
Warum ist diese Welle gefährlicher als ein normales kompromittiertes Paket?
Die Malware stiehlt nicht nur lokale Secrets. Sie kann GitHub- und npm-Tokens nutzen, Pakete des betroffenen Maintainers enumerieren, Tarballs verändern, preinstall-Hooks einfügen und neue schadhafte Versionen veröffentlichen. Damit hat der Angriff Worm-Charakter und kann sich über weitere Maintainer-Konten ausbreiten.
Welche Pakete sollte ich zuerst suchen?
Priorisieren Sie @antv/*, echarts-for-react, timeago.js, timeago-react, size-sensor, canvas-nest.js, jest-canvas-mock, jest-date-mock, mcp-echarts, mcp-mermaid, @openclaw-cn/*, @starmind/collector-cli und die von Ihren SCA-Tools gemeldeten betroffenen Versionen. Die Listen wachsen, deshalb ist eine aktuelle Advisory-Quelle wichtig.
Welche Indicators of Compromise sind wichtig?
Wichtige Indikatoren sind t.m-kosche.com, https://t.m-kosche.com:443/api/public/otel/v1/traces, m-kosche.com, GitHub-Repositories mit results/results-*.json, die Marker niagA oG eW ereH :duluH-iahS beziehungsweise Shai-Hulud: Here We Go Again, sowie Persistenzartefakte wie ~/.local/share/kitty/cat.py und kitty-monitor-Services.
Soll ich Secrets sofort rotieren?
Ja, wenn eine betroffene Version installiert wurde, aber in der richtigen Reihenfolge: System isolieren, Persistenz und laufende Malware suchen, Logs sichern, dann GitHub-, npm-, Cloud-, Kubernetes-, Vault-, SSH- und CI/CD-Secrets rotieren. Sonst können neue Tokens direkt wieder abgegriffen werden.
Sind nur npm-Projekte betroffen?
Nein. Die aktuelle Berichterstattung beschreibt vor allem npm, aber die Mini-Shai-Hulud-Kampagne wird auch mit PyPI- und Composer-Aktivitäten in Verbindung gebracht. StepSecurity analysiert unter anderem kompromittierte durabletask-Versionen auf PyPI. Python-Teams sollten deshalb ebenfalls Paketversionen, Import-Zeitpunkte und CI/CD-Umgebungen prüfen.
Was hat das mit dem TanStack-Vorfall vom 11. Mai 2026 zu tun?
TanStack war eine frühere Mini-Shai-Hulud-Welle, bei der 42 @tanstack/*-Pakete kompromittiert wurden. Die neue @antv-Welle unterscheidet sich in Payload und Infrastruktur, nutzt aber ähnliche Muster: Installationszeit-Ausführung, Secret-Harvesting, GitHub-Missbrauch und npm-Weiterverbreitung.

Themen

Mini Shai-Huludnpm Supply Chain AttackSoftware Supply Chain SecurityCI/CD SecurityGitHub Actionsnpm MalwarePyPICredential Stealer

Quellen

  1. SecurityWeek: Over 320 NPM Packages Hit by Fresh Mini Shai-Hulud Supply Chain AttackSecurityWeek / Ionut Arghire, 20. Mai 2026 – Überblick zur neuen Mini-Shai-Hulud-Welle
  2. Socket: Mini Shai-Hulud Hits @antv Ecosystem, 639 Compromised npm Package VersionsSocket Research Team, 19. Mai 2026 – Umfang, Payload, IOCs und betroffene Pakete
  3. StepSecurity: Shai-Hulud Here We Go Again – Mass npm Supply Chain Attack Hits the AntV EcosystemStepSecurity, 19. Mai 2026 – Runtime-Analyse, CI/CD-Verhalten und betroffene Pakete
  4. Wiz: The Worm That Keeps on Digging – TeamPCP Hits @antv in Latest WaveWiz Research, 19. Mai 2026 – Attribution, Persistenz, GitHub-Actions- und VS-Code-Bezüge
  5. StepSecurity: Microsofts durabletask PyPI Package Compromised in Supply Chain AttackStepSecurity, 19. Mai 2026 – PyPI-Bezug, durabletask-Versionen und Token-basierter Publish-Verdacht
  6. TanStack: Postmortem zur npm-Supply-Chain-KompromittierungTanStack Blog / Tanner Linsley, 11. Mai 2026 – technische Analyse der vorherigen TanStack-Welle
  7. GitHub Advisory: Malware in 42 @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys (GHSA-g7cv-rxg3-hmpx)GitHub Security Advisory, 11. Mai 2026 – TanStack-Paketliste und Empfehlungen
  8. GitHub Security Lab: Keeping your GitHub Actions and workflows secure Part 1 – Preventing pwn requestsGitHub Security Lab – Hintergrund zu pull_request_target und untrusted Pull Requests