Zu den von JFrog genannten Paketen gehören „Aes-decode-runner-pro“, „postcss-minify-selector-parser“ und „postcss-minify-selector“. Laut der Analyse geben sich „Aes-decode-runner-pro“ und „postcss-minify-selector-parser“ als mehrschichtige AES- beziehungsweise benutzerdefinierte Codec-Pakete aus und hängen von der legitimen Bibliothek „postcss-selector-parser“ ab. „postcss-minify-selector“ wiederum tritt als Minifizierer für PostCSS-Selektoren auf und nutzt „postcss-minify-selector-parser“ als Abhängigkeit.
Die eigentliche Nutzlast wird über einen mehrstufigen Ablauf installiert. In die Pakete ist ein JavaScript-Dropper eingebettet, der ein PowerShell-Skript mit dem Namen „settings.ps1“ auf die Festplatte schreibt und ausführt. Dieses Skript fungiert anschließend als Downloader und lädt die nächste Stufe mit „curl.exe“ von dem externen Server „nvidiadriver[.]net“ nach.
Bei der nachgeladenen Datei handelt es sich um ein ZIP-Archiv. Daraus wird ein Visual-Basic-Skript namens „update.vbs“ entpackt und mit „wscript.exe“ gestartet. Ebenfalls im Archiv enthalten sind eine Python-Laufzeitumgebung, der Python-Loader „loader.py“ sowie mehrere mit Nuitka kompilierte Python-Erweiterungsmodule im Format „*.pyd“.
Das Visual-Basic-Skript richtet auf dem kompromittierten System die Python-Umgebung ein und startet anschließend „loader.py“. Erst dieser Schritt aktiviert laut JFrog die Kernlogik der Malware. Der RAT ist dazu in der Lage, Informationen über den Host zu sammeln, Zugangsdaten aus Google Chrome abzugreifen, Daten aus Chrome-Erweiterungen zu sammeln, Shell-Befehle auszuführen sowie Dateien zum und vom Kommando-und-Kontroll-Server „95.216.92[.]207:8080“ herunter- und hochzuladen.
JFrog betont, dass sich hinter einem kleinen, parserähnlichen Paket eine mehrstufige Windows-Nutzlast verbergen kann, obwohl es äußerlich wie ein legitimes Build-Werkzeug mit Bezug auf weit verbreitete Komponenten erscheint. Genau diese Nähe zu etablierten Paketen macht die Tarnung wirkungsvoll.
Nutzern, die eines der betroffenen Pakete installiert haben, rät JFrog, diese umgehend zu entfernen, sämtliche von ihnen erzeugten Artefakte zu löschen und Zugangsdaten von betroffenen Entwicklerrechnern auszutauschen.
Die Entdeckung fällt laut dem Quelltext mit drei weiteren Kampagnen gegen das npm- und TypeScript-Ökosystem zusammen. Ebenfalls erwähnt wird ein Supply-Chain-Angriff auf das Knowledge-Graph-Werkzeug „gonex-AI/Understand-Anything“. Dabei werde eine schädliche Nutzlast verteilt, die eines von drei fest eincodierten C2-Systemen kontaktiert, eine Kampagnenmarkierung exfiltriert, einen heruntergeladenen Bot-Client per XOR entschlüsselt und auswertet und anschließend unabhängig einen Befehl der zweiten Stufe über eine Tron-Blockchain-Adresse auflöst, deren jüngste Transaktion einen BSC-Transaktions-Hash mit der aktiven Nutzlast kodiert.
Überschneidungen sieht der Quelltext außerdem mit der nordkoreanischen Supply-Chain-Operation PolinRider. Diese soll in fast 2.000 kompromittierten GitHub-Repositories verschleierten JavaScript-Code in legitime Konfigurationsdateien von Entwicklern eingeschleust haben, um den bekannten Malware-Downloader und Stealer BeaverTail auszuliefern, der anschließend die Hintertür InvisibleFerret nachlädt. SafeDep erklärte dazu, der Angriff kombiniere eine aufwendige gefälschte PR-Beschreibung mit erfundenen Testbelegen, ein Diff, das seine Nutzlast in horizontalen Leerzeichen verberge, sowie eine zweistufige C2-Kommunikation, bei der die zweite Stufe öffentliche Blockchain-Infrastruktur als unveränderlichen und überall lesbaren Relay-Dienst nutze.
