Executive brief
vm2 is a popular software library used to run untrusted code in a secure, isolated environment (a sandbox). A critical flaw allows an attacker to break out of this isolation and run unauthorized commands directly on the underlying server. This could lead to a total system takeover, theft of sensitive data, or disruption of operations.
Technical details
A sandbox breakout vulnerability exists in vm2 due to improper handling of JavaScript proxies and host objects. Specifically, the vulnerability involves a descriptor-chain bypass of the `__lookupGetter__` and `Buffer.apply` constructor, as well as an 'Array species self-return' escape where V8's `ArraySpeciesCreate` reads `this.constructor[Symbol.species]` directly on raw objects, bypassing the bridge proxy. An attacker can provide malicious code to the sandbox that leaks host-side constructors or prototypes, leading to Remote Code Execution (RCE) on the host machine. The issue is addressed in version 3.11.0 by implementing a multi-layer defense in `lib/bridge.js` to neutralize host array constructors during function calls.
Affected products
- patriksimek vm2 < 3.11.0
- Red Hat Self-service automation portal 2
- Red Hat Red Hat Developer Hub 1
Timeline
- 2026-04-24: patched: Initial fix for Array species escape committed
- 2026-05-01: advisory: GitHub Advisory GHSA-grj5-jjm8-h35p published
- 2026-05-01: patched: Version 3.11.0 released
- 2026-05-04: disclosed: NVD publication date
References
- https://github.com/patriksimek/vm2/commit/2b5f3e3a060d9088f5e1cdd585d683d491f990a3
- https://github.com/patriksimek/vm2/commit/f9b700b1c7d9ef2df416666cb24e0b659140cc74
- https://github.com/patriksimek/vm2/releases/tag/v3.11.0
- https://github.com/patriksimek/vm2/security/advisories/GHSA-grj5-jjm8-h35p
- https://access.redhat.com/security/cve/CVE-2026-24118
- https://bugzilla.redhat.com/show_bug.cgi?id=2466502
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-24118.json