{"id":"CVE-2023-29017","published":"2023-04-06T19:18:34Z","modified":"2025-02-10T16:10:57Z","title":"vm2 Sandbox Escape vulnerability","vendor":"patriksimek","product":"vm2","tier":"core","eol":null,"affectedVersions":[{"vendor":"patriksimek","product":"vm2","versions":["< 3.9.15"]}],"description":{"text":"vm2 is a sandbox that can run untrusted code with whitelisted Node's built-in modules. Prior to version 3.9.15, vm2 was not properly handling host objects passed to `Error.prepareStackTrace` in case of unhandled async errors. A threat actor could bypass the sandbox protections to gain remote code execution rights on the host running the sandbox. This vulnerability was patched in the release of version 3.9.15 of vm2. There are no known workarounds.","provenance":"source","from":"CVE.org"},"summary":{"text":"The vm2 sandbox library from patriksimek fails to properly handle host objects passed to Error.prepareStackTrace when unhandled async errors occur, in versions prior to 3.9.15. An attacker who can get untrusted code run inside the sandbox can bypass its protections and execute code on the host, requiring no privileges or user interaction and reachable over the network.","provenance":"ai","model":"claude-haiku-5-5","generatedAt":"2026-10-29T07:12:18Z"},"cvss":{"score":10,"severity":"CRITICAL","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H","provenance":"source","from":"CVE.org CNA"},"epss":{"score":0.63186,"percentile":0.99203,"date":"2026-10-30","provenance":"source"},"kev":null,"vulncheckKev":null,"exploited":false,"otx":{"pulseCount":0,"pulses":[],"provenance":"machine"},"cwes":[{"id":"CWE-913","name":"Improper Control of Dynamically-Managed Code Resources"}],"references":[{"url":"https://github.com/patriksimek/vm2/security/advisories/GHSA-7jxr-cg7f-gpgv","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/patriksimek/vm2/issues/515","tags":["x_refsource_MISC"]},{"url":"https://github.com/patriksimek/vm2/commit/d534e5785f38307b70d3aac1945260a261a94d50","tags":["x_refsource_MISC"]},{"url":"https://gist.github.com/seongil-wi/2a44e082001b959bfe304b62121fb76d","tags":["x_refsource_MISC"]}],"techniques":[],"reports":[],"affected":[{"ecosystem":"npm","package":"vm2","vulnerableRanges":["<3.9.15"],"patched":["3.9.15"],"from":["GHSA-7jxr-cg7f-gpgv"],"provenance":"source"}],"advisories":[{"id":"GHSA-7jxr-cg7f-gpgv","url":"https://github.com/advisories/GHSA-7jxr-cg7f-gpgv","severity":"CRITICAL","ecosystem":"npm","package":"vm2","vulnerableRanges":["<3.9.15"],"patched":["3.9.15"],"provenance":"source","from":"GHSA"}],"euvd":{"id":"EUVD-2023-1229","url":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2023-1229","exploited":false,"exploitedSince":null,"provenance":"source"},"exploits":[],"exploitSources":{"pocGithub":{"count":2,"skipped":1,"earliest":"2023-04-07","earliestUrl":"https://github.com/timb-machine-mirrors/seongil-wi-CVE-2023-29017","repos":[{"name":"timb-machine-mirrors/seongil-wi-CVE-2023-29017","url":"https://github.com/timb-machine-mirrors/seongil-wi-CVE-2023-29017","stars":2,"created":"2023-04-07"},{"name":"gunwoo105/Node_CVE-2023-29017","url":"https://github.com/gunwoo105/Node_CVE-2023-29017","stars":0,"created":"2026-07-12"}]},"first":{"date":"2023-04-07","source":"PoC-in-GitHub","url":"https://github.com/timb-machine-mirrors/seongil-wi-CVE-2023-29017"},"provenance":"source"},"exploitRefs":[],"flow":[],"timeline":[{"date":"2023-04-06","kind":"published","label":"Published (CVE.org)","url":"https://www.cve.org/CVERecord?id=CVE-2023-29017","provenance":"source"},{"date":"2023-04-07","kind":"exploit-public","label":"First public exploit: PoC-in-GitHub","url":"https://github.com/timb-machine-mirrors/seongil-wi-CVE-2023-29017","provenance":"source"}],"speed":{"daysToPublicExploit":1,"firstExploitFrom":"PoC-in-GitHub","daysToKev":null},"priority":{"score":31.8,"factors":[{"name":"In a KEV catalog","points":0.0,"detail":"not listed"},{"name":"Recent KEV listing","points":0.0,"detail":"not listed"},{"name":"Known ransomware use","points":0.0,"detail":"not known"},{"name":"EPSS percentile","points":19.84,"detail":"percentile 0.9920"},{"name":"Named in threat reports","points":0.0,"detail":"0 reports"},{"name":"Public exploit code","points":5.0,"detail":"2 PoC-in-GitHub repos"},{"name":"Mentioned in OTX pulses","points":0.0,"detail":"0 pulses"},{"name":"CVSS severity","points":7.0,"detail":"base score 10"},{"name":"End-of-life product","points":0.0,"detail":"supported or unknown"}]},"lineage":{"familyId":"fam-patriksimek-vm2-cve-2021-23449","packageHistory":[{"cve":"CVE-2021-23555","published":"2022-02-11","fixed":"3.9.6","kev":false},{"cve":"CVE-2022-25893","published":"2022-12-21","fixed":"3.9.10","kev":false},{"cve":"CVE-2022-36067","published":"2022-09-06","fixed":"3.9.11","kev":false,"link":{"from":"CVE-2022-36067","to":"CVE-2023-29017","relation":"successor","confidence":"high","kind":"sequence","evidence":[{"kind":"version-step","provenance":"source","package":"npm:vm2","fromFixed":"3.9.11","toFixed":"3.9.15","daysApart":212},{"kind":"same-code","provenance":"machine","files":["lib/setup-sandbox.js"],"commits":["https://github.com/patriksimek/vm2/commit/d9a7f3cc995d3d861e1380eafb886cb3c5e2b873","https://github.com/patriksimek/vm2/commit/d534e5785f38307b70d3aac1945260a261a94d50"],"basis":"shared file"},{"kind":"similar","provenance":"machine","score":0.72,"basis":"same product + CWE + description similarity"}]}},{"cve":"CVE-2023-29017","published":"2023-04-06","fixed":"3.9.15","kev":false},{"cve":"CVE-2023-29199","published":"2023-04-14","fixed":"3.9.16","kev":false,"link":{"from":"CVE-2023-29017","to":"CVE-2023-29199","relation":"successor","confidence":"low","kind":"sequence","evidence":[{"kind":"version-step","provenance":"source","package":"npm:vm2","fromFixed":"3.9.15","toFixed":"3.9.16","daysApart":8}]}},{"cve":"CVE-2023-30547","published":"2023-04-17","fixed":"3.9.17","kev":false},{"cve":"CVE-2023-32313","published":"2023-05-15","fixed":"3.9.18","kev":false}],"package":"npm:vm2"}}