Skip to main content

vm2 CVE-2026-92956

| EUVDEUVD-2026-81605 CRITICAL
Protection Mechanism Failure (CWE-693)
10.0
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Submit crafted JS to default vm2 sandbox
  2. Delivery
    Call WebAssembly.compileStreaming to get host-realm Promise
  3. Exploit
    Hijack Symbol.species via Promise.prototype.finally
  4. Install
    Receive raw host error object
  5. C2
    Walk host error constructor to host Function constructor
  6. Execute
    Recover host process object and load fs/child_process
  7. Impact
    Execute 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 new VM() is vulnerable (no NodeVM, no require permission, no host-object injection). The single hard precondition is that the host process runs on Node.js 26, because the escape depends on WebAssembly.compileStreaming/instantiateStreaming producing a raw host-realm Promise/error on that runtime; hosts on other Node versions are not affected. Affected vm2 versions are 3.10.1 through 3.11.6 (fixed in 3.11.7). The primary limiting factor is therefore Node.js 26 adoption, not any application misconfiguration.

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 new VM() sandbox - no NodeVM, require permission, host-object injection, or unsafe configuration is required, which distinguishes it from most vm2 escape siblings that were config-gated. Within vm2's threat model (the entire product exists to run untrusted/attacker-supplied JavaScript), the attacker already legitimately controls the sandbox input, so the only remaining precondition is that the host runs on Node.js 26. No EPSS score, CISA KEV entry, or explicit weaponized POC was provided in the input, so exploitation status is 'no public exploit identified at time of analysis' - but this is a well-documented technique with a full write-up in the GHSA advisory, so working exploit code is trivially reconstructable. The one signal that tempers raw priority is the Node.js 26 requirement: environments still on Node 18/20/22 LTS are not affected, so real-world exposure tracks Node 26 adoption rather than being universal. Net: for any service running untrusted JS in vm2 on Node.js 26, treat as critical and patch to 3.11.7 immediately; vm2 is also deprecated/unmaintained, so migration to isolated-vm or a process/container boundary is the strategic fix.

Exploit ScenarioDerived

An application uses vm2's default new VM() to evaluate untrusted user-submitted JavaScript (e.g., a code playground, template engine, or serverless function runner) on a Node.js 26 host. The attacker submits script that calls WebAssembly.compileStreaming/instantiateStreaming to obtain a raw host-realm rejected Promise, hijacks Symbol.species via Promise.prototype.finally to receive the raw host error object, then walks from the host error constructor to the host Function constructor to recover the real host process object - gaining host Node.js capabilities such as require('fs') and command execution. No public exploit is listed in the input, but the GHSA advisory documents the full technique, making reliable exploitation straightforward.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

vm2 3.10.1 <3.11.7

Affected Packages

npm vm2 fix: 3.11.7

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

Vendor (VulnCheck) PRIMARY 10.0 CRITICAL
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
vuln.today AI 10.0 CRITICAL

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
Red Hat 9.9 HIGH

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
High
Subsequent system: Integrity
High
Subsequent system: Availability
High

Lifecycle Timeline

2
Patch available
Sep 17, 2026 - 15:17 EUVD
CVE Published
Sep 17, 2026 - 13:46 cve.org
CRITICAL 10.0

DescriptionCVE.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.

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

Why It Matters

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.

Business Impact: Severe
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 66% exploitable
Prevalence
Medium
popular but deprecated Node.js sandbox library, widely used historically
Threat Intel
1
1 source
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Out-of-Cycle
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Very High

Priority Score

50
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +50
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

More in Vm2

View all
CVE-2023-37466 CRITICAL POC
10.0 Jul 14

vm2 is an advanced vm/sandbox for Node.js. Rated critical severity (CVSS 10.0), this vulnerability is remotely exploitab

CVE-2023-32314 CRITICAL POC
10.0 May 15

vm2 is a sandbox that can run untrusted code with Node's built-in modules. Rated critical severity (CVSS 10.0), this vul

CVE-2023-30547 CRITICAL POC
10.0 Apr 17

vm2 is a sandbox that can run untrusted code with whitelisted Node's built-in modules. Rated critical severity (CVSS 10.

CVE-2023-29199 CRITICAL POC
10.0 Apr 14

There exists a vulnerability in source code transformer (exception sanitization logic) of vm2 for versions up to 3.9.15,

CVE-2022-36067 CRITICAL POC
10.0 Sep 06

vm2 is a sandbox that can run untrusted code with whitelisted Node's built-in modules. Rated critical severity (CVSS 10.

CVE-2021-23449 CRITICAL POC
10.0 Oct 18

This affects the package vm2 before 3.9.4 via a Prototype Pollution attack vector, which can lead to execution of arbitr

CVE-2026-26956 CRITICAL POC
9.8 May 04

Full sandbox escape with arbitrary code execution allows remote attackers to break out of vm2's Node.js sandbox environm

CVE-2026-24120 CRITICAL POC
9.8 May 04

Sandbox escape in vm2 for Node.js allows remote unauthenticated attackers to execute arbitrary commands on the host syst

CVE-2026-45411 CRITICAL POC
9.8 May 13

Sandbox escape in vm2 (patriksimek/vm2) versions prior to 3.11.3 enables remote code execution on the host Node.js proce

CVE-2026-22709 CRITICAL POC
9.8 Jan 26

Sandbox escape in vm2 Node.js sandbox before 3.10.2 via Promise.prototype.then/catch callback sanitization bypass. PoC a

CVE-2023-29017 CRITICAL POC
9.8 Apr 06

vm2 is a sandbox that can run untrusted code with whitelisted Node's built-in modules. Rated critical severity (CVSS 9.8

CVE-2022-25893 CRITICAL POC
9.8 Dec 21

The package vm2 before 3.9.10 are vulnerable to Arbitrary Code Execution due to the usage of prototype lookup for the We

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy