PT-2026-38392 · Npm · Vm2
CVSS v3.1
8.6
Alta
| Vetor | AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H |
Nome do Software Vulnerável e Versões Afetadas
vm2 versões anteriores a 3.11.0
Descrição
Existe um problema de escape de sandbox onde o código executado na sandbox pode travar o processo host do Node.js. Isso ocorre quando um construtor de
Promise dispara uma rejeição não tratada (unhandled rejection) que se propaga para o host. Especificamente, se um executor de Promise define Error.name como um Symbol() e então acessa .stack, a função interna FormatStackTrace do V8 tenta realizar uma operação Symbol.toString(), o que lança um TypeError no reino do host. Como o erro se origina dentro do executor e não possui um manipulador .catch(), ele resulta em uma rejeição não tratada que encerra o processo host.Detalhes técnicos incluem:
- O wrapper
localPromiseemlib/setup-sandbox.js:38não envolve o executor em um bloco try-catch. - O
resetPromiseSpeciese as sobrescritas de.then()e.catch()emlib/setup-sandbox.js:165-230não interceptam rejeições originadas do próprio executor. - A configuração
allowAsync: falsenão mitiga o problema porque o construtor dePromisecontinua disponível, e o bloqueio do.catch()garante que a rejeição permaneça não tratada.
Isso pode levar a um loop contínuo de negação de serviço (DoS), onde o processo host trava ao receber uma única requisição, potencialmente ignorando políticas de reinicialização automática.
Recomendações
Atualize o vm2 para a versão 3.11.0.
Exploit
Correção
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Vm2