CVE Catalog

CVE-2026-92935

CriticalCVSS 9.0
Published: Updated: Translated: NVD NIST

Summary

vm2, a sandbox for running untrusted Node.js code, in versions 3.11.4–3.11.6 incorrectly treats an array passed as the 'require' option (e.g. require: []) as a valid configuration, bypassing the guard meant to reject nesting without an explicit require configuration. An attacker can then require the host vm2 module, create an inner NodeVM with an attacker-chosen builtin allowlist (such as child_process), and execute arbitrary commands with the privileges of the host Node.js process, escaping the sandbox. This is fixed in vm2 3.11.7.

Risk Assessment

A sandbox escape allows remote code execution with the privileges of the host process, potentially leading to full compromise of the server running untrusted code. Organizations using vm2 for code isolation should treat this as critical risk.

Recommendation

Upgrade vm2 to version 3.11.7 or later. Until patched, avoid NodeVM configurations with 'nesting' set to a truthy value and do not pass arrays as the 'require' option value.

Other vulnerabilities in vm2

See all
Original NVD description (English source)

vm2 is a sandbox for running untrusted Node.js code. In versions >= 3.11.4 and <= 3.11.6, the NodeVM constructor computes `hasRealRequireConfig` with `typeof requireOpts === 'object' && requireOpts !== null`, so an array-shaped `require` value (for example `require: []`) satisfies the guard that is meant to reject nesting without an explicit require configuration. `makeResolverFromLegacyOptions()` then destructures the array into undefined option fields and returns a resolver containing only `NESTING_OVERRIDE.vm2`. As a result, an attacker who can supply JavaScript executed by a NodeVM configured with truthy `nesting` and an array-shaped `require` (e.g. `new NodeVM({nesting: true, require: []})`) can require the host `vm2` module, create an inner NodeVM with an attacker-chosen builtin allowlist (such as `child_process`), and execute arbitrary commands with the privileges of the host Node.js process, escaping the sandbox. Outer builtin restrictions do not constrain the attacker-created inner NodeVM. This issue is fixed in vm2 3.11.7.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS