CVE-2026-47135: vm2: Sandbox escape via unblocked cross-realm Symbol.for keys + missing bridge write-trap symbol checks
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, Symbol.for override in setup-sandbox.js only intercepts 2 of 9 dangerous Node.js cross-realm symbols. Combined with the bridge's set/defineProperty/deleteProperty traps having no isDangerousCrossRealmSymbol key check, sandbox code can obtain real cross-realm symbols, write them to host objects, and control host-side behavior — verified with a full util.promisify hijack chain. This issue has been patched in version 3.11.4.
Metrics
- CVSS v3.1
- 8.7
- Severity
- HIGH
- Fixed in
- —
- Affected Products
- 1
HarborGuard Analysis
Synopsis
This is a sandbox escape vulnerability in vm2, a widely used Node.js sandboxing library. An attacker can send a crafted payload over the network without any authentication, exploiting incomplete symbol interception in the sandbox setup and missing property-trap checks in the bridge layer to obtain real cross-realm JavaScript Symbols and write them to host objects. Successful exploitation gives the attacker full control over host-side behavior, confirmed via a working util.promisify hijack chain that breaks out of the sandbox entirely, enabling arbitrary code execution in the host Node.js process. A patched-image rebuild at version 3.11.4 is available on HarborGuard for environments running an affected version of vm2.
HarborGuard Coverage
Detection capability for CVE-2026-47135 is available across every HarborGuard environment; the CVE is ingested from upstream advisory feeds within minutes of publication and matched against customer images in registries and CI pipelines, including custom-built images that bundle vm2 directly.
AvailableHarborGuard scores this CVE at CVSS 8.7 HIGH (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N) and surfaces it with scope-changed weighting where applicable; per-environment compliance policy rules are applied to route the finding to the appropriate team inbox within each customer organization.
AvailableA patched-image rebuild pinned to vm2 3.11.4 is available on HarborGuard for any environment whose scanned images include an affected version. For customers with auto-remediation enabled, HarborGuard performs the rebuild, runs a regression test suite against the updated image, and opens a pull request against affected workloads automatically.
Pending upstreamExploit Conditions
- Network reachabilityRequired
The vulnerable service must be reachable over the network; an attacker submits a crafted payload to a publicly or internally exposed vm2-backed endpoint.
- AuthenticationNot required
No credentials or session token are needed; the exploit works against an unauthenticated vm2 evaluation surface.
- Victim interactionNot required
No user action is required; the attacker triggers the vulnerability entirely through their own network request.
- Attack complexityDetail
Attack complexity is rated High, meaning the attacker must satisfy specific preconditions around symbol resolution timing and bridge trap invocation order, though a working proof-of-concept chain has already been demonstrated publicly.
Blast Radius
- The attacker escapes the vm2 sandbox entirely and executes arbitrary code in the host Node.js process.
- Host-side JavaScript objects are hijacked by overwriting cross-realm Symbol keys, giving the attacker control over built-in utility behavior such as util.promisify callbacks.
- All data accessible to the host process becomes readable, including environment variables, secrets loaded at runtime, and in-memory application state.
- The attacker can tamper with host application logic and persisted data through the now-compromised host process, though service availability is not directly impacted by this vector.
How HarborGuard Handles This
Available on HarborGuard: detection for CVE-2026-47135 is active across all customer scan targets, covering both pulled registry images and images built in customer CI pipelines that include vm2 as a dependency. Where a customer image includes vm2 at a version below 3.11.4, a rebuilt image at the patched version is available. For customers who have opted into auto-remediation, HarborGuard triggers a rebuild, executes a regression run against the updated image, and opens a pull request against affected workloads; for HIGH-severity issues the median time from CVE publication to merged patch PR is around 90 minutes in environments with auto-remediation enabled. Given that this is a scope-changed, network-reachable sandbox escape with no authentication barrier, customers running vm2 in any multi-tenant or user-input-processing context should treat remediation as urgent. Where immediate patching is not feasible, consider isolating vm2-backed services behind a network policy that restricts inbound access to trusted sources only, and review whether untrusted code evaluation can be temporarily gated via a feature flag until the patched image is deployed.
- patriksimek / vm2< 3.11.4
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N