p PatchFirst

PatchFirst · Latest vulnerabilities

vm2 vulnerabilities · Page 2

Vulnerabilities published for vm2 in the last 30 days: 3. Listed in the KEV catalogue: 0.

RSS ↗
Filter vulnerabilities
Clear filters

Vulnerabilities: 78

  1. CVE-2026-92947

    Critical · CVSS 10EPSS 0.48%Public exploitFix available

    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 allocations, leading to sensitive data exposure and potential denial-of-service.

    • Update to 3.11.7
    Published Updated
  2. CVE-2026-92946

    Critical · CVSS 10EPSS 0.86%Public exploitFix available

    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 execute arbitrary host OS commands via child_process.

    • Update to 3.11.7
    Published Updated
  3. CVE-2026-92945

    Low · CVSS 2.3EPSS 0.28%Fix available

    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 by performing relative requires from allowlisted packages when transitive loading is disabled.

    • Update to 3.11.7
    Published Updated
  4. CVE-2026-92944

    Critical · CVSS 9.3EPSS 0.84%Public exploitFix available

    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 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.

    • Update to 3.11.7
    Published Updated
  5. CVE-2026-92942

    High · CVSS 8.7EPSS 0.49%Public exploitFix available

    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 FinalizationRegistry and WeakRef are exposed to sandboxed code unmodified (they are not among the hardened globals in lib/setup-sandbox.js). Sandboxed code can register a FinalizationRegistry cleanup callback against an object and then drop the only strong reference to it; vm.run() returns within the configured timeout, but when the V8 garbage collector later reclaims the object it invokes the sandboxed cl

    • Update to 3.11.7
    Published Updated
  6. CVE-2026-92941

    Critical · CVSS 10EPSS 0.29%Public exploitFix available

    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 URLSearchParams to create host-realm arrays and manipulate the TLS trust store, enabling subsequent host HTTPS clients to accept attacker-controlled certificates.

    • Update to 3.11.7
    Published Updated
  7. CVE-2026-92940

    Critical · CVSS 10EPSS 0.47%Public exploitFix available

    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.prototype.on() are forwarded to the underlying host object, so sandbox code can register a listener for the agent's 'free' event. When an unrelated host HTTPS request releases a pooled connection, the listener receives the live host request options and the host TLSSocket, allowing sandboxed code to read the host's Authorization header and private destination host/port, attach a data liste

    • Update to 3.11.7
    Published Updated
  8. CVE-2026-92939

    Critical · CVSS 9.4EPSS 0.62%Public exploitFix available

    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 JavaScript can therefore call crypto.setEngine() with a filesystem path to an attacker-supplied native library (for example, one bundled in an untrusted plugin package already written to disk); OpenSSL asks the operating-system dynamic loader to load the file, and the library's constructor executes native code in the host process before engine-symbol validation rejects it. Exploitation requi

    • Update to 3.11.7
    Published Updated
  9. CVE-2026-92938

    Critical · CVSS 9.4EPSS 0.62%Public exploitFix available

    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 leaves host-authority callables reachable; in addition, the resolver treats any request starting with 'node:' as a core-module request and the runtime strips only one 'node:' prefix, so a sandbox request for 'node:node:sqlite' resolves to the configured node:sqlite entry. Sandboxed code can therefore create an in-memory DatabaseSync with extension loading enabled and call DatabaseSync.lo

    • Update to 3.11.7
    Published Updated
  10. CVE-2026-92937

    Critical · CVSS 10EPSS 1.03%Public exploitFix available

    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 to rebuild/sanitise a rejected host Promise value. Registering the rejection handler through Function.prototype.call or .apply indirection (e.g., p.then.call(p, undefined, cb)) makes the intercepted target host Function.prototype.call, so the sanitiser never runs and the raw host error reaches sandbox code with its own properties intact. If an embedder exposes a host-realm Promise to the s

    • Update to 3.11.7
    Published Updated
  11. CVE-2026-92936

    Medium · CVSS 6.9EPSS 0.46%Public exploitFix available

    vm2 3.11.0 before 3.11.7 Information Disclosure via Error Stack

    vm2 versions 3.11.0 through 3.11.6 leak absolute host filesystem paths to sandboxed code through error stack formatting. Attacker-supplied code can force the host-realm source transformer to throw a SyntaxError (for example by calling eval with malformed source) and then read the error's .stack property; the bridge forwards the .stack read to the host-realm formatter, bypassing the sandbox-side host-path redaction introduced for GHSA-v27g-jcqj-v8rw. The returned stack string discloses absolute paths from vm2, Node.js internals, and the embedding application's own source tree, along with host function names. Default new VM() and new NodeVM() c

    • Update to 3.11.7
    Published Updated
  12. CVE-2026-92935

    Critical · CVSS 9.5EPSS 0.67%Public exploitFix available

    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 `require: []`) satisfies the guard that is meant to reject nesting without an explicit require configuration. `makeResolverFromLegacyOptions()` then destructures the array into undefined option fields and returns a resolver containing only `NESTING_OVERRIDE.vm2`. As a result, an attacker who can supply JavaScript executed by a NodeVM configured with truthy `nesting` and an array-shaped `req

    • Update to 3.11.7
    Published Updated
  13. CVE-2026-92934

    Critical · CVSS 9.5EPSS 0.76%Fix available

    vm2 before 3.11.8 Sandbox Escape RCE via AggregateError

    vm2 before 3.11.8 contains an incomplete fix for Error.cause sanitization that allows sandbox escape when revisited host-wrapped AggregateError objects are caught within a single exception handler traversal. Attackers can exploit cycle detection bypass in handleException to access unsanitized host proxies embedded in the errors array, enabling full remote code execution and process information disclosure from the sandbox.

    • Update to 3.11.8
    Published Updated
  14. CVE-2026-92933

    Medium · CVSS 6.9EPSS 0.37%Public exploitFix available

    vm2 before 3.11.8 Information Disclosure via util.getCallSites

    vm2 is a sandbox for running untrusted Node.js code. In versions <= 3.11.7, NodeVM exposes the host `util` module to the sandbox as an unfiltered shallow copy (`Object.assign({}, util)` in `defaultBuiltinLoaderUtil`), and the deprecated `sys` builtin (an alias of host `util`) is exposed through the generic builtin loader. On Node.js >= 22.9 this hands sandboxed code `util.getCallSites()`, a programmatic stack-introspection API that returns the host process's full call stack, including absolute file paths, function names, and line numbers for vm2 bridge internals and the embedding application's entrypoint. This bypasses the host-frame redactio

    • Update to 3.11.8
    Published Updated
  15. CVE-2026-47683

    High · CVSS 8.7EPSS 0.54%Fix available

    vm2: bufferAllocLimit cap bypassed by Buffer.concat and Buffer.from arrayLike

    vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.6, the bufferAllocLimit enforcement in lib/setup-sandbox.js does not cover Buffer.concat(list, totalLength) or Buffer.from(arrayLike) with an attacker-controlled length, allowing sandbox code to perform large synchronous host external-memory allocations that bypass the configured cap and can exhaust the host process. This issue is fixed in version 3.11.6.

    • Update to 3.11.6
    Published Updated
  16. CVE-2026-47686

    Critical · CVSS 9.9EPSS 0.58%Fix available

    vm2: Missing Error.cause Sanitization Enables VM2 Sandbox Escape to RCE

    vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.6, handleException() in lib/setup-sandbox.js sanitizes SuppressedError.error, SuppressedError.suppressed, and AggregateError.errors but does not sanitize Error.cause, allowing sandbox code to obtain a powerful host object such as process from an embedder-exposed host function that throws an error with that object as its cause and then execute arbitrary host commands. This issue is fixed in version 3.11.6.

    • Update to 3.11.6
    Published Updated
  17. CVE-2026-47698

    Critical · CVSS 9.8EPSS 0.97%Fix available

    vm2: Sandbox Breakout Using Dangerous Host Proto Mutators

    vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.6, lib/bridge.js and lib/setup-sandbox.js fail to block stacked indirection through Function.prototype.call around dangerous host prototype getter and setter mutators, allowing sandbox code to sever a host intrinsic's prototype chain and reach e.constructor.constructor for arbitrary host command execution. This issue is fixed in version 3.11.6.

    • Update to 3.11.6
    Published Updated
  18. CVE-2026-47141

    Medium · CVSS 6.9EPSS 0.51%Fix available

    vm2: NodeVM observability builtins leak host process and HTTP request data

    vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, NodeVM exposes some process-wide observability builtins when they are allowed through require.builtin. The diagnostics_channel, async_hooks, and perf_hooks builtins are not blocked by the dangerous builtin denylist. These modules are process-wide, not sandbox-local. Sandboxed code can use them to observe host application data across the vm2 boundary. This issue has been patched in version 3.11.4.

    • Update to 3.11.4
    Published Updated
  19. CVE-2026-47210

    Critical · CVSS 9.8EPSS 0.82%Fix available

    vm2 sandbox escape via JSPI-backed Promise `.finally()` species bypass

    vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, a sandbox escape vulnerability in vm2 allows arbitrary code execution in the host process when untrusted code is executed with async support on runtimes exposing WebAssembly JSPI (WebAssembly.promising / WebAssembly.Suspending). In the tested configuration, a JSPI-backed Promise can reach Promise.prototype.finally() in a way that bypasses the expected Promise-species hardening and exposes a host-originated rejection object to attacker-controlled species logic, breaking the sandbox boundary. This issue has been patched in version 3.11.4.

    • Update to 3.11.4
    Published Updated
  20. CVE-2026-47208

    Critical · CVSS 10EPSS 0.83%Fix available

    vm2: Sandbox Breakout Using Promise Species

    vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, VM2 suffers from a sandbox breakout vulnerability. This allows attackers to write code which can escape from the VM2 sandbox and execute arbitrary commands on the host system. This issue has been patched in version 3.11.4.

    • Update to 3.11.4
    Published Updated

Check your server

Check your installed stack and versions against the current vulnerability feeds.

Check your server →