Die Entwickler von Yarn und npm, zweier Paketmanager für die JavaScript-Laufzeitumgebung Node.js, haben mittels Updates insgesamt drei Sicherheitslücken geschlossen, deren Schweregrad durchweg als "hoch" gilt. Von einem der Sicherheitsprobleme ist (beziehungsweise war) zudem auch der Paketmanager pnpm betroffen – und auch für ihn gibt es jetzt ein Update.

Angreifer hätten die Lücken missbrauchen können, um beliebige Binärdateien auf PCs mit verwundbaren Versionen zu kopieren oder vorhandene Dateien mit beliebigem (Schad-)Code zu überschreiben. Wie das npm-Team in einem Blogeintrag erläutert, müssten sie ihre Opfer allerdings erst einmal dazu bringen, ein speziell präpariertes Paket zu installieren.

Während eines Scans der npm-Registry haben die Entwickler keine (derzeit dort befindlichen) Pakete gefunden, die die Lücken aktiv ausnutzen.

Binaries (über-)schreiben mittels Paketinstallation

Laut einem Blogeintrag von Daniel Ruf, des Entdeckers der drei Lücken, basieren sie auf der Tatsache, dass die Paketmanager beliebige (valide) Pfadangaben zu Binärdateien im "bin"-Feld in der Konfigurationsdatei package.json erlaub(t)en, für die anschließend symbolische Verknüpfungen (Symlinks) auf dem System erzeugt werden. package.json dient der Verwaltung von Metadaten von Node.js-Paketen.

Aufgrund fehlender Beschränkungen/Überprüfungsmechanismen war es Angreifern mittels speziell präparierten Paketen unter anderem möglich, Symlinks auf Dateien außerhalb des node_modules-Ordners zu erzeugen ( CVE-2019-16775), bei der Paketinstallation (auch schreibend) auf beliebige Dateien auf dem System zuzugreifen (CVE-2019-16776) oder vorhandene Dateien zu überschreiben (CVE-2019-16777).

Wie das Node.js-Team in einem eigenen Blogeintrag mitteilte, ist die Durchführung eines solchen Angriffs unabhängig von der verwendeten Node.js-Version möglich: Alle Versionen seien in diesem Sinne verwundbar.

Die betroffenen Paketmanager wurden mit der Yarn-Version 1.12.1 und der npm-Version 6.13.4 gegen die drei Sicherheitslücken abgesichert. Laut Node.js sollen außerdem am 17. Dezember neue Node.js-Versionen mit dem aktualisierten npm erscheinen.

Zunächst war unklar, ob und inwiefern auch der Paketmanager pnpm von den Lücken betroffen ist, da dies aus Rufs Blogeintrag ursprünglich nicht klar hervorging. Gegenüber heise Security hat Daniel Ruf nun bestätigt, dass einer seiner Proof-of-Concept-Angiffe – nämlich der aus dem Abschnitt "plant a binary" (Platzieren von Dateien außerhalb von node_modules – auch auf pnpm anwendbar gewesen sei.

Mittlerweile gibt es auch für pnpm ein Update: Version 4.5.0 behebt die vorhandene Lücke. Ansonsten verfügte pnpm bereits zuvor über Schutzmechanismen, die die beiden anderen Werkzeuge erst mit den aktuellen Sicherheitsupdates erhielten.

Update 17.12.19, 14:29: Nach Rücksprache mit Daniel Ruf haben wir Informationen zur Verwundbarkeit von pnpm und dem bereitstehenden Update hinzugefügt. (ovw)