Promise Species Sandbox Escape in vm2
CVE-2026-47208 is a sandbox escape vulnerability in the vm2 Node.js sandboxing library affecting versions before 3.11.4. The localPromise constructor invokes the cached host Promise.prototype.then implementation without first calling resetPromiseSpecies(this). Attacker-controlled JavaScript can manipulate Symbol.species to hijack downstream Promise construction and obtain a raw host RangeError that bypasses sandbox error wrapping. Access to the host error object's constructor chain allows the attacker to reach the host Function constructor, escape the sandbox, and execute arbitrary operating-system commands.
What it means and what to do now: patch path, interim mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
Code executing inside an affected vm2 sandbox can cross the sandbox security boundary and execute arbitrary commands on the host system. This defeats the isolation intended to protect the hosting application from untrusted JavaScript.
If you can’t patch tonight, do this now.
No effective configuration-only workaround is identified for deployments that continue executing untrusted scripts. Longer-term mitigation is to use stronger isolation, such as separate operating-system processes with restricted permissions or suitable WASM-based sandboxes.
Patch, then assume compromise.
Upgrade vm2 and affected related packages to version 3.11.4 or later. Identify both direct and transitive vm2 dependencies to ensure affected copies are updated. The fix resets Promise species before invoking the host Promise.then implementation in the vulnerable code path.
No public exploits tracked yet. Mallory keeps watching.
10 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.