CVE-2023-29017 is a sandbox-escape vulnerability in vm2 prior to version 3.9.15. vm2 improperly handles host objects supplied to Error.prepareStackTrace during unhandled asynchronous errors. An attacker able to execute untrusted code within a vulnerable vm2 sandbox can bypass the sandbox boundary and obtain remote code-execution rights on the host running the sandbox.
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
If you can’t patch tonight, do this now.
Patch, then assume compromise.
2 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos.
This repository is a self-contained Dockerized lab and proof-of-concept for CVE-2023-29017, a vm2 sandbox escape leading to remote code execution. The structure is simple: `vulnerable/src/server.js` exposes a minimal HTTP API (`/health`, `/execute`, `/evidence`), `vulnerable/src/worker.js` runs attacker-supplied JavaScript inside vm2 3.9.14 with `allowAsync: true`, and `poc/poc.js` automates validation and exploitation against the service. The Dockerfile builds two stages: a vulnerable Node 18.15.0 service image and a separate PoC runner image; `docker-compose.yml` wires them together and publishes the service on localhost:3000. The main exploit capability is sandbox escape from vm2 into the host Node.js context. The payload redefines `Error.prepareStackTrace`, abuses the host `frames` object passed during vulnerable async error handling, obtains the host `Function` constructor via `frames.constructor.constructor`, then returns `process`, loads `child_process`, and executes `id > /tmp/vm2-pwned`. This demonstrates arbitrary OS command execution with the privileges of the Node.js process (`node` user in the container). The exploit is operational rather than just theoretical because it includes a working payload, automated delivery, validation of target versions, benign control execution, and evidence collection. Network exposure is limited to the local published HTTP service at `127.0.0.1:3000`, but the attack surface is the `/execute` endpoint that accepts arbitrary JavaScript in JSON. Successful exploitation is confirmed by the marker file `/tmp/vm2-pwned` and by the `/evidence` endpoint. Overall, this is a legitimate exploit repository, not merely a detector: it provides a reproducible vulnerable environment and a working end-to-end RCE PoC for vm2 <= 3.9.14.
This repository contains two JavaScript proof-of-concept exploits targeting the vm2 sandbox library (version 3.9.14) for Node.js. Both files, 'vm2_3.9.14_exploit_1.js' and 'vm2_3.9.14_exploit_2.js', demonstrate a sandbox escape by abusing the Error object's stack trace preparation mechanism. The exploit leverages JavaScript's dynamic function construction to access the Node.js 'process' object and execute arbitrary system commands via 'child_process.execSync'. The payload in both files attempts to create a file named 'flag' on the host system, proving code execution outside the intended sandbox. The repository is structured as two minimal, standalone exploit scripts, each providing a slightly different approach to trigger the vulnerability. No network endpoints or external services are targeted; the exploit is purely local and demonstrates the risk of running untrusted code in a vulnerable vm2 environment.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
9 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
Earlier critical vm2 sandbox escape vulnerability cited as part of the historical pattern of repeated breakout flaws in vm2.
A prior vm2 sandbox escape vulnerability via exception sanitization, mentioned as historical context for recurring vm2 escapes.
A prior vm2 sandbox escape vulnerability mentioned as part of the library's security history.
An earlier sandbox escape vulnerability affecting vm2, mentioned for historical context.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.