Skip to main content

vm2 CVE-2026-93605

| EUVDEUVD-2026-82900 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. Access
    Submit malicious JS to NodeVM sandbox
  2. Delivery
    require('child_process') bypasses denylist
  3. Exploit
    Call execSync/exec with attacker command
  4. Execution
    Execute arbitrary commands on host
  5. Impact
    Full host compromise beyond sandbox

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

Exploitation requires the host application to have already run untrusted/attacker-controlled JavaScript inside a vm2 NodeVM instance AND to have configured that instance with builtin:['*'] (wildcard builtin allowance) or an explicit child_process entry in the allowed builtins. Under those conditions the sandboxed code simply calls require('child_process') and executes host commands - no authentication or user interaction beyond code submission. The key LIMITING factor is that this is NOT a default configuration: applications that omit child_process from their builtins allowlist (or allow no builtins) are not exploitable via this path. Additionally, vm2 is deprecated, so affected deployments are those still embedding the library to sandbox untrusted code.

Impact

The vendor-supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N with VC/VI/VA/SC/SI/SA all High = 10.0) frames this as maximum-severity unauthenticated remote code execution, and mechanically a sandbox escape that yields arbitrary host command execution does warrant near-top scores. However, the raw 10.0 is conditional: the description explicitly states exploitation only works 'when NodeVM is configured with builtin:["*"] or explicit child_process allowance.' That is a non-default host-application configuration, so the AT:N (no attack requirement) choice in the vendor vector is arguably too generous - AT:P is more honest. No EPSS score, no CISA KEV listing, and no explicit POC flag are provided in the input, so there is no evidence of active exploitation; the signals available are limited to VulnCheck's advisory and the vendor GHSA. Net: this is a genuinely high-priority issue for any deployment that runs untrusted code in vm2 NodeVM with builtins enabled (the flaw is trivial once that config is present - child_process was simply left off the DANGEROUS_BUILTINS denylist), but it is NOT a blanket 'every vm2 user is remotely ownable' situation. vm2 is also deprecated by its author, which shifts remediation toward migration rather than patching. Prioritize based on whether your app actually allows child_process or wildcard builtins.

Exploit ScenarioDerived

An application uses vm2 NodeVM to execute user-submitted JavaScript (e.g., an online code runner, serverless function evaluator, or plugin engine) and is configured with builtin:['*'] or an explicit child_process allowance. An attacker submits sandboxed code that calls require('child_process').execSync(...), which the DANGEROUS_BUILTINS denylist fails to block, executing arbitrary OS commands on the host. No public exploit was identified in the provided data, but the mechanism is documented in the VulnCheck and GHSA advisories and is trivial to reproduce.

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 18, 2026

Sandbox escape in vm2 NodeVM before 3.12.1 allows unauthenticated remote attackers to execute arbitrary commands on the host, but only when the application has been configured to allow child_process via builtin:['*'] or an explicit allowlist entry. Exploitation requires the host application to run untrusted JavaScript inside a NodeVM instance and to have this misconfiguration; default configurations that do not allow child_process are not vulnerable. The vendor-supplied CVSS 4.0 vector rates this 10.0, while the independent CVSS 3.1 assessment reflects high attack complexity (AC:H) due to the required misconfiguration. No public exploit code or active exploitation has been identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade to vm2 3.12.1 or later. Since vm2 is deprecated, consider migrating to a maintained sandboxing library such as isolated-vm. As a workaround, remove child_process from the builtins allowlist and avoid using builtin:['*']; instead, explicitly allow only the minimal set of required builtins. Note that this may break functionality that legitimately relies on child_process, so test thoroughly. Restricting untrusted JavaScript execution to fully isolated environments is also recommended. See advisory: https://github.com/patriksimek/vm2/security/advisories/GHSA-pq68-rvw4-xp4r.

Affected VersionsENISA

vm2 0 <3.12.1

Affected Packages

npm vm2 fix: 3.12.1

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 deprecated Node.js library for sandboxing untrusted JavaScript. The NodeVM component uses a DANGEROUS_BUILTINS denylist to block access to dangerous built-in modules like child_process, but the denylist omits child_process itself. This protection mechanism failure (CWE-693) means that when NodeVM is configured with builtin:['*'] or an explicit child_process entry, sandboxed code can require('child_process') and spawn host processes. The affected package (CPE cpe:2.3:a:patriksimek:vm2:*:*:*:*:*:*:*:*) includes all versions before 3.12.1. The vendor-supplied CVSS 4.0 vector rates this 10.0 (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), while the independent assessment uses CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H, reflecting the high attack complexity due to the required misconfiguration. vm2 has been deprecated and users are advised to migrate to alternatives such as isolated-vm.

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 9.0 CRITICAL

Attacker-supplied sandbox code needs no auth (PR:N) but exploitation depends on a non-default builtin/child_process allowance (AC:H); sandbox escape to host is S:C with full C/I/A:H.

3.1 AV:N/AC:H/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.8 CRITICAL

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 18, 2026 - 14:02 EUVD
CVE Published
Sep 18, 2026 - 13:20 cve.org
CRITICAL 10.0

DescriptionCVE.org

vm2 NodeVM versions before 3.12.1 contain a sandbox escape vulnerability where the DANGEROUS_BUILTINS denylist omits child_process despite blocking other host-spawning modules. Attackers can require child_process and execute arbitrary commands on the host system when NodeVM is configured with builtin:['*'] or explicit child_process allowance.

Technical POC Analysis

CWE-693 Protection Mechanism Failure.

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

vm2 NodeVM versions before 3.12.1 contain a critical sandbox escape that can lead to arbitrary command execution on the host, but only in applications that run untrusted JavaScript and explicitly allow child_process access. Organizations using default vm2 configurations without child_process are not exposed, while teams with the affected non-default setup face potential full host compromise, data loss, and service disruption. No public exploit identified at time of analysis, and the vendor-released patch is available in 3.12.1.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 68% exploitable
Prevalence
Medium
widely-used but deprecated Node.js sandbox library; vulnerable config is non-default
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub

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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
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

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