Dev News Daily ENDE

vm2 erhält an einem Abend 14 Sicherheitshinweise, acht davon kritisch; abgeschlossen mit Version 3.12.2

Vierzehn Sicherheitshinweise zu vm2, einer Node.js-Bibliothek zum Ausführen nicht vertrauenswürdigen JavaScripts in einer Sandbox, wurden am Abend des 5. Oktober innerhalb einer Stunde in der GitHub Advisory Database veröffentlicht (22:34–23:24 UTC). Acht sind als kritisch eingestuft, drei als hoch, drei als mittel. Mehrere tragen einen CVSS-Wert von 10,0.

Drei Gruppen von Korrekturen. Die Hinweise sind in drei Versionen behoben: fünf in 3.11.7, sechs in 3.11.8 und drei in 3.12.2. Jeder betroffene Bereich endet bei oder unter 3.12.1 – 3.12.2 ist also die Version, die alle vierzehn schließt.

vm2 erhält an einem Abend 14 Sicherheitshinweise, acht davon kritisch; abgeschlossen mit Version 3.12.2
vm2 erhält an einem Abend 14 Sicherheitshinweise, acht davon kritisch; abgeschlossen mit Version 3.12.2 — Dev News Daily

Was die Fehler bewirken. Der rote Faden: Code in der Sandbox erreicht den Host.

  • Sandbox-Ausbruch in NodeVM (GHSA-88hf-g992-jg85, kritisch, behoben in 3.11.8) sowie Ausbrüche über einen vom Host umhüllten AggregateError und über einen Promise-Pfad von WebAssembly.compileStreaming.
  • Host-Speicher. In einem Hinweis kann Sandbox-Code über den gemeinsamen Buffer-Pool von Node Speicher des Hosts lesen und schreiben; in einem anderen erhält der Gast, wenn eine Anwendung das eingebaute Modul zlib freigibt, einen Host-Puffer aus dem Pool, über den er Bytes außerhalb des Ergebnisses lesen und einen fremden Host-Puffer verändern kann.
  • Pfadprüfungen. Bei eigener Modulauflösung speicherte die Freigabeliste einen aufgelösten Pfad als Präfix ohne Trennzeichen, sodass ein Geschwister wie foo2/index.js die für foo gedachte Prüfung bestand (CVSS 10,0, behoben in 3.12.2). Ein verwandter Hinweis betrifft require.external ohne ausdrückliches require.root, was uneingeschränkten Host-Zugriff gewährte.
  • Wirkungslose Schalter und Abstürze. allowAsync: false ließ sich über statische Promise-Methoden umgehen, die Thenables übernehmen; die Option timeout über einen FinalizationRegistry-Callback; und ein abgelehnter Promise aus einem freigegebenen Host-Konstruktor konnte den Host-Prozess unter Nodes strenger Regel für unbehandelte Ablehnungen beenden.

Die Meldungen nennen mehr als ein Dutzend Forscher; fünf der vierzehn, darunter die jüngsten, nennen rexpository.

Was zu tun ist. Anwendungen, die mit vm2 fremden Code ausführen, sollten auf 3.12.2 wechseln. Mehrere Probleme hängen von der Konfiguration ab – welche eingebauten Module freigegeben sind, wie require eingerichtet ist, welche Host-Funktionen übergeben werden –, daher lohnt auch ein zweiter Blick darauf, was die Sandbox erhält.

Primärquelle
GitHub Advisory Database
https://github.com/advisories/GHSA-88hf-g992-jg85