CVE-2026-92959 Details
Description
vm2 before 3.11.8 does not fully enforce the allowAsync: false option in VM and NodeVM. While localPromise.prototype.then is replaced with a handler that throws 'Async not available', the sandbox's Promise static methods (Promise.resolve, Promise.all, Promise.race, Promise.any, and Promise.allSettled) still assimilate attacker-supplied thenables: native promise resolution performs PromiseResolveThenableJob and invokes the sandboxed code's then method in a microtask without passing through the patched then, so the async restriction is never applied. As a result, sandboxed script can schedule work that runs after VM.run() or NodeVM.run() has returned and outside the configured timeout, continuing to execute after the host believes execution is complete.
A vulnerability exists in vm2 versions through 3.11.7 that allows for a bypass of the 'allowAsync: false' option in both VM and NodeVM. While the direct use of 'Promise.prototype.then' is blocked, the static Promise methods can still assimilate attacker-controlled thenables. This occurs because native promise resolution invokes the then method of the thenable in a microtask, after 'VM.run()' or 'NodeVM.run()' has returned, and outside the set timeout, allowing the execution of sandboxed code to continue after the host has completed its process. This issue undermines the intended async execution restrictions and can lead to a denial-of-service by blocking the Node.js event loop after the sandboxed execution is believed to be finished.
Users should update to vm2 version 3.11.8 or later, 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 21, 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-f8gf-w286-fmq2 | CISA-ADP | AdvisoryVendor |
| https://github.com/patriksimek/vm2/security/advisories/GHSA-f8gf-w286-fmq2 | [email protected] | AdvisoryVendor |
| https://www.vulncheck.com/advisories/vm2-before-3.11.8-allowasync-bypass-via-promise-thenable | [email protected] | AdvisoryPartial Content |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-693 | Protection Mechanism Failure | [email protected] |
Affected Products
| Product | Versions |
|---|---|
| vm2 | <= 3.11.7 (semver) |
CPE
Remediation
| |
Change History
2 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Sep 21, 2026 | CVE Modified | CISA-ADP |
| Sep 17, 2026 | New CVE Received | [email protected] |
Volerion