---
id: CVE-2026-92944
title: >-
  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
summary: >-
  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 exploi…
severity: critical
cvss: 9.8
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'
cwe:
  - CWE-693
vendor: patriksimek
product: vm2
affected:
  - vm2 >= 3.10.2 < 3.11.7
published: '2026-09-17'
updated: '2026-09-19'
sourceUpdated: '2026-09-19T03:17:18.580'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-92944'
references:
  - url: >-
      https://github.com/patriksimek/vm2/commit/4635ddd85839461c8ad791990023a477efefe7bd
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/patriksimek/vm2/commit/7b26e81087ec88c287d9a4812f969d412f32774e
    label: disclosure@vulncheck.com
  - url: 'https://github.com/patriksimek/vm2/security/advisories/GHSA-27g9-p43v-cw3v'
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/vm2-3.10.2-through-3.11.6-sandbox-escape-via-promise-protector
    label: disclosure@vulncheck.com
  - url: 'https://github.com/patriksimek/vm2/security/advisories/GHSA-27g9-p43v-cw3v'
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
tags:
  - nvd
  - cve.org
  - exploit-available
epss: 0.0058
epssPercentile: 0.46442
exploitAvailable: true
ssvc:
  exploitation: poc
  automatable: 'yes'
  technicalImpact: total
  timestamp: '2026-09-19T02:30:37.300948Z'
ingestedAt: '2026-09-17T14:19:30.986Z'
---

## Overview

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.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
