Skip to main content

vm2 CVE-2026-92947

| EUVDEUVD-2026-81596 CRITICAL
Information Exposure (CWE-200)
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 vm2 sandbox
  2. Delivery
    Trigger small Buffer.from/concat allocations
  3. Exploit
    Acquire ArrayBuffer over shared pool
  4. Execution
    Read/write host-realm memory
  5. Impact
    Disclose host secrets or crash process

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK

2 techniques across 2 tactics: Collection, Discovery

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

Exploitation Conditions

Requires that the host application execute attacker-controlled JavaScript inside a vm2 sandbox (version before 3.11.7) - this is vm2's core use case (plugin/eval/code-runner engines), so the condition is the deployment pattern itself rather than a special non-default toggle. There is no over-the-network vector against vm2 in isolation; the attacker must be able to get untrusted code into the VM/NodeVM. Limiting factors: applications that only run trusted code, or that have migrated off vm2 to isolated-vm, are not exposed; the flaw is fixed in 3.11.7. Because vm2 is deprecated, patching may mean migrating rather than upgrading.

Impact

The vendor assigns CVSS 4.0 10.0 (AV:N/AC:L/PR:N/UI:N with VC:H/VI:H/SC:H/SI:H), reflecting a full sandbox-boundary crossing where sandboxed code reads and writes host-realm memory. That severity is real ONLY within vm2's threat model: vm2 exists to execute untrusted JavaScript, so any host-memory read/write from inside the sandbox is a genuine security-relevant breach, not an inflated theoretical. However, the '10.0/network/unauthenticated' framing is a convention of that model - the actual precondition is that the deploying application already feeds attacker-controlled JS into a vm2 sandbox; there is no remote-over-the-wire vector against a default install. I assess the vendor's VI:H/SI:H as somewhat inflated: the primitive described (acquiring ArrayBuffers over the shared Buffer pool) is read-dominant memory disclosure (CWE-200), with write-to-host-buffers and DoS as secondary effects, so integrity/availability impact is real but lower than 'High'. No EPSS score, no CISA KEV listing, and no explicit public POC are present in the input - the GHSA advisory likely contains technical detail but weaponized exploit code is not confirmed. Net: a legitimately high-priority issue for anyone running vm2 with untrusted input, but the raw 10.0 overstates real-world blast radius given the gating threat model and the read-dominant nature of the primitive. vm2 is also deprecated/unmaintained, which raises long-term risk since the ecosystem has moved to isolated-vm.

Exploit ScenarioDerived

An application uses vm2 (before 3.11.7) to run user-supplied JavaScript - e.g. a plugin engine, online code runner, or template evaluator. Attacker-supplied code inside the sandbox triggers small Buffer allocations and acquires the underlying ArrayBuffers, which alias Node's shared host Buffer pool, then reads adjacent host memory (secrets, keys, other requests' data) and writes into host-realm buffers. No public POC is identified in the provided data, though the GHSA/VulnCheck advisories describe the technique.

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 before 3.11.7 lets attacker-supplied JavaScript running inside the sandbox read and write Node.js Buffer memory that belongs to the host realm, exposing sensitive host data drawn from Buffer.from, Buffer.concat and similar allocations while also enabling memory-pressure/availability abuse. The only precondition is that the host application executes untrusted code through vm2 - the library's core use case for plugin engines, eval services and code runners - so no special toggle is required; a remote attacker is unauthenticated per the CVSS vector (PR:N) but there is no over-the-network attack path against vm2 in isolation, and applications that only run trusted code or have already migrated to isolated-vm are unaffected. The vendor assigns CVSS 4.0 10.0 (VC:H/VI:H/SC:H/SI:H), while our independent assessment of the same issue is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:L - we agree on the confidentiality and sandbox-boundary (scope-change) severity but rate integrity impact lower; no public exploit identified at time of analysis and no CISA KEV entry, though the deployment pattern makes weaponizable preconditions trivial once a sandbox is reachable. Fixed in 3.11.7.

RemediationAI

Vendor-released patch: 3.11.7 - upgrade the vm2 dependency to that version or later and redeploy, following the vendor advisory at https://github.com/patriksimek/vm2/security/advisories/GHSA-fcqc-726x-5wfc (VulnCheck's write-up at https://www.vulncheck.com/advisories/vm2-before-3.11.7-memory-disclosure-via-buffer-pool covers the same fix). Because vm2 is a deprecated project with a history of sandbox escapes, upgrading should be treated as a stopgap and the strategic fix is to migrate untrusted-code execution to process-level isolation such as isolated-vm or an out-of-process worker under seccomp/cgroup constraints - the trade-off being extra plumbing and IPC overhead in exchange for a boundary the OS enforces rather than one JavaScript itself enforces. If neither upgrade nor migration is immediately possible, stop passing untrusted code into vm2 for workloads that handle secrets (this removes the exposure entirely), and if that is not feasible, run each sandbox invocation in a short-lived child process whose memory contains no long-lived credentials, drop privileges and cap address space and CPU for that process to blunt the availability and memory-corruption side of the flaw - the trade-off is reduced throughput and a re-architecture of state handling. Additional compensating steps with known limits: avoid keeping secrets in long-lived Node.js Buffers that could land in the shared pool while sandboxed code runs (fragile, since allocation is implicit), and never reuse a process that has executed untrusted vm2 code for privileged follow-up work (costly but effective containment).

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 Node.js sandbox library (implemented around Proxy/Reflect handlers and context manipulation) designed to run untrusted JavaScript with a restricted view of the host realm. Node.js does not allocate every Buffer directly from the heap: Buffer.allocUnsafe and small allocations routed through the internal allocator hand out slices of a single shared 8 KiB pool (Buffer.poolSize), so several logically unrelated Buffers - including host-realm ones created by Buffer.from and Buffer.concat - can be views onto the same backing ArrayBuffer. Because vm2's boundary enforcement does not account for this shared backing store, sandboxed code that obtains an ArrayBuffer from a small pooled allocation can reach beyond its own slice and inspect or mutate neighbouring host memory. This is a classic information-exposure flaw (CWE-200) that escalates into a sandbox-escape primitive: confidentiality is the dominant impact (host secrets, tokens, request data held in pooled buffers), with secondary integrity effects from writing into host buffers and availability effects from corrupting or exhausting the pool. The affected component is the npm package vm2 (CPE cpe:2.3:a:patriksimek:vm2:*:*:*:*:*:*:*:*), a dependency-level library rather than a standalone network service, which is why remote exploitation is always mediated by whatever host program embeds it.

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:L/SC:H/SI:H/SA:L
vuln.today AI 9.9 CRITICAL

Sandboxed code crosses into host realm (S:C) with high host-memory disclosure (C:H); write-to-buffer and DoS are secondary so I:L/A:L; PR:N/AV:N per vm2's untrusted-code threat model.

3.1 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:L/SC:H/SI:L/SA:N
Red Hat 8.3 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
Low
Subsequent system: Confidentiality
High
Subsequent system: Integrity
High
Subsequent system: Availability
Low

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 before 3.11.7 exposes Node's shared Buffer pool to sandboxed code, allowing disclosure of host memory used by Buffer.from, Buffer.concat, and related allocations. Sandboxed code can read and write to host-realm buffers by acquiring ArrayBuffers from small allocations, leading to sensitive data exposure and potential denial-of-service.

Technical POC Analysis

Primary bug class: CWE-200 Exposure of Sensitive Information to an Unauthorized Actor.

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 is used by Node.js applications to run untrusted JavaScript; this critical sandbox escape allows attacker-supplied code to cross the boundary and read or write host process Buffer memory, exposing sensitive data and enabling availability abuse. Organizations that accept untrusted code through vm2-such as plugin engines, eval services, or code runners-face potential data disclosure, integrity loss, and service disruption, while those running only trusted code or already on isolated-vm are not affected. Leadership should treat this as a severe risk to any externally facing service built on vm2 because the CVSS vector rates it unauthenticated (PR:N) and critical, though there is no over-the-network path against vm2 in isolation.

Business Impact: Severe
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations include migrating untrusted execution from vm2 to isolated-vm or process/OS-level isolation, disabling vm2-based plugin/eval/code-runner functionality until fixed, enforcing allowlisting and strict input validation, running Node.js with least privilege and memory limits, monitoring for host-memory disclosure or availability abuse, and rotating secrets if compromise is suspected.

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
Medium
popular but deprecated Node.js sandbox library, still embedded in many apps
Threat Intel
1
1 sources
Data Quality
5 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 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
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

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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