CVE-2026-93603 Details
Description
vm2 through 3.12.0 (fixed in 3.12.1) does not correctly handle a nullish `this` receiver in the apply trap of its bridge (lib/bridge.js): when sandboxed code calls a host-provided non-strict (sloppy-mode) function without a receiver — e.g. `fn()`, a detached method, `fn.call()`, `fn.apply(undefined)`, `Reflect.apply(fn, undefined, [])`, or `fn.bind()()` — the undefined receiver is passed straight through to the host call, and V8 substitutes the host realm's global object for `this`. vm2 then wraps and returns that object to the sandbox, giving sandboxed script a live proxy of the host global. This allows a complete sandbox escape: untrusted script can reach `process` and execute arbitrary code/commands on the host (for example via `process.getBuiltinModule('child_process').execSync`). Exploitation requires that the embedding application expose at least one non-strict host function to the sandbox; strict-mode and ES module host functions are not affected.
A sandbox escape vulnerability allowing remote code execution has been identified in vm2 versions through 3.12.0, with the issue fixed in 3.12.1. The vulnerability arises because vm2 does not properly manage a nullish 'this' receiver in the apply trap of its bridge. When sandboxed code invokes a host-provided non-strict function without a receiver, the undefined receiver is passed to the host call, and V8 replaces the undefined 'this' with the host realm's global object. This global object is then returned to the sandbox, granting access to the host's process object and allowing execution of arbitrary commands on the host system, such as using the child_process module to run shell commands. Exploitation requires that the application embedding vm2 exposes at least one non-strict host function to the sandbox, as strict-mode and ES module functions are not affected.
Users can upgrade to vm2 version 3.12.1 or later, where this vulnerability has been fixed.
Metrics
CVSS 4.0 Severity and Vector Strings:
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
Volerion
Assessed Sep 18, 2026CISA-ADP
Assessed Sep 22, 2026References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://github.com/patriksimek/vm2/security/advisories/GHSA-j89j-5m6r-cr2q | CISA-ADP | AdvisoryExploitRemedyTechnical AnalysisVendor |
| https://github.com/patriksimek/vm2/security/advisories/GHSA-j89j-5m6r-cr2q | [email protected] | AdvisoryExploitRemedyTechnical AnalysisVendor |
| https://www.vulncheck.com/advisories/vm2-before-3.12.1-sandbox-escape-rce-via-non-strict-host-function | [email protected] | Advisory |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-94 | Improper Control of Generation of Code ('Code Injection') | [email protected] |
Affected Products
| Product | Versions |
|---|---|
| vm2 | <= 3.12.0 (semver) |
CPE
Remediation
| |
Change History
2 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Sep 22, 2026 | CVE Modified | CISA-ADP |
| Sep 18, 2026 | New CVE Received | [email protected] |
Volerion