Vulnerabilidades do Npm Vm2
🔔 Criar alerta RSS Verificador de versão
CVEs publicadas que afetam Npm Vm2: 33 registro(s), com versões afetadas e correções.
CVE-2026-47698
Crítica · 9.8
CWE-913 17/08/2026
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.
CVE-2026-47686
Crítica · 9.9
CWE-693 17/08/2026
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.
CVE-2026-47210
Crítica · 9.8
CWE-913 12/06/2026
Escape de sandbox no vm2 para Node.js via bypass de species em Promise.finally() com JSPI
vm2 é uma vm/sandbox de código aberto para Node.js. Antes da versão 3.11.4, uma vulnerabilidade de escape de sandbox no vm2 permite execução arbitrária de código no processo hospedeiro quando código não confiável é executado com suporte assíncrono em runtimes que expõem WebAssembly JSPI (WebAssembly.promising / WebAssembly.Suspending). Na configuração testada, uma Promise apoiada por JSPI pode alcançar Promise.prototype.finally() de forma que contorna o endurecimento esperado de Promise-species e expõe um objeto de rejeição originado no host à lógica de species controlada pelo atacante, quebrando a fronteira do sandbox. Este problema foi corrigido na versão 3.11.4.
CVE-2026-47209
Alta · 8.6
CWE-693 12/06/2026
vm2: Bridge Proxy set trap ignores receiver parameter, enabling host object property injection via prototype chain
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, the BaseHandler.set trap in bridge.js (line 1231) ignores the receiver parameter and unconditionally writes to the host target object. Per the Proxy set trap specification, when receiver !== proxy (e.g., when a child object inherits from the proxy via Object.create), the property assignment should create an own property on the receiver, not on the proxy target. The current implementation always calls otherReflectSet(object, key, value) against the host target, causing all inherited property writes to leak through to the host object. This bug provides an alternative attack vector for writing dangerous cross-realm Symbol keys (e.g., nodejs.util.promisify.custom) to host objects, bypassing any future per-trap isDangerousCrossRealmSymbol guard on the direct set path. This issue has been patched in version 3.11.4.
CVE-2026-47208
Crítica · 10.0
CWE-913 12/06/2026
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.
CVE-2026-47141
Média · 6.9
CWE-668 12/06/2026
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.
CVE-2026-47140
Crítica · 10.0
CWE-693 12/06/2026
vm2: NodeVM builtin denylist bypass via process and inspector/promises allows host code execution
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, NodeVM blocks several dangerous Node.js builtins such as module, worker_threads, cluster, vm, repl, and inspector. However, the denylist misses process and inspector/promises. Both can be used from sandboxed code to reach host-side execution primitives. This allows sandboxed code to bypass the intended builtin restrictions and execute code in the host process. This issue has been patched in version 3.11.4.
CVE-2026-47139
Alta · 8.6
CWE-693 12/06/2026
vm2: NodeVM network builtin exclusions bypass via internal _http_client and _http_server
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, NodeVM supports excluding public network builtins from the wildcard builtin option. With this configuration direct access to http, https, http2, net, dgram, tls, dns, and dns/promises is blocked. However, Node.js also exposes underscored internal HTTP builtins such as _http_client and _http_server. These are not blocked when the public modules are excluded. Sandboxed code can use these internal builtins to make outbound HTTP requests and open listening HTTP sockets even though the public network modules are denied. This issue has been patched in version 3.11.4.
CVE-2026-47137
Crítica · 10.0
CWE-913 12/06/2026
vm2: GHSA-8hg8-63c5-gwmx patch bypass: nesting:true without explicit require still allows full RCE
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, the fix for GHSA-8hg8-63c5-gwmx (CVE-2023-37903) introduced a check in nodevm.js line 263 that blocks the combination nesting: true + require: false. However, the check uses strict equality (options.require === false), which is trivially bypassed by omitting the require option entirely. When require is not specified, options.require is undefined, not false. The strict equality check fails, so the security guard is skipped. Immediately after (line 280), the destructuring default require: requireOpts = false assigns requireOpts = false, producing the exact configuration the patch was designed to prevent. This issue has been patched in version 3.11.4.
CVE-2026-47135
Alta · 8.7
CWE-693 12/06/2026
vm2: Sandbox escape via unblocked cross-realm Symbol.for keys + missing bridge write-trap symbol checks
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, Symbol.for override in setup-sandbox.js only intercepts 2 of 9 dangerous Node.js cross-realm symbols. Combined with the bridge's set/defineProperty/deleteProperty traps having no isDangerousCrossRealmSymbol key check, sandbox code can obtain real cross-realm symbols, write them to host objects, and control host-side behavior — verified with a full util.promisify hijack chain. This issue has been patched in version 3.11.4.
CVE-2026-47131
Crítica · 10.0
CWE-913 12/06/2026
vm2: Sandbox Escape
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, by combining Buffer.call.call({}.__lookupGetter__, Buffer, "__proto__"), Buffer.call.call({}.__lookupSetter__, Buffer, "__proto__"), and Node.js's ERR_INVALID_ARG_TYPE Error, the host's TypeError constructor can be obtained, which allows the escape from the sandbox. This allows attackers to run arbitrary code. This issue has been patched in version 3.11.4.
CVE-2026-45411
Crítica · 9.8
CWE-668 13/05/2026
vm2: Fuga de Sandbox via Async Generator
vm2 é um vm/sandbox de código aberto para Node.js. Antes da 3.11.3, é possível capturar uma exceção do host usando a expressão yield* dentro de um async generator. Quando o generator é fechado usando a função return, o valor é aguardado (awaited) e exceções lançadas na chamada then são capturadas pelo runtime e passadas ao iterador yield* como o próximo valor. Isso permite que atacantes escrevam código capaz de escapar do sandbox do VM2 e executar comandos arbitrários no sistema hospedeiro. Esta vulnerabilidade é corrigida na 3.11.3.
CVE-2026-44009
Crítica · 9.8
CWE-668 13/05/2026
vm2 para Node.js: escape de sandbox via exceção de null prototype
vm2 é um vm/sandbox de código aberto para Node.js. Antes da versão 3.11.2, esta vulnerabilidade foi corrigida na versão 3.11.2.
CVE-2026-44008
Crítica · 9.8
CWE-668 13/05/2026
vm2: escape de sandbox via neutralizeArraySpeciesBatch
vm2 é uma sandbox/VM de código aberto para Node.js. Antes da versão 3.11.2, o novo método neutralizeArraySpeciesBatch lida com objetos do outro lado, mas pode chamar este lado por meio de um getter no protótipo de array, expondo objetos do lado errado dentro da sandbox. Isso pode ser usado para obter objetos do host e o objeto Function do host. Isso permite que atacantes escrevam código que escapa da sandbox do VM2 e executa comandos arbitrários no sistema host. Esta vulnerabilidade está corrigida na versão 3.11.2.
CVE-2026-44007
Crítica · 9.1
CWE-284 13/05/2026
Bypass em vm2 com nesting em NodeVM permite fuga do sandbox e execução de comandos no sistema
vm2 é um sandbox e máquina virtual de código aberto para Node.js. Antes da versão 3.11.1, quando um NodeVM é criado com nesting: true, o código no sandbox pode invocar require('vm2') incondicionalmente, independentemente da configuração require da VM externa, incluindo require: false. Com acesso ao vm2, o código do sandbox constrói um novo NodeVM interno com configurações de require irrestritas e executa comandos arbitrários do sistema operacional no host. Qualquer aplicação que execute código não confiável dentro de um NodeVM com nesting: true fica totalmente comprometida. Esta vulnerabilidade está corrigida na versão 3.11.1.
CVE-2026-44006
Crítica · 10.0
CWE-94 13/05/2026
vm2 (Node.js): Fuga de sandbox
vm2 é um vm/sandbox de código aberto para Node.js. Antes da versão 3.11.0, é possível alcançar BaseHandler.getPrototypeOf, que pode ser usado para obter protótipos arbitrários. Esta vulnerabilidade está corrigida na versão 3.11.0.
CVE-2026-44005
Crítica · 10.0
CWE-94 13/05/2026
vm2 para Node.js: fuga de sandbox por modificação de protótipos do host
vm2 é uma sandbox/VM de código aberto para Node.js. Das versões 3.9.6 até 3.10.5, a ponte do vm2 expõe proxies mutáveis para protótipos intrínsecos do realm do host e, em seguida, encaminha escritas feitas dentro da sandbox para os objetos do host por meio de otherReflectSet() e otherReflectDefineProperty(), o que permite que JavaScript controlado por um atacante, executado em uma VM padrão ou em um NodeVM herdado, modifique Object.prototype, Array.prototype e Function.prototype compartilhados do host a partir de dentro da sandbox. Esta vulnerabilidade está corrigida na versão 3.11.0.
CVE-2026-44004
Alta · 7.5
CWE-770 13/05/2026
vm2: Host Process OOM DoS via Buffer.alloc (Timeout Bypass)
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.0, sandboxed code can call Buffer.alloc() with an arbitrary size to allocate memory directly on the host heap. Because Buffer.alloc is a synchronous C++ native call, vm2's timeout option cannot interrupt it. A single request can exhaust host memory and crash the process with a FATAL ERROR: Reached heap limit. This vulnerability is fixed in 3.11.0.
CVE-2026-44003
Média · 5.8
CWE-693 13/05/2026
vm2: Transformer Fast-Path Bypass Exposes Internal State Variable
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.0, vm2's code transformer has a performance optimization that skips AST analysis when the code does not contain catch, import, or async keywords. This fast-path bypass allows sandboxed code to directly access the internal VM2_INTERNAL_STATE_DO_NOT_USE_OR_PROGRAM_WILL_FAIL variable, which exposes internal security functions (handleException, wrapWith, import). This vulnerability is fixed in 3.11.0.
CVE-2026-44002
Média · 5.8
CWE-209 13/05/2026
vm2: Host File Path Disclosure via Stack Trace Information Leak
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.0, vm2's CallSite wrapper class (intended as a safe wrapper for V8's native CallSite) blocks getThis() and getFunction() to prevent host object leakage, but allows getFileName() to return unsanitized host absolute paths. Any sandboxed code can extract the full directory structure, library paths, and framework versions of the host server. This vulnerability is fixed in 3.11.0.
CVE-2026-44001
Alta · 8.6
CWE-248 13/05/2026
vm2: Sandbox Escape via Promise Constructor Unhandled Rejection (Process Crash DoS)
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.0, a sandbox escape vulnerability in vm2 v3.10.5 allows any sandboxed code to crash the host Node.js process via a single Promise constructor that triggers an unhandled rejection propagating to the host. The fix for CVE-2026-22709 (v3.10.2) only sanitized the onRejected callback in .then() and .catch() overrides and did not address the executor-to-unhandledRejection path. This vulnerability is fixed in 3.11.0.
CVE-2026-44000
Alta · 7.2
CWE-693 13/05/2026
vm2: sandbox boundary bypass via host Promise resolution preserving host object identity
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.0, a sandbox boundary violation in vm2 allows host object identity to cross into the sandbox through host Promise resolution. When a host-side Promise that resolves to a host object is exposed to the sandbox, the value delivered to the sandbox .then() callback preserves host identity. This allows the sandbox to interact with the host object directly, including performing identity checks using host-side WeakMap and mutating host object state from inside the sandbox. This behavior occurs because the Promise fulfillment wrapper uses ensureThis() instead of the stronger cross-realm conversion path (from() / proxy wrapping). If no prototype mapping is found, ensureThis() returns the original object. As a result, objects resolved by host Promises can cross the sandbox boundary without proper isolation. This vulnerability is fixed in 3.11.0.
CVE-2026-43999
Crítica · 9.9
CWE-863 13/05/2026
vm2: NodeVM builtin allowlist bypass via `module` builtin's `Module._load` allows sandbox escape
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.0, NodeVM's builtin allowlist can be bypassed when the module builtin is allowed (including via the '*' wildcard). The module builtin exposes Node's Module._load(), which loads any module by name directly in the host context, completely bypassing vm2's builtin restriction. This allows sandboxed code to load excluded builtins like child_process and achieve remote code execution. This vulnerability is fixed in 3.11.0.
CVE-2026-43998
Alta · 8.5
CWE-59 13/05/2026
vm2: NodeVM require.root bypass via symlink traversal allows sandbox escape
vm2 is an open source vm/sandbox for Node.js. In 3.10.5, NodeVM's require.root path restriction can be bypassed using filesystem symlinks, allowing sandboxed code to load modules from outside the allowed root directory in host context. Because path validation uses path.resolve() (which does not dereference symlinks) but module loading uses Node's native require() (which does), an attacker can load arbitrary host-realm modules and achieve remote code execution. This vulnerability is fixed in 3.11.0.
CVE-2026-43997
Crítica · 10.0
CWE-94 13/05/2026
vm2: Sandbox Escape
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.0, it is possible to obtain the host Object. There are various ways to use the host Object, to escape the sandbox, one example would be using HostObject.getOwnPropertySymbols to obtain Symbol(nodejs.util.inspect.custom). This vulnerability is fixed in 3.11.0.