top of page

Falha crítica no vm2 permite escapar do sandbox e executar código em servidores Node.js


Uma vulnerabilidade crítica na biblioteca vm2, usada para executar código JavaScript não confiável em ambientes isolados no Node.js, permite que invasores escapem do sandbox e executem comandos arbitrários no sistema host. A falha foi registrada como CVE-2026-26956 e teve código de prova de conceito, conhecido como PoC, publicado publicamente.


O problema foi confirmado na versão 3.10.4 do vm2, embora versões anteriores também possam estar vulneráveis. Segundo o aviso de segurança divulgado pelo mantenedor, a vulnerabilidade afeta ambientes com Node.js 25, com confirmação no Node.js 25.6.1, quando estão habilitados os recursos WebAssembly exception handling e JSTag support.


O vm2 é uma biblioteca open source bastante utilizada no ecossistema Node.js para executar scripts JavaScript fornecidos por usuários dentro de um ambiente restrito. Esse tipo de recurso é comum em plataformas de programação online, ferramentas de automação, aplicações SaaS e serviços que permitem a execução controlada de código enviado por terceiros.


A proposta do vm2 é isolar o código executado no sandbox e impedir que ele acesse APIs sensíveis do Node.js, como o objeto process e o sistema de arquivos. Na prática, isso significa bloquear a interação direta entre o código não confiável e recursos internos do servidor, reduzindo o risco de execução indevida de comandos, leitura de arquivos ou manipulação do ambiente de hospedagem.


A biblioteca tem ampla adoção, com mais de 1,3 milhão de downloads semanais no npm, o gerenciador de pacotes padrão do Node.js. Esse volume de uso aumenta a relevância da falha, especialmente para empresas que dependem de sandboxes JavaScript em produtos expostos à internet ou em fluxos automatizados de execução de código.


A CVE-2026-26956 está relacionada ao tratamento incorreto de exceções que atravessam a fronteira entre o ambiente isolado e o sistema host. De acordo com o aviso de segurança, o vm2 normalmente depende de proteções implementadas no nível do JavaScript para impedir que erros originados no host sejam expostos ao sandbox sem controle. A biblioteca também utiliza proxies de ponte, conhecidos como bridge Proxies, para encapsular objetos que cruzam diferentes contextos de execução.


O ponto crítico está no comportamento do WebAssembly exception handling. Esse recurso consegue interceptar erros JavaScript em uma camada mais baixa dentro do motor V8, usado pelo Node.js e pelo Google Chrome. Com isso, determinadas exceções podem contornar as defesas implementadas pelo vm2 no nível da linguagem JavaScript.


A exploração descrita no aviso envolve a geração de um TypeError especialmente construído por meio da conversão de Symbol para string. Esse processo pode fazer com que um objeto de erro originado no host seja vazado de volta para dentro do sandbox sem passar pela sanitização esperada pelo vm2.


Uma vez que esse objeto vem do ambiente host, o invasor pode abusar de sua cadeia de construtores para recuperar acesso a componentes internos do Node.js, incluindo o objeto process. A partir desse acesso, torna-se possível alcançar a execução arbitrária de comandos no sistema subjacente, comprometendo diretamente a segurança do servidor.


O aviso de segurança do mantenedor inclui uma prova de conceito que demonstra a execução remota de código na máquina host. A publicação de um PoC aumenta a urgência da correção, já que reduz a barreira técnica para que a falha seja testada ou incorporada em ataques reais, especialmente contra aplicações que executam código JavaScript fornecido por usuários.


A recomendação para administradores e desenvolvedores é atualizar o vm2 para a versão 3.10.5 ou superior o quanto antes. Segundo o texto original, a versão mais recente disponível é a 3.11.2. Organizações que usam Node.js 25 com os recursos afetados habilitados devem priorizar a atualização e revisar se seus serviços permitem a execução de scripts externos ou enviados por usuários.


A falha também se soma a um histórico recente de vulnerabilidades críticas envolvendo escape de sandbox no vm2. No início de 2026, a biblioteca já havia sido impactada por outra falha crítica, rastreada como CVE-2026-22709, também com potencial para execução arbitrária de código no host.


Casos anteriores incluem as vulnerabilidades CVE-2023-30547, CVE-2023-29017 e CVE-2022-36067. A recorrência desse tipo de problema evidencia a dificuldade técnica de isolar código não confiável em ambientes JavaScript, especialmente quando a segurança depende da separação entre contextos, tratamento seguro de exceções e bloqueio de acesso a objetos internos do runtime.


Para equipes de segurança, o risco é mais relevante em aplicações que oferecem execução dinâmica de código, automações com scripts customizados, ambientes de avaliação online, sistemas de plugins e plataformas SaaS com lógica programável pelo usuário. Nesses cenários, uma falha de sandbox pode transformar um recurso legítimo da aplicação em um caminho para controle do servidor.


Além da atualização da biblioteca, é recomendável revisar a exposição desses ambientes, restringir permissões do processo Node.js, aplicar controles de isolamento adicionais no sistema operacional ou em containers, monitorar tentativas de exploração e auditar dependências que utilizem vm2 de forma direta ou indireta.

 
 
Cópia de Cyber Security Brazil_edited.jpg

Cyber Security Brazil desde 2021, atuamos como referência nacional em segurança digital, oferecendo informação confiável, conteúdo especializado e fortalecendo o ecossistema de cibersegurança no Brasil.

Institucional

(11) 93937-9007

INSCREVA SEU EMAIL PARA RECEBER

ATUALIZAÇÕES, POSTS E NOVIDADES

  • RSS
  • Instagram
  • LinkedIn

© 2025 Todos os direitos reservados a Cyber Security Brazil

bottom of page