Skip to content
OpenAdvisories
Critical WID-SEC-2026-2997 18 CVEs

vm2: Mehrere Schwachstellen

Published Aug 24, 2026 · Updated Oct 27, 2026 · Revision 5 · de-DE

Summary

Ein Angreifer kann mehrere Schwachstellen in vm2 ausnutzen, um Sicherheitsvorkehrungen zu umgehen, um Informationen offenzulegen, um Daten zu manipulieren, um einen Denial of Service Angriff durchzuführen und um beliebigen Programmcode auszuführen.

Product

vm2 ist eine Sandbox, in der nicht vertrauenswürdiger Code der in Node integrierten Module ausgeführt werden kann.

Vulnerabilities 18

  • Critical 10.0

    vm2 3.11.6 Remote Code Execution via Promise call/apply

    vm2 3.11.6 is vulnerable to a sandbox escape leading to remote code execution in the host Node.js process. The fix for GHSA-m283-3h24-438v is incomplete: the bridge gate at lib/bridge.js:1624 identity-checks only the direct call target when deciding whether t…

  • Critical 10.0

    vm2 3.11.3 through 3.11.6 HTTPS Credential Exposure via globalAgent

    vm2 versions 3.11.3 through 3.11.6 expose the host process's real https.globalAgent to sandboxed code when a NodeVM is explicitly configured to allow require('https'). The builtin loader wraps host modules in a read-only proxy, but method calls such as Agent.…

  • Critical 10.0

    vm2 3.11.3 before 3.11.7 TLS Trust Store Manipulation

    vm2 versions from 3.11.3 before 3.11.7 expose the host tls module to NodeVM sandbox code, allowing attackers to call tls.setDefaultCACertificates() and replace process-wide certificate authorities. Attackers with access to allowed tls and url builtins can use…

  • Critical 10.0

    vm2 before 3.11.7 Remote Code Execution via require.external

    vm2 before 3.11.7 contains a remote code execution vulnerability when require.external is enabled without an explicit require.root that excludes node_modules. Sandboxed code can require vm2's own package, instantiate an unrestricted NodeVM instance, and execu…

  • Critical 10.0

    vm2 before 3.11.7 Memory Disclosure via Buffer Pool

    vm2 before 3.11.7 exposes Node's shared Buffer pool to sandboxed code, allowing disclosure of host memory used by Buffer.from, Buffer.concat, and related allocations. Sandboxed code can read and write to host-realm buffers by acquiring ArrayBuffers from small…

  • Critical 9.9

    vm2 3.11.3 through 3.11.6 Remote Code Execution via node:sqlite

    vm2 versions 3.11.3 through 3.11.6 expose Node.js's host node:sqlite module to code running in NodeVM when that builtin is permitted, either explicitly or through builtin: ['*']. The module is wrapped with vm.readonly(), which prevents property assignment but…

  • Critical 9.9

    vm2 3.11.3 through 3.11.6 Native Code Execution via crypto.setEngine

    vm2 3.11.3 through 3.11.6 exposes the host Node.js crypto module to a NodeVM sandbox when the crypto builtin is allowed. The module is presented via a recursive read-only proxy, but its callable exports still execute with host-process authority. Sandboxed Jav…

  • Critical 9.9

    vm2 3.9.6 through 3.11.5 Sandbox Escape via node:test

    vm2 versions >= 3.9.6 and <= 3.11.6 are affected by a NodeVM builtin allowlist bypass that permits a sandbox escape on Node.js 24 and newer when the embedder explicitly allows the node:test builtin (e.g. require: { builtin: ['node:test'] }). On Node.js 24+, m…

  • Critical 9.9

    vm2 before 3.11.7 Module Allowlist Bypass via Custom Resolver

    vm2 before 3.11.7 contains an incorrect authorization vulnerability in the external package allowlist check that uses non-exact substring matching instead of full package-name boundary validation. Attackers can bypass the allowlist by requiring a colliding pa…

  • Critical 9.9

    vm2 before 3.11.7 NodeVM Builtin Deny-List Bypass via node: Prefix

    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 entri…

  • Critical 9.8

    vm2 3.10.2 through 3.11.6 Sandbox Escape via Promise Protector

    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 …

  • Critical 9.0
    CVE-2026-92935 Public exploit

    vm2 NodeVM Remote Code Execution via Array-Shaped Require

    vm2 is a sandbox for running untrusted Node.js code. In versions >= 3.11.4 and <= 3.11.6, the NodeVM constructor computes `hasRealRequireConfig` with `typeof requireOpts === 'object' && requireOpts !== null`, so an array-shaped `require` value (for example `r…

  • High 8.6

    vm2 before 3.11.7 Sandbox Escape via CLI require

    vm2 before 3.11.7 contains a sandbox escape vulnerability in the CLI tool that allows attackers to execute arbitrary code in the host Node.js process. Attackers can supply a malicious script file to the vm2 CLI that uses require(__filename) to re-execute itse…

  • High 8.5

    vm2 before 3.11.7 Denylist Bypass via fs/promises

    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 i…

  • High 7.5

    vm2 before 3.11.7 Timeout Bypass via FinalizationRegistry

    vm2 before 3.11.7 (affected versions <= 3.11.6) does not enforce the VM({ timeout }) option on code executed outside the synchronous VM#run() call. The timeout only wraps the single call to _runScript() via doWithTimeout() in lib/vm.js, and FinalizationRegist…

  • Medium 6.8

    vm2 3.11.4 through 3.11.6 Sandbox Symbol Filtering Bypass

    vm2 versions 3.11.4 through 3.11.6 incompletely filter Node.js registered internal symbols across the sandbox boundary. The extraction filters in lib/setup-sandbox.js and the cross-realm symbol checks and write traps in lib/bridge.js use a fixed list of known…

  • Medium 4.2

    vm2 before 3.11.7 Module Allowlist Bypass via Prefix Matching

    vm2 before 3.11.7 contains a module allowlist bypass vulnerability in isPathAllowedForModule that uses raw string prefix matching instead of boundary-anchored comparison. Attackers can reach non-allowlisted packages sharing a prefix with allowlisted modules b…

  • Medium 4.0

    vm2 3.9.6 before 3.11.7 Sandbox Bypass via Accessor Descriptor

    vm2 versions from 3.9.6 before 3.11.7 fail to properly restrict access to accessor properties on frozen objects, allowing sandboxed scripts to bypass vm.freeze() and vm.readonly() protections. Attackers can use Object.getOwnPropertyDescriptor() or __lookupSet…

Revision history

  1. #5

    Neue Updates von Red Hat aufgenommen

  2. #4

    Neue Updates von Red Hat aufgenommen

  3. #3

    Neue Updates von Red Hat aufgenommen

  4. #2

    Referenz(en) aufgenommen: CVE-2026-92935, EUVD-2026-81585, CVE-2026-92937, EUVD-2026-81587, GHSA-M283-3H24-438V, CVE-2026-92939, EUVD-2026-81589, CVE-2026-92942, EUVD-2026-81592, CVE-2026-92941, EUVD-2026-81591, CVE-2026-92944, EUVD-2026-81593, CVE-2026-92940, EUVD-2026-81590, CVE-2026-92952, EUVD-2026-81601, CVE-2026-92951, EUVD-2026-81600, CVE-2026-92946, EUVD-2026-81595, CVE-2026-92945, EUVD-2026-81594, CVE-2026-92947, EUVD-2026-81596, CVE-2026-92948, EUVD-2026-81597, CVE-2026-92949, EUVD-2026-81598, CVE-2026-92950, EUVD-2026-81599, CVE-2026-92957, EUVD-2026-81606, CVE-2026-92958, EUVD-2026-81607, CVE-2026-92938, EUVD-2026-81588

  5. #1

    Initiale Fassung

References