PT-2026-38392 · Npm · Vm2

·

CVE-2026-44001

·

Publicado

2026-05-01

·

Atualizado

2026-08-06

CVSS v3.1

8.6

Alta

VetorAV: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 localPromise em lib/setup-sandbox.js:38 não envolve o executor em um bloco try-catch.
  • O resetPromiseSpecies e as sobrescritas de .then() e .catch() em lib/setup-sandbox.js:165-230 não interceptam rejeições originadas do próprio executor.
  • A configuração allowAsync: false não mitiga o problema porque o construtor de Promise continua 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

BDU:2026-06909
CVE-2026-44001
GHSA-HW58-P9XV-2MJH

Produtos afetados

Vm2