Security: CLI-Tool soll Malware per npm install verhindern

Das Verwenden von npm install birgt Risiken. Der Wrapper safe npm soll Typosquatting-Angriffe, Protestware und unerwünschte Telemetrie verhindern.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen

(Bild: Stokkete/Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Maika Möbus
Inhaltsverzeichnis

Das Security-Softwareunternehmen Socket hat sein neues CLI-Tool safe npm vorgestellt, das die Sicherheit im Umgang mit dem JavaScript-Paketmanager npm erhöhen soll. Das Open-Source-Tool wrappt den Befehl npm install und soll elf verschiedene Angriffsszenarien erkennen sowie durch das Pausieren der Installation abwenden können, darunter Malware, Typosquatting, das Installieren von Skripten, Protestware und Telemetrie.

Wie Socket erläutert, sei npm install der gefährlichste Befehl, den Entwicklerinnen und Entwickler täglich ausführen. Demnach hat ein einzelnes installiertes Package durchschnittlich 79 transitive Dependencies. Diese insgesamt 80 Packages können beispielsweise durch ein Install-Skript weiteren Shell-Code installieren, den npm automatisch während der Installation ausführt. Diese Funktion kann in manchen Fällen erwünscht sein, in anderen jedoch Malware bergen.

Typosquatting ist ebenfalls eine häufige Form des Angriffs: Ein Package mit ähnlich lautendem Namen wie ein bekanntes Package wird mit Schadcode auf npm hochgeladen. Durch einen entsprechenden Tippfehler bei der Installation erhalten Entwicklerinnen und Entwickler das schadhafte Package.

Das nun vorgestellte Socket-Tool safe npm ist ein Wrapper für npm- und npx-Befehle und soll die Gefahren von npm install abwenden. Sollte es ein potenziell schädliches Paket erkennen, pausiert es die Installation und informiert über die Risiken. Die Risikobewertung baut auf drei Bausteinen auf: statische Analyse, Metadatenanalyse und Maintainer-Verhalten. Insgesamt fließen über 70 Signale in das Bewerten von Open-Source-Packages ein.

Zur statischen Analyse kommt eine von Socket entwickelte Engine zum Einsatz. Sie analysiert Quellcode, ohne ihn auszuführen, um potenzielle Anzeichen von Supply-Chain-Attacken zu erkennen. Dazu zählen laut Angaben des Entwicklungsteams Dutzende von Hinweisen wie das Installieren neuer Skripte, Netzwerkanfragen, Umgebungsvariablenzugriff, Telemetrie und verdächtige Strings.

Daneben spielt auch das Maintainer-Verhalten eine Rolle: Wer ist als Maintainer tätig und welche Aktivitätshistorie weist diese Person auf? Packages ohne Maintainer sowie Packages, die kürzlich ein größeres Refactoring erhalten haben, fallen ebenfalls auf. Als dritte Kategorie erfolgt ein Betrachten der Metadaten, was unter anderem Typosquatting erkennen soll. So sei beispielsweise webb3 eine Schadversion des Packages web3 – und Letzteres weist eine 300.000-mal höhere Download-Anzahl auf.

Um safe npm zu verwenden, ist das Installieren der als Preview vorliegenden Socket CLI nötig:

npm install -g @socketsecurity/cli

Dieser Befehl fügt eine socket-Binary zu PATH hinzu. Anschließend lässt sich socket npm install anstatt npm install verwenden, um die Sicherheitsfunktionen zu nutzen. Das Feature safe npm ist ab der CLI-Version 0.5.1 enthalten. Die installierte Versionsnummer lässt sich mit socket --version überprüfen.

Um nicht in bestehendem Code socket npm verwenden zu müssen, empfiehlt das Entwicklungsteam das Verwenden eines Shell-Alias in .bashrc oder .zshrc:

alias npm="socket-npm"​

alias npx="socket-npx"​

In diesem ersten Release kann safe npm mit den standardmäßigen socket.yml-Einstellungen umgehen. Auf GitHub können Interessierte zum Socket-CLI-Tool beitragen. Auch ein ähnliches Tool für das Python-Ökosystem, safe pip, steht bereits als Feature Request zur Debatte.

Weitere Informationen zum initialen Release von safe npm bietet ein Blogeintrag.

(mai)