---
title: "CVE-2026-92944: vm2 sandbox escape on Node.js 26 through a stale PromiseThenLookupChain protector"
url: https://erroneo.us/security/cve/CVE-2026-92944/
description: "CVE-2026-92944 (vm2 (npm)): vm2 versions 3.10.2 through 3.11.6 contain a sandbox escape vulnerability on Node.js 26 where Promise.prototype.finally()…"
type: vulnerability-record
section: "Security Digest"
date_published: 2026-09-17
date_modified: 2026-10-07
publisher: erroneo.us
author: erroneo.us Security Desk
cve: "CVE-2026-92944"
kev: false
cvss: 9.3
epss: 0.00841
license: All rights reserved. Quote with attribution and a link.
---

# CVE-2026-92944: vm2 sandbox escape on Node.js 26 through a stale PromiseThenLookupChain protector

**Signal:** Critical and remotely reachable. No known exploitation yet, but it is network-reachable without credentials. (Computed from CISA KEV, EPSS and CVSS; not an editorial verdict.)

## Should you act?

- Not in CISA KEV , but CISA’s SSVC assessment records a public proof-of-concept, so attack code exists.
- EPSS 0.8% , percentile 57: FIRST’s model estimates a 0.8% chance of exploitation activity in the next 30 days, higher than 57% of all scored CVEs (moderate). EPSS is a probability, not a verdict.
- Remotely reachable with no login and no user interaction. If the vulnerable service is exposed to the internet, prioritize it.
- Only applies if your dependency tree includes vm2 (npm) >= 3.10.2, <= 3.11.6, fixed in 3.11.7 . Check your lockfile, including transitive dependencies.
- Editorial verdict: Check exposure. vm2: 22 Critical Sandbox Escapes, Fixed in 3.12.2 — If anything outside your trust boundary can get code into vm2, upgrade to 3.12.2 today and plan to move that code out of process; if vm2 only runs your own code, upgrade on a normal cycle.

## What it is

vm2 versions 3.10.2 through 3.11.6 contain a sandbox escape vulnerability on Node.js 26 where Promise.prototype.finally() bypasses vm2's wrapper protections due to a stale PromiseThenLookupChain protector in V8 14.6. Attackers can exploit this by creating an async function that returns a Promise with an attacker-controlled constructor Symbol.species, allowing them to reach the host Function constructor and process object for arbitrary code execution.

## Affected packages

- npm `vm2` >= 3.10.2, <= 3.11.6 → fixed: 3.11.7

## Affected products (CVE record)

- patriksimek vm2: 3.10.2 < 3.11.7

## Severity

- VulnCheck CVSS 4.0: 9.3 `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N`
- VulnCheck CVSS 3.1: 9.8 `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`
- GitHub CVSS 3.1: 9.8 `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`

## Exploitation

- CISA KEV: not listed (no confirmed in-the-wild exploitation known to CISA).
- CISA SSVC assessment: exploitation poc , automatable yes , technical impact total .
- FIRST EPSS (model of 2026-10-21): 0.84% probability of exploitation activity in the next 30 days; percentile 57.

## Sources

- [GitHub Security Advisory (GHSA-27g9-p43v-cw3v)](https://github.com/patriksimek/vm2/security/advisories/GHSA-27g9-p43v-cw3v)
- [Patch Commit](https://github.com/patriksimek/vm2/commit/7b26e81087ec88c287d9a4812f969d412f32774e)
- [Patch Commit](https://github.com/patriksimek/vm2/commit/4635ddd85839461c8ad791990023a477efefe7bd)
- [GitHub Advisory GHSA-27g9-p43v-cw3v](https://github.com/advisories/GHSA-27g9-p43v-cw3v)
- [CVE.org record CVE-2026-92944](https://www.cve.org/CVERecord?id=CVE-2026-92944)
- [NVD entry CVE-2026-92944](https://nvd.nist.gov/vuln/detail/CVE-2026-92944)
- [VulnCheck Advisory: vm2 3.10.2 through 3.11.6 Sandbox Escape via Promise Protector](https://www.vulncheck.com/advisories/vm2-3.10.2-through-3.11.6-sandbox-escape-via-promise-protector)
- [github.com](https://github.com/patriksimek/vm2/commit/c7df2e21d2c74038a1f1750f40f9fe603ec69c6a)
- [github.com](https://github.com/patriksimek/vm2/releases/tag/v3.11.7)

---
Source page: https://erroneo.us/security/cve/CVE-2026-92944/ · Security Digest: https://erroneo.us/security/ · More: https://erroneo.us/llms.txt
