Das Paket “plain-crypto-js” dient als Auslieferungsmechanismus für einen verschleierten JavaScript-Dropper mit der Bezeichnung SILKBELL (“setup.js”). Dieser lädt abhängig vom Betriebssystem des Opfers die jeweils passende nächste Stufe von einem entfernten Server nach. Wie The Hacker News bereits beschrieben hat, liefert der Windows-Zweig PowerShell-Malware, für macOS kommt eine in C++ geschriebene Mach-O-Binärdatei zum Einsatz, für Linux eine Python-Backdoor.
Nach der Ausführung räumt der Dropper Spuren auf: Er entfernt sich selbst und ersetzt die “package.json” von “plain-crypto-js” durch eine saubere Version ohne postinstall-Hook.
Die Backdoor trägt den Codenamen WAVESHAPER.V2 und gilt als überarbeitete Fassung von WAVESHAPER, einer von UNC1069 gegen den Kryptowährungssektor eingesetzten C++-Backdoor. Der Akteur ist nach Angaben von Google seit 2018 aktiv. Laut Mandiant und GTIG ist WAVESHAPER.V2 eine direkte Weiterentwicklung der ursprünglichen, zuvor UNC1069 zugeschriebenen Backdoor für macOS und Linux. Während die alte Version ein einfaches binäres C2-Protokoll und Code-Packing nutzte, kommuniziert WAVESHAPER.V2 über JSON, sammelt zusätzliche Systeminformationen und unterstützt mehr Befehle.
Beide Varianten erhalten ihre C2-URL dynamisch über Kommandozeilenargumente, zeigen identisches Abfrageverhalten sowie eine ungewöhnliche User-Agent-Zeichenkette und legen Folgekomponenten in identischen temporären Verzeichnissen ab, etwa “/Library/Caches/com.apple.act.mond”. Die drei WAVESHAPER.V2-Varianten unterstützen vier verschiedene Befehle und melden sich im 60-Sekunden-Takt beim Command-and-Control-Server.
Zur Eindämmung empfehlen die Fachleute, Abhängigkeitsbäume auf kompromittierte Versionen zu prüfen und gegebenenfalls auf eine sichere Version zurückzustufen, Axios in der “package-lock.json” auf eine bekannte sichere Version festzulegen, das Verzeichnis “node_modules” auf “plain-crypto-js” zu untersuchen, bösartige Prozesse zu beenden, die C2-Domain (“sfrclak[.]com”, IP-Adresse 142.11.206[.]73) zu blockieren, betroffene Systeme zu isolieren und sämtliche Zugangsdaten zu erneuern.
Tomislav Peričin, Chief Software Architect bei ReversingLabs, ordnet den Vorfall als Vorlage und nicht als Einzelfall ein. Die dokumentierte Vorgehensweise — kompromittierte Maintainer-Zugangsdaten, vorbereitete Schadkomponenten für drei Betriebssysteme, das Treffen beider Release-Zweige in unter 40 Minuten sowie die eingebaute forensische Selbstzerstörung — verweise auf einen Akteur, der dies als skalierbare Operation geplant habe. Sollte die Kampagne nun auch in PyPI und NuGet auftauchen, decke sich das mit dem erkennbaren Ziel maximaler Reichweite unter Entwicklern. Organisationen müssten nicht nur ihre npm-Abhängigkeiten prüfen, sondern jeden Paketmanager in ihren Build-Pipelines, und alle in betroffenen Umgebungen offengelegten Geheimnisse als kompromittiert behandeln.
