Skip to content
8.4 High

CVE-2026-92958 vm2 through 3.11.6 contains a builtin-module denylist bypass in NodeVM

Description

vm2 through 3.11.6 contains a builtin-module denylist bypass in NodeVM. When the embedder uses the builtin wildcard together with negative entries (e.g. require: { builtin: ['*', '-fs', '-child_process'] }), negative entries are matched by exact module name in lib/builtin.js, so -fs removes only the builtin named fs and does not remove builtin subpaths such as fs/promises. Sandboxed code can therefore call require('fs/promises') or require('node:fs/promises') and reach the promise-based filesystem API despite fs being denied; node: prefix handling is likewise inconsistent (a -node:fs/promises entry does not block require('fs/promises')). Host file creation and writing were confirmed via fsp.writeFile(), and other fs/promises operations (cp, mkdir, rename, rm, rmdir, truncate, read operations, etc.) are also reachable. This issue is fixed in vm2 3.11.7.

Affected products and versions

Product Affected versions Fixed in
vm2 3.11 earliest → < 3.11.7 3.11.7

References

Timeline

  1. Published
  2. Last modified
The 77 CVEs of vm2 →
Track this CVE