CVE-2026-92949: Sandbox Escape and State Mutation in vm2 via Accessor Property Descriptor Leak
Vulnerability ID: CVE-2026-92949
CVSS Score: 4.0
Published: 2026-10-01
CVE-2026-92949 is a sandbox bypass vulnerability in the vm2 library affecting versions 3.9.6 through 3.11.6. The flaw exists due to a breakdown in the ReadOnlyHandler proxy boundary, allowing sandboxed scripts to obtain direct references to wrapped property setters on frozen host-bound objects, ultimately leading to unauthorized state modification in the host environment. This security failure violates the read-only contract enforced by the sandbox for frozen/readonly objects, though it does not by itself allow a full execution-level realm escape. Due to systemic and structural design difficulties in securing a shared-runtime JavaScript sandbox, the vm2 library has been officially deprecated.
TL;DR
A security flaw in vm2's proxy bridge allows sandboxed applications to leak and invoke property setters on frozen objects, enabling unauthorized write access to host-realm configurations and bypassing isolation controls.
⚠️ Exploit Status: POC
Technical Details
- CWE ID: CWE-471: Modification of Assumed-Immutable Data (MAID)
- Attack Vector: Network / Sandboxed Script Execution
- CVSS Score: 4.0 (Medium)
- EPSS Score: 0.00319 (Percentile: 22.47%)
- Impact: Low Integrity (State Modification of Host objects)
- Exploit Status: Proof of Concept (PoC) Verified
- KEV Status: Not Listed
Affected Systems
- Node.js applications running vm2 library within multi-tenant execution contexts
-
vm2: >= 3.9.6, < 3.11.7 (Fixed in:
3.11.7)
Code Analysis
Commit: d6ef73b
Fix sandbox bypass via accessor property descriptors by stripping setters on sandbox-bound properties and adjusting doPreventExtensions loops.
Exploit Details
- Official Test Suites: Exploitation via Object.getOwnPropertyDescriptor and lookupSetter is verified within unit tests of the fixing commit.
Mitigation Strategies
- Upgrade to vm2 version 3.11.7 or later to apply the explicit descriptor-filtering patch.
- Migrate the application execution pipeline from the deprecated vm2 library to isolated-vm.
- Enforce strict input sanitization inside host-defined accessors exposed to untrusted code.
- Avoid passing complex host objects containing getters/setters to sandboxed contexts.
Remediation Steps:
- Identify instances of vm2 in package.json and transitively via npm-list.
- Update the package version constraint to 3.11.7.
- Execute npm install to rebuild dependency trees with the patched version.
- Prepare a migration path to isolate untrusted scripts inside isolated-vm or isolated micro-containers.
References
- Official GitHub Security Advisory (GHSA-633r-hq9m-c4ff)
- VulnCheck Vulnerability Advisory
- Official Release tag (v3.11.7)
- NVD Vulnerability Page
- CVE.org Official Record
Read the full report for CVE-2026-92949 on our website for more details including interactive diagrams and full exploit analysis.
Top comments (0)