CVE-2026-92937 Details
Description
vm2 3.11.6 is vulnerable to a sandbox escape leading to remote code execution in the host Node.js process. The fix for GHSA-m283-3h24-438v is incomplete: the bridge gate at lib/bridge.js:1624 identity-checks only the direct call target when deciding whether to rebuild/sanitise a rejected host Promise value. Registering the rejection handler through Function.prototype.call or .apply indirection (e.g., p.then.call(p, undefined, cb)) makes the intercepted target host Function.prototype.call, so the sanitiser never runs and the raw host error reaches sandbox code with its own properties intact. If an embedder exposes a host-realm Promise to the sandbox (an async host function bridged via the sandbox option, or a NodeVM external module's async method) and that Promise rejects with an Error carrying a non-primitive own property referencing a host object (for example err.detail = process), untrusted code in the sandbox obtains a fully functional proxy to that host object and can execute arbitrary commands with the privileges of the host process (e.g., e.detail.mainModule.require('child_process').execSync(...)). The direct p.then(undefined, cb), bind, and Reflect.apply forms are correctly sanitised. Fixed in vm2 3.11.7.
A remote code execution vulnerability has been identified in vm2 version 3.11.6. This issue arises from a sandbox escape that allows untrusted JavaScript to execute arbitrary commands in the host Node.js process. The vulnerability is rooted in an incomplete fix for a previous advisory, where the bridge's identity-checks only target direct call references. By using Function.prototype.call or .apply indirection to register rejection handlers, the sanitization process can be bypassed, allowing raw host errors—carrying references to host objects—to reach the sandbox. If an exposed host Promise rejects with an Error containing a non-primitive property referencing a host object, the sandboxed code can access that object and execute commands with the host process's privileges. This flaw is particularly concerning in multi-tenant environments, where one compromised tenant can affect others.
Users can upgrade to vm2 version 3.11.7, where this vulnerability has been patched.
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 17, 2026CISA-ADP
Assessed Sep 18, 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-647f-g98j-qq25 | CISA-ADP | AdvisoryExploitVendor |
| https://github.com/patriksimek/vm2/security/advisories/GHSA-647f-g98j-qq25 | [email protected] | AdvisoryExploitVendor |
| https://www.vulncheck.com/advisories/vm2-3.11.6-remote-code-execution-via-promise-call-apply | [email protected] | AdvisoryRemedy |
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.11.6, < 3.11.7 (semver) |
CPE
Remediation
| |
Change History
2 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Sep 18, 2026 | CVE Modified | CISA-ADP |
| Sep 17, 2026 | New CVE Received | [email protected] |
Volerion