# vm2 NodeVM sandbox escape via prototype pollution

Source: https://junglewise.ai/threats/duplicate-advisory-sandbox-escape-nodevm-d6fa5619  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-09-17. Updated: 2026-10-05  
License: CC BY 4.0 with a link back

Severity: critical · CVSS 10 · Published 2026-09-17

vm2 is a JavaScript sandbox that isolates untrusted code execution. Attackers can escape the sandbox by exploiting prototype pollution through console object properties, gaining arbitrary code execution on the host system with full process privileges. This bypasses all code generation restrictions and poses a critical risk to any application using vm2 to safely run user-supplied scripts.

Technologies: [vm2 (npm)](https://junglewise.ai/threats/technologies/vm2), [Patriksimek Vm2](https://junglewise.ai/threats/technologies/patriksimek-vm2). Vendors: [npm](https://junglewise.ai/threats/vendors/npm), [Patriksimek](https://junglewise.ai/threats/vendors/patriksimek).

## Quick answers

**Is This vulnerability exploited in the wild?** No. Junglewise Threat Intelligence has no report of This vulnerability being exploited in the wild.

**How severe is This vulnerability?** Critical severity, with a CVSS score of 10, published 17 September 2026.

**Which products and versions are affected?** vm2 (npm) <= 3.11.7; Patriksimek Vm2 <= 3.11.7.

**Is there a fix for This vulnerability?** Yes: fixed in 3.11.8. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is This vulnerability attacked?** It is attacked over the network, in a software library.

**Am I affected?** Check whether you run vm2 (npm) or Patriksimek Vm2 at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- Fixed in 3.11.8

## Technical details

The vulnerability is a sandbox escape in NodeVM (part of vm2) that allows attackers to access the host __proto__ getter/setter through console._stdout and console._stderr properties. By overwriting EventEmitter.prototype.emit and triggering process events, attackers can execute code with process context, bypassing code generation restrictions. This requires the attacker to have code execution within the vm2 sandbox, but escapes isolation entirely.

## Affected products

- Patriksimek vm2 <= 3.11.7

## Timeline

- 2026-09-17: disclosed
- 2026-10-05: advisory: Advisory withdrawn as duplicate of GHSA-88hf-g992-jg85

## References

- [https://api.github.com/users/portyu9](https://api.github.com/users/portyu9)

## Related threats

- [vm2 NodeVM path bypass in custom resolution](https://junglewise.ai/threats/duplicate-advisory-vm2-nodevm-custom-resolution-bypasses-external-path-5d3a7272)
- [vm2 NodeVM zlib buffer pool information disclosure](https://junglewise.ai/threats/duplicate-advisory-vm2-nodevm-zlib-buffers-expose-pooled-host-memory-6007c734)
- [vm2 host Promise rejection denial of service in construct trap](https://junglewise.ai/threats/duplicate-advisory-vm2-host-promise-rejection-from-an-exposed-f7aba6ba)
- [vm2 sandbox escape via Buffer backing-store ownership bypass](https://junglewise.ai/threats/cve-2026-100723-vm2-before-3-12-2-does-not-apply-its-buffer-backing-store)
- [vm2 unhandled Promise rejection in construct trap](https://junglewise.ai/threats/cve-2026-100722-vm2-before-3-12-2-does-not-apply-host-side-promise-rejection)
