Nach Angaben von Socket veröffentlichte der Angreifer insgesamt 639 schädliche Versionen über 323 verschiedene Pakete, davon 558 Versionen über 279 @antv-Pakete. Die eingeschleuste Schadsoftware sammelt mehr als 20 Arten von Zugangsdaten ein, darunter Anmeldedaten für Amazon Web Services, Google Cloud, Microsoft Azure, GitHub, npm, SSH, Kubernetes, Vault und Stripe sowie Datenbank-Verbindungszeichenfolgen. Zusätzlich versucht der Schadcode über den Host-Socket, aus Docker-Containern auszubrechen. Die Schadnutzlast ist identisch mit jener, die bereits bei der Kompromittierung im Zusammenhang mit SAP eingesetzt wurde.
Die gesammelten Daten werden serialisiert, komprimiert, verschlüsselt und an die Domain „t.m-kosche[.]com:443" übertragen. Als Ausweichmechanismus nutzt die Malware das gestohlene GitHub-Token, um unter dem Konto des Opfers ein öffentliches Repository anzulegen und die Daten in einer JSON-Datei abzulegen. Diese Repositories tragen die Beschreibung „niagA oG eW ereH :duluH-iahS", die rückwärts gelesen „Shai-Hulud: Here We Go Again" ergibt. Laut StepSecurity existieren auf GitHub bereits mehr als 2.500 Repositories mit dieser Markierung – eine Untergrenze für die Zahl der Umgebungen, deren Zugangsdaten erfolgreich abgegriffen wurden.
Zur Weiterverbreitung missbraucht die Malware gestohlene npm-Tokens: Sie validiert die Tokens über die npm-Registry-API, ermittelt die vom Token-Inhaber betreuten Pakete, lädt deren Archive herunter, schleust die Schadnutzlast ein, fügt einen preinstall-Hook hinzu, erhöht die Versionsnummern und veröffentlicht die Pakete unter der Identität des kompromittierten Maintainers erneut. Laut SafeDep nutzt der Angriff zwei Ausführungspfade; 630 von 637 schädlichen Versionen fügen zusätzlich einen optionalDependencies-Eintrag ein, der eine zweite Kopie der Nutzlast über das legitime GitHub-Repository antvis/G2 ausliefert. Der Veröffentlichungsschub über 317 Pakete in nur 22 Minuten weise auf eine automatisierte, schnelle Datenausschleusung mit einem gestohlenen Token hin.
Neu in der jüngsten Version ist laut Endor Labs eine Sigstore-Attestierungspipeline: In CI-Umgebungen signiert der Angreifer Artefakte mit gültigen Sigstore-Zertifikaten über ein frisch erzeugtes OIDC-Token. Die so gefälschte SLSA-Provenienz lasse eine legitime Veröffentlichung von einer schädlichen Version nicht mehr unterscheiden. Der Nachweis belege zwar, wo ein Paket gebaut wurde, nicht aber, dass der Build autorisiert war.
Die selbstreplizierende Kampagne wird einem finanziell motivierten Akteur namens TeamPCP zugeschrieben. Laut Datadog hat die Gruppe kürzlich den gesamten Quellcode für andere Akteure freigegeben – im Rahmen eines in Zusammenarbeit mit BreachForums angekündigten „Lieferketten-Angriffswettbewerbs". Seither hat ein unbekannter Akteur vier schädliche npm-Pakete hochgeladen, von denen eines eine nahezu wortgetreue Kopie des Shai-Hulud-Wurms mit eigener Command-and-Control-Infrastruktur enthält – ein Hinweis darauf, dass geklonte Varianten Open-Source-Ökosysteme befallen könnten.
Trend Micro zufolge ist die Kampagne auf Diebstahl von Zugangsdaten im großen Stil ausgelegt; betroffen seien Organisationen, die GitHub Actions, PyPI, Docker Hub, GHCR, VS-Code-Erweiterungen und cloudgebundene CI-Runner einsetzen. Wer manipulierte Versionen installiert hat, sollte seine Zugangsdaten erneuern, Zwei-Faktor-Authentifizierung aktivieren, GitHub auf die Shai-Hulud-Zeichenketten prüfen und auf eine sichere Version wechseln.
