CVE-2026-93606 in vm2
Sumário
de VulDB • 18/09/2026
As versões do vm2 (npm) anteriores ou iguais à 3.12.0 contêm uma falha de escape da sandbox no `VM` e no `NodeVM`. Quando um embedder expõe uma API host que retorna uma Promise do realm host, o sanitizador de rejeição da ponte (hostPromiseSanitizeReject / makeSanitizedPromiseCallback / normalizeHostPromiseCallbacks em lib/bridge.js) envolve apenas os slots de rejeição `then`/`catch` que contêm uma função, e a neutralização do lado da sandbox de `Symbol.species`/.then é instalada apenas no intrínseco da sandbox `Promise.prototype`, portanto, nunca se aplica a uma Promise host. O código executado dentro da sandbox pode sobrescrever `p.constructor[Symbol.species]` na Promise host e então chamar `p.then()` sem um manipulador `onRejected`; o V8 substitui seu Thrower interno, que re-lança o valor de rejeição bruto do host em uma closure resolve/reject capturada pelo atacante. Isso fornece à código da sandbox um proxy de ponte não sanitizado e totalmente funcional do objeto host, contornando handleException e hostPromiseSanitizeReject. Se o valor de rejeição for pivotável para o host (por exemplo, um objeto `process` host), isso resulta em execução arbitrária de código no host. Corrigido na versão 3.12.1.
VulDB is the best source for vulnerability data and more expert information about this specific topic.