Skip to main content

vm2 CVE-2026-26332

| EUVDEUVD-2026-26993 CRITICAL
Code Injection (CWE-94)
2026-05-04 GitHub_M GHSA-55hx-c926-fr95
10.0
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Submit crafted JS to vm2 sandbox
  2. Delivery
    Build DisposableStack with throwing disposers
  3. Exploit
    Trigger SuppressedError with Symbol error name
  4. Execution
    Walk suppressed.constructor.constructor to host Function
  5. Persist
    Retrieve real process and child_process
  6. Impact
    Execute arbitrary OS commands on host

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the target application actually executes untrusted, attacker-supplied JavaScript inside a vm2 VM/NodeVM instance (i.e. attacker input reaches vm.run()) on a vulnerable version (<= 3.10.4). The concrete trigger is the SuppressedError produced when multiple DisposableStack disposers throw during dispose(), combined with setting an Error's name to a Symbol to bypass sanitization - the published PoC requires DisposableStack/SuppressedError support, present on modern Node.js (confirmed on Node.js v24.13.0). What LIMITS exploitation is that vm2 must be in the data path for untrusted code; if the application only feeds trusted/static scripts to vm2, or uses vm2 merely as an unused transitive dependency, there is no exposure. No host-side authentication is required (PR:N) once code reaches the sandbox, and no user interaction is needed.

Impact

The signals are mostly aligned toward high priority but with one important nuance. The CVSS vector (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H = 10.0) reflects that any code reaching the sandbox achieves total host compromise with a scope change, and SSVC reinforces this with technical impact 'total' and automatable 'yes'. A reliable public PoC exists (SSVC exploitation: poc), making weaponization trivial for anyone running untrusted code through vm2. The counter-signal is EPSS at 0.06% (19th percentile) and no CISA KEV listing, indicating no observed mass exploitation in the wild. This is not a contradiction: the low EPSS reflects that vm2 is only exploitable in the specific deployment pattern where it actually executes untrusted attacker-supplied JavaScript - a real but not universal configuration - rather than a blanket internet-facing service. For organizations that do run untrusted code in vm2, this is a top-priority, drop-everything patch; for those who merely have vm2 as a transitive dependency without feeding it attacker-controlled input, the practical exposure is far lower. The PR:N rating is technically correct (no host authentication needed) but presumes the attacker can already submit code to the sandbox, which is the deployment premise of vm2 itself.

Exploit ScenarioDerived

An application uses vm2 to run user-submitted JavaScript (for example a code-playground, serverless function runner, formula/expression evaluator, or template engine). An attacker submits a small script that builds a DisposableStack with throwing disposers to produce a SuppressedError, walks its constructor chain to the host Function constructor, and obtains the real process object to call child_process.execSync. A public PoC demonstrating exactly this exists in the GHSA advisory, so exploitation requires no novel research and can be fully automated (SSVC automatable: yes).

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

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

Alert me

AnalysisAIv3 – Jun 30, 2026

Sandbox escape leading to remote code execution in the vm2 Node.js sandbox library affects all versions prior to 3.11.0, where the JavaScript SuppressedError mechanism (combined with DisposableStack disposal) lets untrusted code running inside the sandbox reach a host constructor and execute arbitrary commands on the underlying server. Any application that relies on vm2 to safely run attacker-controlled or untrusted JavaScript is fully compromised, with a working proof-of-concept published in the GHSA advisory. There is publicly available exploit code but no confirmed active exploitation; the SSVC framework rates it POC, automatable, with total technical impact, while EPSS remains low at 0.06%.

Earlier versions of this analysis (2)
v2 Jun 30, 2026 - 03:40 cvss changed CVSS 10.0

Sandbox escape leading to remote code execution affects the vm2 sandboxing library for Node.js in all versions prior to 3.11.0, where a flaw in the handling of the SuppressedError object lets untrusted code break out of the isolated VM context and execute arbitrary code on the host. Any application that relies on vm2 to safely run attacker-supplied or untrusted JavaScript is fully compromised. Publicly available exploit code exists (SSVC: PoC), though EPSS remains very low at 0.06%, and there is no public exploit identified as actively exploited in CISA KEV.

v1 May 04, 2026 - 17:45 CVSS 9.8

Remote code execution in vm2 (Node.js sandbox library) versions prior to 3.11.0 allows unauthenticated network attackers to escape the sandbox and execute arbitrary code on the host system. The SuppressedError vulnerability (GHSA-55hx-c926-fr95) is one of 13 full sandbox-escape primitives patched in this coordinated security release. CVSS 9.8 Critical reflects network-accessible, unauthenticated exploitation with no complexity barriers. No CISA KEV listing or public POC data at time of analysis, but vendor explicitly warns 'embedders running untrusted code should upgrade,' indicating active risk to production deployments using vm2 for sandboxing untrusted JavaScript execution.

RemediationAI

Vendor-released patch: vm2 3.11.0 - upgrade immediately to 3.11.0 or later, which closes this SuppressedError escape along with 12 other advisories in a coordinated security release (commits 119fd0aa, 4cb82cc9, and others referenced in GHSA-55hx-c926-fr95). Because vm2's entire purpose is isolating untrusted code and multiple independent escape primitives were just disclosed, upgrading is the only robust fix; partial workarounds are unreliable. If you cannot patch instantly, the most effective compensating control is to stop feeding attacker-controlled or untrusted JavaScript into vm2 until the upgrade lands - disable or gate any feature that lets external input reach vm.run(), at the cost of losing that functionality temporarily. Given the long history of vm2 sandbox escapes, strongly consider migrating untrusted-code execution to a process- or VM-level isolation boundary (e.g. isolated-vm, a separate hardened worker process, gVisor/container, or a serverless sandbox), which provides a real OS-enforced boundary rather than an in-process JavaScript one. Refer to the GHSA advisory (https://github.com/patriksimek/vm2/security/advisories/GHSA-55hx-c926-fr95) and the v3.11.0 release notes for the full advisory set.

Affected VersionsENISA

vm2 < 3.11.0

Affected Packages

npm vm2 fix: 3.11.0

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 (npm package 'vm2', CPE cpe:2.3:a:patriksimek:vm2) is a widely used Node.js library designed to execute untrusted JavaScript in an isolated context with controlled access to host resources - it is the security boundary itself, so any escape is critical. The root cause is CWE-94 (Improper Control of Generation of Code / code injection) realized as a sandbox-escape primitive: the ECMAScript SuppressedError object, produced when multiple disposers in a DisposableStack throw during dispose(), carries a 'suppressed' error reference whose prototype chain was not fully sanitized by vm2's bridge. By manipulating an Error's name to a Symbol and triggering stack evaluation, the attacker obtains an un-sanitized error object, walks e.suppressed.constructor.constructor to reach the host realm's Function constructor, and from there retrieves the real process object and child_process to run shell commands. This is one of 13 advisories closed in the v3.11.0 coordinated release, several of which are full sandbox-escape RCE primitives stemming from incomplete prototype/intrinsic sanitization across realm boundaries.

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

NVD PRIMARY 10.0 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 10.0 CRITICAL

Untrusted code in the sandbox needs no host auth (PR:N) and a reliable PoC makes it low-complexity (AC:L); escape from sandbox to host is a scope change (S:C) yielding full host compromise (C/I/A:H).

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:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
Red Hat 9.1 HIGH

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

6
Analysis Updated
Jun 30, 2026 - 03:43 vuln.today
v3 - CVSS changed
Analysis Updated
Jun 30, 2026 - 03:40 vuln.today
v2 - CVSS changed
CVSS changed
Jun 30, 2026 - 03:24 NVD
9.8 (CRITICAL) 10.0 (CRITICAL)
Patch available
May 04, 2026 - 18:32 EUVD
Patch released
May 04, 2026 - 17:16 nvd
Patch available
CVE Published
May 04, 2026 - 16:35 nvd
CRITICAL 9.8

DescriptionNVD

vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.0, SuppressedError allows attackers to escape the sandbox and run arbitrary code. This issue has been patched in version 3.11.0.

Executive ViewAI

Why It Matters

vm2 Node.js sandbox library versions before 3.11.0 contain a critical vulnerability enabling remote code execution through sandbox escape. Organizations that deploy vm2 to isolate untrusted JavaScript face complete compromise of that security boundary, allowing attackers operating system command execution. Patching to version 3.11.0 is required for all affected deployments.

Business Impact: Severe
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 81% exploitable
Prevalence
Medium
popular Node.js sandbox library but niche untrusted-code-execution use case
Threat Intel
1
1 source
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub VulDB

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.1%
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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
Very High
Technical Impact
Total

Priority Score

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

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

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