„`html
Zusammenfassung
Die Sicherheitslücke CVE-2026-47209 betrifft vm2, eine Open-Source-Sandbox-Umgebung für Node.js. Ein Fehler in der BaseHandler.set Trap-Implementierung ermöglicht es Angreifern, gefährliche Cross-Realm Symbole auf Host-Objekte zu schreiben und dadurch die Sandbox zu durchbrechen. Der Schweregrad wird mit „High“ (CVSS 8.6) bewertet.
Betroffene Systeme
Betroffen sind alle Versionen von vm2 vor Version 3.11.4. Die Lücke existiert in der Datei bridge.js, speziell in der BaseHandler.set Trap-Implementierung in Zeile 1231. Systeme, die ältere vm2-Versionen zur Isolierung von Node.js-Code verwenden, sind dem Risiko ausgesetzt.
Technische Details
Das Kernproblem liegt in der fehlerhaften Verarbeitung des receiver-Parameters durch die BaseHandler.set Trap. Gemäß der Proxy-Spezifikation sollte bei receiver !== proxy eine eigene Eigenschaft auf dem Receiver erstellt werden. Dies ist beispielsweise der Fall, wenn ein Kindobjekt vom Proxy durch Object.create() erbt.
Die aktuelle Implementierung ignoriert diese Bedingung und schreibt stattdessen immer direkt auf das Host-Zielobjekt mittels otherReflectSet(object, key, value). Dies führt dazu, dass vererbte Eigenschaftszuweisungen in die Host-Umgebung durchsickern.
Angreifer können diese Schwachstelle nutzen, um gefährliche Cross-Realm Symbole wie nodejs.util.promisify.custom auf Host-Objekte zu schreiben. Dies ermöglicht einen Umgehungsvektor für künftige Sicherheitsprüfungen wie isDangerousCrossRealmSymbol-Validierungen und führt letztlich zur Sandbox-Flucht.
Empfohlene Massnahmen
- Aktualisierung von vm2 auf Version 3.11.4 oder höher durchführen
- Durchsicht existierender Code-Abhängigkeiten auf vm2-Versionen
- Sicherheitstests für Sandbox-Implementierungen durchführen
- Monitoring auf verdächtige Cross-Realm Symbol-Zugriffe implementieren
Bewertung
CVSS Score: 8.6 (High)
Angriffsvektor: Network
Status: Patch verfügbar (Version 3.11.4)
„`