Skip to main content

vm2 EUVDEUVD-2026-81599

| CVE-2026-92950 CRITICAL
Insecure Default Variable Initialization (CWE-453)
9.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Craft malicious script using require(__filename)
  2. Delivery
    Victim runs vm2 CLI on file
  3. Exploit
    Script re-executes in host realm
  4. Execution
    Load host fs/child_process
  5. Impact
    Execute arbitrary code on host

Vulnerability Assessment

Weakness
CWE
Exploitation Conditions

Exploitation requires the vm2 CLI tool specifically to be invoked against an attacker-controlled script file - the vulnerable path is the CLI, not the library's programmatic VM/NodeVM API. The limiting factors are significant: the attack vector is local (AV:L), a user or automated job must actively run the CLI on the malicious file (UI:P), and the environment must be running vm2 before 3.11.7. There is no remote or network-facing trigger; the flaw only matters where untrusted JavaScript is passed to the vm2 command-line utility, which is a narrower deployment pattern than server-side sandbox usage.

Impact

The vendor CVSS 4.0 vector (9.3) rates this critical, but the vector itself reveals why real-world risk is materially lower than the network-facing vm2 escapes in this same wave: AV:L (local attack vector) plus UI:P (passive user interaction) mean exploitation requires a victim to run the vm2 CLI tool against an attacker-supplied malicious script file. This is not a remote, unauthenticated, service-facing flaw - it is a 'who runs the vm2 CLI over untrusted code' scenario, i.e. the vm2 threat model applied to a developer/utility surface rather than a production server endpoint. Technical impact is genuine and severe once triggered (full host RCE via require(__filename) re-executing in the host realm, reaching fs/child_process). Exploitation status: no public exploit identified in the input, though proof-of-concept detail is likely present in the GHSA/VulnCheck advisory; not in CISA KEV and no EPSS score supplied - treat as no confirmed active exploitation. Note the CWE assignment (CWE-453, Insecure Default Variable Initialization) is a poor fit for a sandbox-escape/RCE and should not be relied upon for triage. Net: real but conditional - prioritize where the vm2 CLI is invoked on untrusted input; deprioritize relative to the default-config network escapes.

Exploit ScenarioDerived

A developer or automated pipeline uses the vm2 CLI to 'safely' evaluate an untrusted JavaScript file. The attacker crafts that file to call require(__filename), which re-executes the script in the host Node.js realm outside the sandbox, giving it access to host modules like fs and child_process and thus arbitrary code execution as the CLI process. No public exploit is named in the data, but the technique is fully described in the advisory.

Act Now Prioritize within 24-48h. Why: CRITICAL severity + public POC available.
1 public PoC Patch available 0.2% 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 the vm2 Node.js sandboxing library before 3.11.7 lets an attacker who supplies a malicious script file to the vm2 command-line tool execute arbitrary code in the host Node.js process, gaining access to host modules such as fs and child_process. The vulnerable entry point is the CLI utility specifically, not the library's programmatic VM/NodeVM API: an attacker-crafted script uses require(__filename) to re-execute itself in the host realm and slip past the sandbox membrane. Exploitation is local rather than network-facing (CVSS 4.0 AV:L/UI:P, PR:N), requiring a victim or automated job to invoke the vm2 CLI against the attacker-controlled file; the vendor rating is 9.3 (critical), but the local vector and required user interaction make real-world exposure materially narrower than the network-facing vm2 escapes, and there is no public exploit identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade vm2 to 3.11.7 or later, which fixes the CLI host-realm breakout; apply the update per the GitHub advisory GHSA-jxxv-8r27-vm4p (https://github.com/patriksimek/vm2/security/advisories/GHSA-jxxv-8r27-vm4p) and verify with npm ls vm2 that no transitive dependency still pins an older release. Where immediate upgrading is not possible, stop feeding untrusted or externally supplied JavaScript to the vm2 CLI (the affected surface) and, if sandboxing is still required, call the programmatic VM/NodeVM API instead, which is not impacted by this CLI-specific flaw; treat any script file as fully privileged input in the meantime. Additional compensating controls, each with trade-offs: run the vm2 CLI as an unprivileged, non-root user with a hardened filesystem namespace so a breakout cannot touch sensitive host files (reduces blast radius but does not prevent code execution); execute the CLI inside a container or VM with seccomp/AppArmor confinement and no network egress (blocks host fs/child_process abuse but adds operational overhead and may break legitimate scripts); and restrict who can place files that the CLI consumes, since exploitation requires a victim or scheduled job to invoke the tool on the attacker-controlled file, with UI:P making social-engineering or supply-chain delivery the practical trigger. Detection should focus on CLI invocations of vm2 against files originating from untrusted sources, and on child_process spawning or unexpected fs access from processes that normally only run sandboxed snippets.

Affected VersionsENISA

vm2 0 <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 library that isolates untrusted JavaScript inside a separate V8 context using Proxy-based membranes, wrapping host objects so that guest code cannot reach host prototypes or native modules. CVE-2026-92950 is rooted in CWE-453 (Insecure Default Variable Initialization): in vm2 before 3.11.7, the bundled CLI wrapper initializes its script-loading context in a way that exposes the host-side filename/host realm references, so a script passed on the command line can call require(__filename) to re-load and re-execute itself outside the sandbox, escalating from guest code to the parent Node.js process where fs and child_process are reachable. This is a host-realm breakout rather than a within-sandbox JS escape, and it is confined to the CLI code path in the patriksimek:vm2 package; applications that embed the library and call the VM/NodeVM APIs directly are not the vulnerable surface. The CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P, high confidentiality/integrity/availability on both vulnerable and subsequent systems) reflects a local, unauthenticated precondition where the victim is induced to run the CLI on a hostile file; the independent assessment concurs with a CVSS 3.1 equivalent of AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H.

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 9.3 CRITICAL
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
vuln.today AI 8.6 HIGH

CLI runs on a local attacker-supplied file so AV:L and UI:R; escape crosses the sandbox trust boundary into the host process (S:C) yielding full host RCE (C/I/A:H).

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
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 9.3

DescriptionCVE.org

vm2 before 3.11.7 contains a sandbox escape vulnerability in the CLI tool that allows attackers to execute arbitrary code in the host Node.js process. Attackers can supply a malicious script file to the vm2 CLI that uses require(__filename) to re-execute itself in the host realm, bypassing sandbox isolation and accessing host modules like fs and child_process.

Technical POC Analysis

CWE-453 (also CWE-829/CWE-1188 per advisory): bin/vm2:3 - lib/cli.js:7-18 calls NodeVM.file(path, { verbose: true, require: { external: true } }) without require.root, require.context, or require.bui…

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Latest POC

1 public PoC link from github

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

A critical sandbox-escape flaw in the vm2 Node.js sandboxing library (CVE-2026-92950) allows a malicious script file processed by the vm2 command-line tool to break out of the sandbox and run arbitrary code inside the host Node.js process, reaching sensitive host modules such as fs and child_process. Because vm2 is typically embedded in CI/CD pipelines, build agents, and internal automation platforms, a single untrusted or attacker-supplied script could compromise the credentials, source code, and network access available to those systems. The attack is local and requires an operator or automated job to invoke the CLI against the crafted file, and no public exploit has been identified, so exposure is narrower than a network-facing flaw, but the absence of a vendor patch makes this a priority for teams that process untrusted scripts in shared or privileged environments.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis, and no public exploit identified at time of analysis. Interim mitigations: stop invoking the vm2 CLI against untrusted or externally sourced script files; remove or disable the CLI entry point from CI/CD pipelines and shared automation hosts; run any remaining usage inside a disposable, least-privilege container with no host filesystem mounts, no host credentials or cloud tokens, and no network egress; apply OS-level sandboxing and seccomp profiles; restrict who can submit scripts; monitor and alert on unexpected host-module access or self-re-execution behavior; and migrate to an alternative isolation mechanism such as isolated-vm, Node.js worker threads with permission restrictions, or a hardened container boundary.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Medium
popular but deprecated Node.js sandbox library; CLI surface narrower still
Threat Intel
1
1 source
Data Quality
4 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor 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 Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity + public POC available
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
Poc
System Exposure· derived
Small
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

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