Sandbox Escape über AggregateError Kritische Sicherheitslücken lassen Angreifer aus vm2 ausbrechen

Von Melanie Staudacher 4 min Lesedauer

Anbieter zum Thema

In der Sandbox vm2 für Node.js stecken mehrere Sicherheitslücken, drei davon sind kritisch. Eine ermöglicht den Ausbruch aus der Sandbox samt Codeausführung. Korrigiert sind die Probleme in Version 3.11.8.

Über sechs Schwachstellen in der Node.js-Sandbox vm2 können Angreifer aus der isolierten Umgebung ausbrechen und auf dem Host beliebigen Code ausführen. Betreiber sollten schnell auf Version 3.11.8 aktualisieren.(Bild:  Gemini / KI-generiert)
Über sechs Schwachstellen in der Node.js-Sandbox vm2 können Angreifer aus der isolierten Umgebung ausbrechen und auf dem Host beliebigen Code ausführen. Betreiber sollten schnell auf Version 3.11.8 aktualisieren.
(Bild: Gemini / KI-generiert)

Das BSI hat sechs vm2-Schwachstellen in einen Sicherheitshinweis gesammelt. Angreifer, die die Schwachstellen erfolgreich ausnutzt, können demnach beliebigen Programmcode ausführen, Sicherheitsmaßnahmen umgehen, Daten manipulieren oder einen Denial-of-Service-Zustand auslösen. Dies sind die Schwachstellen:

vm2 ist eine Open-Source-Sandbox, in der nicht vertrauenswürdiger Code der in Node.js integrierten Module ausgeführt werden kann. Laut BSI sind alle vm2-Versionen vor 3.11.8 betroffen, auf UNIX, Windows und sonstigen Betriebssystemen.

Sandbox-Ausbruch über AggregateError

Die schwerwiegendste Schwachstelle EUVD-2026-81604 / CVE-2026-92955 steckt laut Enisa in NodeVM. Angreifer können dort über die internen Eigenschaften des Node.js-Konsolenobjekts „console._stdout“ und „console._stderr“ auf Getter und Setter der Eigenschaft „proto“ des Hosts zugreifen, also der Anwendung außerhalb der Sandbox. Darüber lässt sich der Prototyp eines Objekts lesen und ändern. Damit überschreiben sie „EventEmitter.prototype.emit“, eine Methode der Node.js-Klasse EventEmitter, und lösen Prozess-Ereignisse aus. Der Code der Angreifer läuft dann im Kontext des Prozesses und umgeht die Beschränkungen für die Codegenerierung. Die Sicherheitslücke wurde mit vm2 3.11.8 geschlossen.

Der CVSS-Vektor weist einen Angriff über das Netzwerk mit geringer Komplexität aus. Es sind weder Anmeldung noch Nutzerinteraktion nötig, und die Auswirkungen auf Vertraulichkeit, Integrität und Verfügbarkeit sind hoch, auch in nachgelagerten Komponenten.

Unvollständige Bereinigung von Fehlerobjekten

Auch bei EUVD-2026-81584 / CVE-2026-92934 können Angreifer aus der Sandbox ausbrechen. Die Schwachstelle beruht auf einer unvollständigen Korrektur der Eigenschaft „Error.cause“, die in einem JavaScript-Fehlerobjekt auf den ursprünglichen Fehler verweist. Der Fehler tritt auf, wenn zyklische, vom Host umschlossene „AggregateError“-Objekte während eines einzelnen Durchlaufs des Exception-Handlers abgefangen werden. Angreifer können dabei die Zyklus­erkennung in „handleException“ umgehen und auf unbereinigte Host-Proxys im „errors“-Array zugreifen. Das ermöglicht die vollständige Ausführung von Code aus der Ferne sowie das Auslesen von Prozessinformationen aus der Sandbox. Auch hier löst Version 3.11.8 das Problem.

Veränderbare Prototypen von Typed Arrays

Ebenfalls kritisch ist die Schwachstelle EUVD-2026-81602 / CVE-2026-92953, die die Prototypen von Typed Arrays betrifft. Das sind JavaScript-Objekte für binäre Daten, ein Prototyp ist eine Vorlage, die festlegt, welche Eigenschaften und Methoden alle Objekte einer Klasse erben. vm2 schützt von Version 3.11.0 bis vor 3.11.8 die Host-Prototypen „Uint8Array.prototype“, „%TypedArray%.prototype“ und „ArrayBuffer.prototype“ nicht vor Änderungen aus der Sandbox. Angreifer erreichen die Prototypen über sogenannte Prototype-Walking-Techniken und können sie verändern. Die Folge: Typed Arrays, die die Anwendung selbst erzeugt, übernehmen die vom Angreifer gesetzten Eigenschaften. Das gilt auch noch, wenn der Sandbox-Code schon fertig ausgeführt wurde. Diese Ausführung startet die Anwendung mit der Methode „VM.run()“.

Diese Sicherheitslücke betrifft im Gegensatz zu den anderen Schwachstellen nur vm2-Versionen von 3.11.0 bis vor 3.11.8.

Weitere Schwachstellen

Auf dem Papier weniger schwerwiegend, aber dennoch wichtig, sind die drei weiteren vom BSI genannten Schwachstellen.

  • EUVD-2026-81608 / CVE-2026-92959: vm2 setzt die Konfigurationsoption „allowAsync: false“ nicht vollständig durch. Mit ihr sollen Betreiber asynchrone Ausführung in der Sandbox verbieten. Code in der Sandbox kann die Sperre über die Methoden der Klasse „Promise“ umgehen, etwa „Promise.resolve“ und „Promise.all“. Der Sandbox-Code kann so Aufgaben planen, die erst nach dem Ende von „VM.run()“ oder „NodeVM.run()“ laufen. Diese Methoden starten die Ausführung in der Sandbox. Die Anwendung hält die Ausführung zu diesem Zeitpunkt für beendet. An dieser Stelle könnte der vom BSI genannte DoS-Zustand eine mögliche Folge sein. Gefixt wurde das Problem in Version 3.11.8.
  • EUVD-2026-81583 / CVE-2026-92933: NodeVM reicht das Node.js-Modul „util“ ungefiltert an die Sandbox weiter. Auf Node.js ab Version 22.9 liefert die darin enthaltene Funktion „util.getCallSites()“ dem Sandbox-Code den Aufrufstapel des Host-Prozesses, einschließlich absoluter Dateipfade, Funktionsnamen und Zeilennummern. Hierdurch wird der Schutzmechanismus zur Ausblendung von Host-Frames umgangen, der im Rahmen der früheren Korrektur „GHSA-v27g-jcqj-v8rw“ eingeführt wurde und lediglich für den Formatierungskanal „Error.prepareStackTrace“ gilt. Auch dieser Fehler ist ab Version 3.11.8 gelöst.
  • EUVD-2026-81586 / CVE-2026-92936: In vm2 3.11.0 bis 3.11.6 gelangen absolute Dateipfade des Hosts über die Eigenschaft „.stack“ von Fehlerobjekten in den Sandbox-Code.
  • Angreifer lösen dazu einen „SyntaxError“ aus, etwa über die Funktion „eval“ mit fehlerhaftem Quelltext, und lesen dann „.stack“ aus. So können Angreifer sensible Informationen offenlegen. Diese Sicherheitslücke wurde bereits in 3.11.7 behoben.

* Hinweis zum EPSS-Score: Das Exploit Prediction Scoring System zeigt die Wahrscheinlichkeit in Prozent an, mit der eine Schwachstelle innerhalb der nächsten 30 Tage ausgenutzt wird. Der ent­sprechende Score kann sich im Laufe der Zeit verändern. Sofern nicht anders angegeben, beziehen wir uns auf den Stand des EPSS-Scores zum Zeitpunkt der Veröffentlichung des Artikels.

(ID:50978407)

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zur IT-Sicherheit

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung