---
title: "CVE-2026-92957: vm2: NodeVM node:-prefixed negative builtin deny bypass exposes child_process"
url: https://erroneo.us/security/cve/CVE-2026-92957/
description: "CVE-2026-92957 (vm2 (npm)): vm2 through 3.11.6 does not normalize node:-prefixed builtin specifiers when evaluating user-supplied negative (deny) entries in…"
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-92957"
kev: false
cvss: 9.4
epss: 0.00537
license: All rights reserved. Quote with attribution and a link.
---

# CVE-2026-92957: vm2: NodeVM node:-prefixed negative builtin deny bypass exposes child_process

**Signal:** Critical, preconditions apply. Severe if exploited, but exploitation needs conditions that may not apply to you. (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.5% , percentile 44: FIRST’s model estimates a 0.5% chance of exploitation activity in the next 30 days, higher than 44% of all scored CVEs (low). EPSS is a probability, not a verdict.
- Needs an account (low (any account)). Exposure depends on who can log in.
- Only applies if your dependency tree includes vm2 (npm) <= 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 through 3.11.6 does not normalize node:-prefixed builtin specifiers when evaluating user-supplied negative (deny) entries in a NodeVM wildcard require policy. Although NodeVM strips the node: prefix during require() resolution, negative wildcard entries are matched by exact string comparison against the canonical builtin names, so a policy such as new NodeVM({ require: { builtin: ['', '-node:childprocess'] } }) fails to deny the canonical childprocess module. Sandboxed code can therefore obtain the host childprocess builtin via require('childprocess') or require('node:childprocess'), gaining references to process-spawning APIs such as execSync and spawn, which is equivalent to host command-execution capability for untrusted sandbox code. Fixed in vm2 3.11.7.

## Affected packages

- npm `vm2` <= 3.11.6 → fixed: 3.11.7

## Affected products (CVE record)

- patriksimek vm2: < 3.11.7

## Severity

- VulnCheck CVSS 4.0: 9.4 `CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H`
- VulnCheck CVSS 3.1: 9.9 `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H`
- GitHub CVSS 3.1: 9.9 `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/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 no , technical impact total .
- FIRST EPSS (model of 2026-10-21): 0.54% probability of exploitation activity in the next 30 days; percentile 44.

## Sources

- [GitHub Security Advisory (GHSA-8686-vhfx-7r3j)](https://github.com/patriksimek/vm2/security/advisories/GHSA-8686-vhfx-7r3j)
- [GitHub Advisory GHSA-8686-vhfx-7r3j](https://github.com/advisories/GHSA-8686-vhfx-7r3j)
- [CVE.org record CVE-2026-92957](https://www.cve.org/CVERecord?id=CVE-2026-92957)
- [NVD entry CVE-2026-92957](https://nvd.nist.gov/vuln/detail/CVE-2026-92957)
- [VulnCheck Advisory: vm2 before 3.11.7 Authentication Bypass via node: Prefix](https://www.vulncheck.com/advisories/vm2-before-3.11.7-authentication-bypass-via-node-prefix)
- [github.com](https://github.com/patriksimek/vm2/commit/b0f50662dd499ff33544bb42387958c64711af1e)
- [github.com](https://github.com/patriksimek/vm2/releases/tag/v3.11.7)

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