Mini Shai-Hulud startet Schadcode bei jedem Python-Aufruf Supply-Chain-Worm Miasma stiehlt Cloud-Zugangsdaten über PyPI

Von Thomas Joos 3 min Lesedauer

Die Supply-Chain-Kampagne Mini Shai-Hulud erreicht den Python Package Index. Manipulierte Wheels aktivieren über .pth-Dateien bei jedem Python-Start einen Bun-basierten Stealer, der Entwickler- und Cloud-Zugangsdaten abgreift. Die Gesamtkampagne umfasst 448 Artefakte über npm und PyPI, eine ähnliche Welle traf 73 Microsoft-Repositories auf GitHub.

Die Mini-Shai-Hulud-Kampagne erreicht mit der Miasma-Welle den Python Package Index. Manipulierte Wheels stehlen bei jedem Python-Start Cloud- und Entwicklerzugangsdaten.(Bild:  Gemini / KI-generiert)
Die Mini-Shai-Hulud-Kampagne erreicht mit der Miasma-Welle den Python Package Index. Manipulierte Wheels stehlen bei jedem Python-Start Cloud- und Entwicklerzugangsdaten.
(Bild: Gemini / KI-generiert)

Am 07.06.2026 dokumentiert das Sicherheitsunternehmen Socket eine neue Angriffswelle innerhalb der Kampagne Mini Shai-Hulud, intern auch als Miasma geführt. Der Schwerpunkt verlagert sich auf den Python Package Index. 37 bösartige Wheels über 19 Projekte kommen hinzu, womit die Gesamtkampagne 448 Artefakte über npm und PyPI umfasst. Davon zählen 411 Artefakte über 106 npm-Pakete. Die kompromittierten Releases stammen aus der Übernahme eines einzelnen Maintainer-Kontos, das aufeinanderfolgende Patch-Versionen quer durch sein Portfolio massenhaft veröffentlichte. Die größte Reichweite haben etablierte Bioinformatik-Tools wie dynamo-release, spateo-release und coolbox, dazu kommen die Spot-Detection-Pakete ufish und napari-ufish sowie kleinere Bibliotheken zur Task-Ausführung.

.pth-Zeilen lösen die Ausführung beim Python-Start aus

Das site-Modul von Python verarbeitet .pth-Dateien bei jedem Start des Interpreters. Beginnt eine Zeile mit dem Schlüsselwort import, führt der Interpreter sie aus. Die manipulierten Wheels legen eine Datei mit der Endung .pth ab, deren einzige Zeile beim nächsten Aufruf von Python, pip, einem Notebook-Kernel oder einem CI-Job aktiv wird. Eine Installation genügt, ein expliziter Import des Pakets ist nicht notwendig.

Die Startzeile prüft auf eine Markierungsdatei im temporären Verzeichnis. Fehlt diese Markierung, lokalisiert der Code die Datei "_index.js", lädt bei Bedarf die Bun-Runtime von GitHub herunter und startet den Schadcode über den Befehl "bun run". Eine angelegte Markierungsdatei verhindert eine wiederholte Ausführung. Python dient damit als Transportweg, der ausgeführte Stealer arbeitet unter Bun in stark obfuskiertem JavaScript. Die Schadroutine bringt die Bun-Runtime selbst mit und bleibt dadurch unabhängig von der lokal installierten Laufzeit.

Bun führt einen mehrschichtig verschlüsselten Stealer aus

Der entpackte Schadcode zeigt mehrere Schichten. Ein eval-Wrapper dekodiert ein langes Zeichencode-Array und wendet eine ROT-Substitution an. Die erste Stufe entschlüsselt zwei eingebettete AES-128-GCM-Blöcke und schreibt den Hauptcode in eine zufällig benannte Datei unter /tmp. Der Hauptcode arbeitet mit einer rotierten String-Tabelle, einem eigenen Decoder auf Basis von PBKDF2 und SHA256 sowie einer zusätzlichen Schicht aus AES-256-GCM und gzip.

Das Zielspektrum reicht von Anmeldedaten für GitHub, npm, PyPI, RubyGems und JFrog bis zu Tokens für CircleCI und Anthropic. Im Cloud-Bereich erfasst die Routine Zugangsdaten für Kubernetes-Service-Accounts, für AWS samt STS-Identität, SSM Parameter Store und Secrets Manager sowie Material aus dem GCP Secret Manager und dem Azure Key Vault. Auch Vault-Tokens, SSH-Schlüssel, Docker-Konfigurationen, Shell-Verläufe und lokale Dateien, darunter ".env", ".npmrc" und ".pypirc", gehören dazu. Hervorzuheben sind Konfigurationen für Claude und MCP, ein Hinweis auf die Ausweitung in KI-gestützte Entwicklungsumgebungen.

GitHub dient als bestätigter Exfiltrationskanal

Für den Abfluss der Daten kombiniert der Schadcode mehrere Wege. Bestätigter Kanal ist GitHub. Der Code legt öffentliche Repositories über den Endpunkt "POST /user/repos" an und committet verschlüsselte Datenpakete unter Pfaden nach dem Muster "results/results-*.json". Parallel schreibt eine eingebettete Workflow-Logik Secrets in eine Datei und lädt ein Artefakt mit dem Namen "format-results" hoch, der zugehörige Workflow heißt "Run Copilot".

Daneben enthält der Schadcode einen direkten HTTPS-Sender an api.anthropic.com/v1/api. Der Endpunkt liefert sowohl bei GET als auch bei POST den Standard-404 von Anthropic und nimmt keine Daten an. Eine Kompromittierung von Anthropic-Systemen liegt nicht vor. Der Weg dient als Tarnung, denn Verkehr zu einem verbreiteten KI-Anbieter fällt im Netzwerk-Protokoll wenig auf. Die aktuelle Welle führt neue thematische Marker ein. Erzeugte Repositories erhalten die Beschreibung "Hades - The End for the Damned", der Commit-Marker lautet "IfYouYankThisTokenItWillNukeTheComputerOfTheOwnerFully". Generierte Repository-Namen greifen auf Begriffe der griechischen Unterwelt zurück, darunter "cerberus", "charon" und "styx".

Die Kampagne erfasst mehrere Paket-Ökosysteme

Die PyPI-Welle ordnet sich in eine breitere Bewegung ein. Den Ausgangspunkt bildete Anfang Juni eine kompromittierte Sammlung von npm-Paketen aus dem Umfeld der Red Hat Cloud Services. Die Akteursgruppe TeamPCP setzt durchgängig auf dasselbe Vorgehen, das aus Installation und Start eine Stufe zur Codeausführung macht. Die Tragweite zeigt ein Vorfall vom 05.06.2026. Ein selbstreplizierender Wurm infizierte 73 GitHub-Repositories von Microsoft, unter anderem Bestände zu Azure und Azure-Samples. Ein manipulierter Commit im Repository Azure/durabletask wurde aktiv, sobald ein KI-gestütztes Entwicklungstool ihn öffnete. GitHub nahm die betroffenen Bestände binnen 105 Sekunden vom Netz, der Wurm zielte auf Cloud-Zugangsdaten für Kubernetes, AWS und GCP.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zur IT-Sicherheit

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Fazit

Die Hades-Welle verschiebt das Muster der Shai-Hulud-Familie vom npm-Installationshaken auf die Startmechanik von Python. Code-Ausführung zum Installations- und Startzeitpunkt bildet das gemeinsame Merkmal über npm, PyPI, Packagist und GitHub-Workflows hinweg. Die Indikatoren reichen von Dateinamen und Loader-Strings bis zu den GitHub-Markern der Kampagne.

(ID:50866289)