CVE-2026-93606
Last modified
CVE-2026-93606 is a critical-severity vulnerability rated 10/10 on the CVSS scale. vm2 (npm) versions 3.12.0 and earlier contain a sandbox escape in `VM` and `NodeVM`. When an embedder exposes a host API that returns a host-realm Promise, the bridge's rejection sanitizer (hostPromiseSanitizeReject / makeSanitizedPromiseCallback / normalizeHostPromiseCallbacks in lib/bridge.js) only wraps `then`/`catch` rejection slots that hold a function, and the sandbox-side `Symbol.species`/`.then` neutralization is installed only on the sandbox intrinsic `Promise.prototype`, so it never applies to a host Promise.
Description
vm2 (npm) versions 3.12.0 and earlier contain a sandbox escape in `VM` and `NodeVM`. When an embedder exposes a host API that returns a host-realm Promise, the bridge's rejection sanitizer (hostPromiseSanitizeReject / makeSanitizedPromiseCallback / normalizeHostPromiseCallbacks in lib/bridge.js) only wraps `then`/`catch` rejection slots that hold a function, and the sandbox-side `Symbol.species`/`.then` neutralization is installed only on the sandbox intrinsic `Promise.prototype`, so it never applies to a host Promise. Code running inside the sandbox can overwrite `p.constructor[Symbol.species]` on the host Promise and then call `p.then()` with no `onRejected` handler; V8 substitutes its internal Thrower, which re-throws the raw host rejection value into a resolve/reject closure captured by the attacker. This delivers an unsanitized, fully functional bridge proxy of the host object to sandboxed code, bypassing handleException and hostPromiseSanitizeReject. If the rejection value is host-pivotable (for example a host `process` object), this results in arbitrary code execution on the host. Fixed in 3.12.1.
Metrics
Weakness Enumeration
References
Timeline
- Published
- Last Modified
- Status
- Deferred
Frequently Asked Questions
What is CVE-2026-93606?
How severe is CVE-2026-93606?
How do I fix CVE-2026-93606?
How Strix Helps
- How Strix found a critical auth bypass in etcdStrix autonomously discovered a critical authentication bypass in etcd, later designated CVE-2026-33413.
- Autonomous PentestingAI agents that find and validate exploitable vulnerabilities like this one across your applications.
- PR ReviewsPentest every pull request so vulnerable code is caught before it ships to production.
- AI Penetration TestingHow AI-driven penetration testing continuously covers your attack surface.
Related CVEs from 2026
- CVE-2026-93600rustls-webpki (rustls/webpki) versions 0.101.0 through 0.103…2.2
- CVE-2026-93601rustls-webpki (the Rust webpki fork used by rustls) versions…2.2
- CVE-2026-93602rustls-webpki versions before 0.103.10 and 0.104.0-alpha.5 c…4.4
- CVE-2026-93603vm2 through 3.12.0 (fixed in 3.12.1) does not correctly hand…10
- CVE-2026-93604vm2 through 3.12.0 exposes Node.js's crypto.setFips() functi…7.2
- CVE-2026-93605vm2 NodeVM versions before 3.12.1 contain a sandbox escape v…10
- CVE-2026-9361A weakness has been identified in Edimax EW-7438RPn 1.12. Th…6.3
- CVE-2026-9362A security vulnerability has been detected in Edimax EW-7438…6.3
- CVE-2026-9363A vulnerability was detected in Edimax EW-7438RPn 1.12. This…6.3
- CVE-2026-9364A flaw has been found in projectworlds Online Art Gallery Sh…7.3
- CVE-2026-9365A vulnerability has been found in Ettercap up to 0.8.3. The …5.6
- CVE-2026-93650A vulnerability was determined in Saleor up to 3.20.118/3.21…3.7
Are you affected by CVE-2026-93606?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
