CVE Catalog

CVE-2026-92957

CriticalCVSS 9.9
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.57%

45th percentile - higher than 45% of all known CVEs

Summary

vm2 through 3.11.6 does not normalize 'node:'-prefixed builtin specifiers when matching negative (deny) entries in a NodeVM wildcard require policy. A policy such as ['*', '-node:child_process'] fails to deny the canonical child_process module because matching uses exact string comparison against canonical builtin names. Sandboxed code can therefore obtain the host child_process builtin and gain access to process-spawning APIs such as execSync and spawn, equivalent to host command execution.

Risk Assessment

Untrusted code running inside the vm2 sandbox can execute arbitrary commands on the host system, leading to full server compromise. This is critical for applications that run untrusted JavaScript in NodeVM.

Recommendation

Upgrade vm2 to version 3.11.7 or later. Until patched, consider restricting execution of untrusted code in NodeVM.

Other vulnerabilities in vm2

See all
Original NVD description (English source)

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:child_process'] } })` fails to deny the canonical `child_process` module. Sandboxed code can therefore obtain the host `child_process` builtin via `require('child_process')` or `require('node:child_process')`, 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.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS