Alert!

Paketmanager npm: Angriff durch Paketabhängigkeiten

Der Entwickler des npm-Pakets node-ipc.js hat als Protest gegen den Ukraine-Krieg Schadcode ergänzt. Es wird als Abhängigkeit etwa von Vue.js mit installiert.

In Pocket speichern vorlesen Druckansicht 55 Kommentare lesen

(Bild: Sashkin/Shutterstock.com)

Lesezeit: 3 Min.
Von

Der Entwickler des npm-Moduls node-ipc.js hat kürzlich Schadcode darin ergänzt, der Dateien löscht, wenn die Software sich anhand einer Geo-Location-IP-Bestimmung auf einem russischen oder belarussischen System wähnt. Das Modul wird von populären Frameworks wie Vue.js – hier insbesondere von @vue/cli (Vue.js Command Line Interface) – als Abhängigkeit eingebunden, wodurch der bösartige Code auf zahlreichen Systemen verteilt wurde.

Die betroffenen Versionen waren etwa 24 Stunden online und wurden schließlich durch Fassungen ersetzt, die ein weiteres Modul als Abhängigkeit einbinden. Dieses Modul heißt peacenotwar und legt bislang lediglich eine Textdatei namens WITH-LOVE-FROM-AMERICA.txt auf dem Desktop sowie einem verknüpften OneDrive-Laufwerk an, anstatt Dateien zu zerstören.

Das Verhalten des node-ipc.js-Moduls respektive seines Entwicklers gilt als kritische Schwachstelle (CVE-2022-23812, CVSS 9.8, Risiko kritisch). Die Forscher des IT-Sicherheitsunternehmens Snyk erläutern in einem Blog-Beitrag die Schwachstellen und deren Entwicklung detailliert.

Die auffälligen Änderungen begannen bereits am 7. März mit der Version 10.1.1. Darin ergänzte der Entwickler einige Base64-kodierte Code-Schnippsel, die die Funktion des Programmcodes verschleiern sollten. Dieser Code beschreibt unter anderem die Verzeichnisse '/', './', '../' sowie '../../', in denen Dateien durch das Herz-Emoji überschrieben werden, sofern die Geo-IP-Auflösung der IP-Adresse diese in Belarus oder Russland verortet.

Version 10.1.2 hat Snyk zufolge lediglich die Versionsnummer geändert, vermutlich, um dadurch zu erreichen, dass Abhängigkeitsverwaltungen die neue Version automatisch erkennen und herunterladen. 10.1.3 hat den Schadcode am Folgetag entfernt. Dafür erschien Version 11.0.0, die ihrerseits das peacenotwar-Modul einbindet und darauf auch in dem README-Text hinweist.

Ende vergangener Woche veröffentlichte der Maintainer des node-ipc-Projekts dann die Version 9.2.2, die ebenfalls die peacenotwar-Nutzung ergänzt. Außerdem entfernte zeitgleich Version 11.1.0 die Log-Ausgaben auf die Konsole – Programmierer nutzen solche oft zu manuellem Debugging.

Zur Lösung des konkreten Problems schlägt Snyk vor, die als Abhängigkeit geladenen Versionen von node-ipc.js durch Anpassungen in der package.json-Datei einzugrenzen. Da node-ipc.js in den Versionen 10.1.1 und 10.1.2 betroffen war und 9.2.2 sowie 11.0.0 und neuer das unerwünschte Modul peacenotwar einbinden, sollten lediglich die Versionen vor 9.2.2 oder 10er-Fassungen bis maximal 10.1.0 genutzt werden.

Da Vue.js CLI den 9er-Zweig von node-ipc.js eingebunden hatte, war es für die peacenotwar-unterwanderte Version 9.2.2 "anfällig". Die Vue.js-Entwickler haben die fehlerbereinigte Versionen 4.5.16 und 5.0.3 und neuer bereitgestellt, die das ändern. Nutzer dieser Module sollten sicherstellen, die Versionen ohne Schadcode einzusetzen.

Das ist ein weiteres Beispiel eines Lieferketten-Angriffs, in dem Sicherheitslücken dadurch entstehen, dass in zugelieferten Software-Komponenten Schwachstellen enthalten sind. Bereits im Januar dieses Jahres hatte ein npm-Paket-Entwickler seine Pakete unbrauchbar gemacht und so davon abhängige Systeme gestört.

(dmk)