Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconSubmit crafted JS to default vm2 sandbox
-
DeliveryCall WebAssembly.compileStreaming to get host-realm Promise
-
ExploitHijack Symbol.species via Promise.prototype.finally
-
InstallReceive raw host error object
-
C2Walk host error constructor to host Function constructor
-
ExecuteRecover host process object and load fs/child_process
-
ImpactExecute code with host process privileges
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V15 - Secure Coding and Architecture Protection mechanism completeness
|
| Exploitation Conditions | Requires that the host application runs attacker-controlled JavaScript inside a vm2 sandbox - but critically NO special or unsafe configuration is needed: a plain default |
| Impact | This is a genuine top-priority issue, not a high-CVSS-but-low-real-risk one. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N with full VC/VI/VA:H and subsequent-system SC/SI/SA:H = 10.0) is credible because the escape is reachable from a completely DEFAULT |
| Exploit ScenarioDerived | An application uses vm2's default |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 17, 2026
Sandbox escape in vm2 3.10.1 through 3.11.6 on Node.js 26 lets code inside a default new VM() sandbox reach the host realm and recover the real host process object, granting full host Node.js capabilities such as loading host modules like fs, with high confidentiality, integrity, and availability impact on the process running the sandbox. The assessed vector is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H (CVSS 4.0 base score 10.0), meaning unauthenticated remote attackers, and no NodeVM, require permission, or host-object injection is needed - the only hard precondition is that the host process runs Node.js 26. The issue bypasses the earlier JSPI fix for GHSA-6j2x-vhqr-qr7q and is fixed in 3.11.7; no public exploit identified at time of analysis.
RemediationAI
Upgrade to vm2 3.11.7 (Vendor-released patch: 3.11.7) as directed by the GitHub advisory at https://github.com/patriksimek/vm2/security/advisories/GHSA-wjwh-qqvp-g4p4, and confirm the dependency is not pinned to a version in the 3.10.1-3.11.6 range. If immediate upgrade is not possible, the most targeted compensating control is to run the sandboxing host on a Node.js release other than 26, since the escape depends on WebAssembly.compileStreaming/instantiateStreaming producing a raw host-realm Promise/error on that runtime - the trade-off is pinning the host to an older Node.js line and forgoing Node 26 features and fixes. Where practical, avoid executing untrusted or attacker-supplied JavaScript inside vm2 sandboxes entirely, and monitor the VulnCheck advisory at https://www.vulncheck.com/advisories/vm2-3.10.1-through-3.11.6-sandbox-escape-via-webassembly-compilestreaming for updated guidance; avoid relying on NodeVM, require permissions, or host-object injection restrictions as mitigations, because a plain default new VM() is sufficient to trigger this escape.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
vm2 is a widely used Node.js sandbox that runs untrusted JavaScript in a separate VM context, and this flaw is a protection-mechanism failure (CWE-693) in the separation between the sandbox realm and the host realm. On Node.js 26, WebAssembly.compileStreaming and WebAssembly.instantiateStreaming can return a raw host-realm Promise that rejects with a host-realm error object; by manipulating Symbol.species through Promise.prototype.finally, sandbox code captures that raw host error, walks from the host error constructor to the host Function constructor, and then reaches the genuine host process object. This dependency on a runtime-specific host-realm Promise/error means the escape is tied to Node.js 26 behavior on affected vm2 versions (CPE cpe:2.3:a:patriksimek:vm2:*:*:*:*:*:*:*:*), and it specifically reopens the JSPI entry-point path that the previous GHSA-6j2x-vhqr-qr7q fix closed by removing WebAssembly.promising and WebAssembly.Suspending.
Know when Vm2 gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
Default-config sandbox escape from network-reachable untrusted JS is PR:N/UI:N; escaping the sandbox to the host is S:C with full host C/I/A; AC:L within vm2's threat model though it needs a Node.js 26 host.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
vm2 versions 3.10.1 through 3.11.6 contain a sandbox escape reachable from a default new VM() sandbox when running on Node.js 26. WebAssembly.compileStreaming and WebAssembly.instantiateStreaming can produce a raw host-realm Promise that rejects with a host-realm error object; by controlling Symbol.species via Promise.prototype.finally, sandbox code receives that raw host error, walks from the host error constructor to the host Function constructor, and recovers the real host process object, gaining host Node.js capabilities (e.g. access to host modules such as fs) in the context of the process running the sandbox. No NodeVM, require permission, host object injection, or otherwise unsafe configuration is required. This is a bypass of the fix for GHSA-6j2x-vhqr-qr7q, which removed the JSPI entry points WebAssembly.promising and WebAssembly.Suspending. The issue is fixed in 3.11.7.
Blast Radius
ecosystem impact- 10 npm packages depend on vm2 (1 direct, 9 indirect)
Ecosystem-wide dependent count for version 3.10.1.
Technical POC Analysis
The bug is a Protection Mechanism Failure (CWE-693; the advisory also lists CWE-913).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Organizations using the vm2 sandbox library versions 3.10.1 through 3.11.6 on Node.js 26 face a critical sandbox escape that allows unauthenticated remote attackers to fully compromise the host process. With a CVSS score of 10.0, this vulnerability enables complete loss of confidentiality, integrity, and availability, affecting any application that relies on vm2 for isolation. Leadership should prioritize immediate patching to version 3.11.7, as no public exploit has been identified at time of analysis but the risk is severe.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
vm2 is an advanced vm/sandbox for Node.js. Rated critical severity (CVSS 10.0), this vulnerability is remotely exploitab
vm2 is a sandbox that can run untrusted code with Node's built-in modules. Rated critical severity (CVSS 10.0), this vul
vm2 is a sandbox that can run untrusted code with whitelisted Node's built-in modules. Rated critical severity (CVSS 10.
There exists a vulnerability in source code transformer (exception sanitization logic) of vm2 for versions up to 3.9.15,
vm2 is a sandbox that can run untrusted code with whitelisted Node's built-in modules. Rated critical severity (CVSS 10.
This affects the package vm2 before 3.9.4 via a Prototype Pollution attack vector, which can lead to execution of arbitr
Full sandbox escape with arbitrary code execution allows remote attackers to break out of vm2's Node.js sandbox environm
Sandbox escape in vm2 for Node.js allows remote unauthenticated attackers to execute arbitrary commands on the host syst
Sandbox escape in vm2 (patriksimek/vm2) versions prior to 3.11.3 enables remote code execution on the host Node.js proce
Sandbox escape in vm2 Node.js sandbox before 3.10.2 via Promise.prototype.then/catch callback sanitization bypass. PoC a
vm2 is a sandbox that can run untrusted code with whitelisted Node's built-in modules. Rated critical severity (CVSS 9.8
The package vm2 before 3.9.10 are vulnerable to Arbitrary Code Execution due to the usage of prototype lookup for the We
EUVD-2026-81605
GHSA-538q-xxpg-6h4r
NVD
CVE.org
EPSS
Exploit-DB