CVE-2026-47210
Deferred Deferred - Pending Action
Sandbox Escape in vm2 via WebAssembly JSPI

Publication date: 2026-06-12

Last updated on: 2026-06-12

Assigner: GitHub, Inc.

Description
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, a sandbox escape vulnerability in vm2 allows arbitrary code execution in the host process when untrusted code is executed with async support on runtimes exposing WebAssembly JSPI (WebAssembly.promising / WebAssembly.Suspending). In the tested configuration, a JSPI-backed Promise can reach Promise.prototype.finally() in a way that bypasses the expected Promise-species hardening and exposes a host-originated rejection object to attacker-controlled species logic, breaking the sandbox boundary. This issue has been patched in version 3.11.4.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-06-12
Last Modified
2026-06-12
Generated
2026-06-12
AI Q&A
2026-06-12
EPSS Evaluated
N/A
NVD
EUVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
patriksimek vm2 to 3.11.4 (exc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-913 The product does not properly restrict reading from or writing to dynamically-managed code resources such as variables, objects, classes, attributes, functions, or executable instructions or statements.
Attack-Flow Graph
AI Quick Actions
Instant insights powered by AI
Executive Summary

CVE-2026-47210 is a sandbox escape vulnerability in the vm2 library for Node.js versions prior to 3.11.4. It occurs when untrusted code runs with asynchronous support on runtimes exposing WebAssembly JSPI features (such as WebAssembly.promising and WebAssembly.Suspending).

The vulnerability arises because a JSPI-backed Promise can reach Promise.prototype.finally() in a way that bypasses the expected Promise-species hardening. This exposes a host-originated rejection object to attacker-controlled species logic, effectively breaking the sandbox boundary.

This flaw allows attackers to execute arbitrary code in the host process, compromising the security boundary that vm2 is supposed to enforce.

Impact Analysis

Exploitation of this vulnerability can lead to arbitrary code execution in the host process running the vm2 sandbox.

  • Attackers can execute arbitrary commands on the host system.
  • They can read and write files, potentially accessing sensitive data.
  • Data theft and complete service compromise are possible outcomes.

Overall, the vulnerability severely impacts confidentiality, integrity, and availability of the affected system.

Detection Guidance

This vulnerability affects vm2 versions prior to 3.11.4 when running untrusted code with async support on Node.js runtimes exposing WebAssembly JSPI features (WebAssembly.promising / WebAssembly.Suspending). Detection involves identifying if your environment uses a vulnerable vm2 version and if the Node.js runtime exposes these JSPI features.

You can check the installed vm2 version by running the following command in your project directory:

  • npm list vm2

To detect if your Node.js runtime exposes the vulnerable WebAssembly JSPI features, you can run a Node.js script to check for the presence of WebAssembly.promising or WebAssembly.Suspending:

  • node -e "console.log('WebAssembly.promising' in WebAssembly, 'WebAssembly.Suspending' in WebAssembly)"

If the output is 'true true' or either is true, your runtime exposes the vulnerable JSPI features.

Additionally, reviewing logs or monitoring for unusual Promise.prototype.finally() behavior or unexpected host process executions triggered by sandboxed code may help detect exploitation attempts, but no specific detection commands are provided.

Mitigation Strategies

The primary mitigation is to upgrade vm2 to version 3.11.4 or later, where this sandbox escape vulnerability has been patched.

The fix involves removing the WebAssembly.promising and WebAssembly.Suspending objects from the sandbox environment at startup, preventing untrusted code from accessing host-realm Promise prototypes and breaking the sandbox boundary.

If upgrading immediately is not possible, consider disabling or restricting the use of async code that relies on WebAssembly JSPI features within the sandbox, or avoid running untrusted code on Node.js 26+ runtimes that expose these features.

Review the updated documentation and attack reproduction scripts provided by the vm2 project to understand the attack flow and ensure your environment is protected accordingly.

Compliance Impact

The vulnerability in vm2 allows arbitrary code execution in the host process, leading to potential arbitrary command execution, file read/write, data theft, and complete service compromise.

Such impacts on confidentiality, integrity, and availability could lead to non-compliance with common standards and regulations like GDPR and HIPAA, which require protection of sensitive data and system integrity.

Exploitation of this vulnerability could result in unauthorized access to personal or protected health information, violating data protection requirements and potentially causing regulatory penalties.

Chat Assistant
Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-47210. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70
EPSS Chart