Besonders auffällig ist das Paket „lib-mtop“. Das unscopte npm-Paket trägt denselben Namen wie ein privates Alibaba-Paket unter „@ali“ und wurde bereits irgendwann im November 2023 ohne Funktionalität veröffentlicht. Erst in diesem März und April erschienen mit v1.0.1, v1.0.2 und v1.0.3 drei neue Versionen mit schädlichen Änderungen.
Ob dahinter die Übernahme eines Maintainer-Kontos oder ein absichtlich böswillig handelnder Entwickler steckt, ist laut Quelle offen. Unabhängig davon enthalten die neuen Versionen einen Loader, der per curl eine entfernte JavaScript-Nutzlast abruft und ausführt.
Dasselbe Maintainer-Konto „ch4ce“, das auf npmjs[.]com inzwischen auf einen „nicht gefunden“-Fehler weiterleitet, veröffentlichte außerdem die vier Pakete „aone-kit“, „aone-kit-cli“, „aone-sandbox“ und „local-config-parser“. Socket-Forscher Karlo Zanki beschreibt die ersten drei als leere Hüllen, die dieselben Namen wie private, mit „@ali“ gescopte Pakete tragen und diese in ihrer package.json als Abhängigkeit deklarieren.
„local-config-parser“ wirkt nach außen unauffällig, weil es tatsächlich einen Parser für JSON-Konfigurationsdateien implementiert. Laut Socket besteht die Schadkette aber aus mehreren für sich genommen harmlos wirkenden Abhängigkeiten, die über andere npm-Konten veröffentlicht wurden. Erst im Zusammenspiel fungieren sie als Transportweg für einen fortgeschrittenen RAT, der mutmaßlich Entwickler in Unternehmen aus dem Alibaba-Umfeld treffen soll.
Die schädliche Loader-Funktion ist über mehrere Pakete verteilt und in denselben Abhängigkeitsbaum eingebettet. Die obersten Köderpakete, die private Pakete aus dem „@ali“-Scope imitieren, stoßen bei der Installation die gesamte Kette an. Socket erklärt, dass in Umgebungen mit Zugriff auf die imitierten privaten Pakete die Auflösung der Abhängigkeiten wie erwartet funktioniert – ergänzt um zusätzliche Funktionalität über weitere installierte Abhängigkeiten.
Nach Erkenntnissen der Forscher hängen bis zu zehn der obersten Köderpakete von „smart-config-manager“ ab. Dieses Paket fungiert als mittlere Brücke zu den tiefer liegenden Paketen mit der Loader-Logik. Eines dieser unteren Pakete kontaktiert ein GitHub-Repository, um eine Konfiguration für eine Regel-Engine abzurufen und lokal zu speichern. Diese Konfiguration wird anschließend genutzt, um eine schädliche Nutzlast auszuführen, die wiederum einen entfernten Server kontaktiert und weitere Malware nachlädt.
Bemerkenswert ist laut Socket, dass die Regel-Engine das Modul „vm“ nutzt, um die letzte Phase umzusetzen und den Download der Nutzlast abhängig vom Betriebssystem des Opfers auszuführen. Die Nutzlast stammt von der als Alibaba getarnten Domain „aone-cli-next.oss-cn-beijing.aliyuncs[.]com“, offenbar um sich unauffällig in den normalen Datenverkehr einzufügen und Erkennung zu umgehen.
Die finale Nutzlast ist ein komplexes Backdoor mit umfassenden Fähigkeiten zur Befehlsausführung, zum beliebigen Hoch- und Herunterladen von Dateien, zur Systemaufklärung, zum Nachladen weiterer Nutzlasten und zur lateralen Bewegung. Zudem kann sich die Malware festsetzen, indem sie schädlichen Code in verbreitete Unternehmens-Kollaborationsanwendungen wie DingTalk, Wukong und Qoder einschleust.
Wer die Kampagne steuert, ist unbekannt. Zanki verweist jedoch auf chinesischsprachige Kommentare im Quellcode sowie GitHub-Commits mit dem Zeitstempel-Offset UTC+08:00. Das deute darauf hin, dass ein chinesischsprachiger Bedrohungsakteur chinesischsprachige Entwickler ins Visier nimmt, die Werkzeuge aus dem Alibaba-Umfeld einsetzen. „Das Ziel der Kampagne scheint Industriespionage zu sein“, so Zanki. Die Zahl der Downloads sei zwar nicht groß, der tatsächliche Schaden lasse sich wegen des gezielten Vorgehens und der Fähigkeiten zur lateralen Ausbreitung aber nur schwer einschätzen.
Die Veröffentlichung der Analyse fällt mit einem weiteren Vorfall im Paket-Ökosystem zusammen. Unbekannte Angreifer veröffentlichten eine vergiftete Version 0.7.4 von „mrmustard“, einer Python-Bibliothek für photonisches Quantencomputing von Xanadu. Diese Version sollte einen Information-Stealer ausführen, der SSH-Private-Keys, AWS-Zugangsdaten und Kubernetes-Konfigurationen abgreift und an „metrics.femboy[.]energy“ exfiltriert.
Laut StepSecurity läuft die Nutzlast bei jedem Import des Pakets. Weitere Analysen zeigen, dass das GitHub-Konto des Haupt-Maintainers kompromittiert wurde, um die manipulierte Version zu veröffentlichen. Dafür seien die selbst gehosteten CI-Runner des Projekts sondiert und die Veröffentlichungsgeheimnisse an eine URL von webhook[.]site exfiltriert worden. SafeDep erklärte zudem, die Malware habe „drei separate Persistenzmechanismen installiert, die den Stealer noch lange nach der Deinstallation des Pakets weiterlaufen lassen“.
