Ein zweiter Angriff auf Pakete im NPM-Repository wurde festgestellt, der mit einer Modifikation des selbstverbreitenden Wurms Shai-Hulud durchgefĂŒhrt wird, der schĂ€dliche Software in AbhĂ€ngigkeiten einschleust. Infolge des Angriffs wurden schĂ€dliche Versionen von 605 Paketen veröffentlicht, die insgesamt mehr als 100 Millionen Downloads verzeichnen.
Um den Angriff durchzufĂŒhren, ĂŒberwĂ€ltigten die Angreifer durch Phishing die Zugangsdaten des Betreuers eines der beliebten Pakete, das als AbhĂ€ngigkeit von vielen Paketen verwendet wird. Unter Ausnutzung des erbeuteten Kontos veröffentlichten die Angreifer eine Version des Pakets, in die Code integriert wurde, der den Wurm aktiviert, wenn das betroffene Paket als AbhĂ€ngigkeit installiert wird. Der aktivierte Wurm sucht nach Zugangsdaten im aktuellen Umfeld und lĂ€dt das Tool TruffleHog herunter und fĂŒhrt es aus.
Sollte ein Verbindungstoken zum NPM-Verzeichnis entdeckt werden, veröffentlicht der Wurm automatisch neue schĂ€dliche Versionen von Paketen, die im aktuellen Umfeld entwickelt werden. Auf diese Weise wird die gesamte AbhĂ€ngigkeitsstruktur schrittweise infiziert. Neben dem NPM-Token speichert der Wurm auch ZugangsschlĂŒssel fĂŒr GitHub sowie fĂŒr die Cloud-Dienste AWS, Azure und GCP (Google Cloud Platform) sowie Umgebungsvariablen und andere vertrauliche Daten, die der Scanner TruffleHog erfassen kann.
Die im System gefundenen vertraulichen Daten werden in GitHub gespeichert, indem Repositories mit zufĂ€lligen Namen (zum Beispiel âqzx15djl71alh6p80hâ) und der Phrase âSha1-Hulud: The Second Comingâ in der Beschreibung erstellt werden, und auĂerdem werden sie in kodierter Form in die Logs von GitHub Actions ausgegeben. In dem erstellten Repository wird eine Datei im JSON-Format (zum Beispiel jsonactionsSecrets.json oder contents.json) abgelegt, die eine Zeile mit kodierten base64-Daten ĂŒber das System, Umgebungsvariablen und erbeutete Informationen enthĂ€lt. Um Informationen aus den kontinuierlichen Integrationssystemen auf GitHub nach auĂen zu ĂŒbertragen, erstellt der Wurm einen GitHub Actions-Handler mit dem Namen â.github/workflows/formatter_123456789.ymlâ und konfiguriert einen Runner mit dem Namen SHA1HULUD.
Die Unterschiede zu einem Ă€hnlichen Septemberangriff liegen in einer anderen Methode zur EinfĂŒgung von Schadcode in das Paket. In den von dem Wurm erzeugten schĂ€dlichen Releases wird die UnterstĂŒtzung der JavaScript-Plattform Bun angegeben. In die Datei package.json wird im Abschnitt âpreinstallâ, der die vor der Installation ausgefĂŒhrten Skripte definiert, der Befehl ânode setup_bun.jsâ hinzugefĂŒgt.

In der Datei âsetup_bun.jsâ befindet sich Code zur AusfĂŒhrung des obfuskierten Skripts âbun_environment.jsâ, das den Wurmcode enthĂ€lt. FĂŒr seine weitere Verbreitung findet der Wurm den Code von Paketen, Ă€ndert die Datei package.json (erhöht die Versionsnummer und inkludiert den Aufruf von setup_bun.js), fĂŒgt die Dateien setup_bun.js und bun_environment.js hinzu, verpackt das Paket neu und fĂŒhrt den Befehl ânpm publishâ aus, um die neue Version zu veröffentlichen.
Unter den kompromittierten beliebten Paketen befinden sich: @zapier/zapier-sdk (2,8 Millionen Downloads pro Woche), @posthog/core (2,8 Millionen), posthog-node (1,5 Millionen), @asyncapi/specs (1,4 Millionen), @postman/tunnel-agent (1,2 Millionen). Es wird vermutet, dass der Angriff mit der Kompromittierung des unterstĂŒtzenden Pakets @asyncapi/specs begann.
Quelle: opennet.ru
