Hack Alerta

Falha crítica na biblioteca vm2 do Node.js permite execução remota de código em 11 vulnerabilidades

Biblioteca vm2 do Node.js é alvo de 11 vulnerabilidades críticas que permitem execução remota de código e escape de sandbox, afetando milhares de aplicações e exigindo atualização imediata.

A biblioteca vm2, amplamente utilizada no ecossistema Node.js para isolar a execução de código JavaScript não confiável, foi alvo de uma descoberta de segurança de alto impacto que expõe milhares de aplicações a riscos de execução remota de código (RCE). Pesquisadores identificaram 11 vulnerabilidades críticas que permitem que atacantes escapem do sandbox e obtenham controle total sobre o sistema hospedeiro, comprometendo a promessa fundamental de segurança da ferramenta.

Descoberta e escopo das vulnerabilidades

A falha afeta todas as versões da biblioteca vm2 até a 3.11.1, com a maioria das correções disponíveis na versão 3.11.0. O problema central reside na quebra do modelo de isolamento do sandbox, que foi projetado para manter o código malicioso contido e proteger o ambiente host. Os pesquisadores demonstraram que é possível explorar 11 técnicas distintas para contornar as proteções, resultando em execução de comandos arbitrários no sistema operacional subjacente.

Entre as vulnerabilidades mais severas está a CVE-2026-24118, que explora o comportamento de __lookupGetter__ para escapar do sandbox. Outra falha crítica, a CVE-2026-24120, contorna as proteções de Promise species para executar comandos via child_process.execSync. A CVE-2026-24781 abusa do módulo util do Node.js para inspecionar internos e expor objetos host brutos, burlando a camada de isolamento de proxy do vm2.

Recursos mais recentes do JavaScript também introduziram vetores de ataque. A CVE-2026-26332 aproveita as mecânicas de DisposableStack e SuppressedError no Node.js v24 para expor o objeto Function host. Além disso, a CVE-2026-26956 ataca o Node.js v25 usando uma instrução WebAssembly try_table que contorna a sanitização do vm2 completamente, permitindo execução de código em nível de root.

Técnicas de escape do sandbox

A análise técnica revela que as vulnerabilidades exploram falhas na manipulação de cadeias de protótipos e na lógica de carregamento de módulos. As CVEs CVE-2026-43997 e CVE-2026-44006 abusam do util.inspect e do travessia de protótipos para alcançar escapes do sandbox. A CVE-2026-43999 contorna as restrições de módulo integradas do vm2 usando Module._load(), mesmo quando o child_process está explicitamente bloqueado.

O poluição de protótipos também permanece uma preocupação séria. A CVE-2026-44005 permite que atacantes modifiquem protótipos host compartilhados, como Object.prototype e Function.prototype, potencialmente impactando todo o processo Node.js. Uma falha de configuração perigosa, rastreada como GHSA-8hg8-63c5-gwmx, revelou que habilitar nesting: true efetivamente derrota require: false, permitindo que código sandboxed crie VMs internas irrestritas e alcance RCE completo apesar das restrições de segurança.

O aspecto mais preocupante é que duas vulnerabilidades críticas, CVE-2026-44008 e CVE-2026-44009, permanecem sem correção nas versões até a 3.11.1. Essas falhas exploram como as espécies de array são manipuladas e a lógica de exceção para expor objetos do lado host e recuperar acesso irrestrito ao construtor Function host.

Impacto em infraestrutura de nuvem e CI/CD

O vm2 é um pacote npm do Node.js que executa JavaScript não confiável dentro de um container isolado, alimentando desde plataformas de execução de código e pipelines de CI até motores de plugin e serviços em nuvem multi-tenant. Seu modelo de segurança inteiro repousa em uma promessa: manter o código malicioso dentro e o host seguro. Pesquisadores agora rasgaram essa promessa em 11 técnicas distintas, expondo o quão finas eram as paredes desse container.

A falha fundamental da biblioteca é que o código executado dentro de uma instância VM não pode alcançar o sistema host, mas essas divulgações quebraram essa promessa fundamental, com todas as vulnerabilidades permitindo execução remota de código (RCE) completa no host subjacente. Em ambientes empresariais, isso pode significar que um serviço de SaaS que permite upload de scripts ou plugins pode ser comprometido, permitindo que um atacante controle o servidor onde o serviço está hospedado.

Aplicações que dependem do vm2 para isolar código de terceiros, como plataformas de automação, ferramentas de análise de código e ambientes de teste, estão em risco imediato. A natureza da falha permite que um atacante não apenas execute comandos, mas também leia e escreva arquivos no sistema de arquivos do host, exfiltre dados sensíveis e mova-se lateralmente dentro da rede.

Mitigação e alternativas de isolamento

Os operadores devem atualizar imediatamente o VM2 para a versão 3.11.1 para abordar todas as vulnerabilidades atualmente corrigidas. No entanto, para as CVEs CVE-2026-44008 e CVE-2026-44009, nenhuma correção está disponível, e as equipes devem considerar desabilitar a sandbox baseada em vm2 completamente, substituindo-a por tecnologias de isolamento de nível de kernel como Docker, gVisor ou microVMs Firecracker.

Os desenvolvedores devem evitar a opção nesting: true e configurações de built-in com curinga, como ['*', '-child_process'], em qualquer ambiente que execute código não confiável. Dada a grande quantidade e diversidade dessas técnicas de bypass, abrangendo manipulação de protótipos JavaScript, tratamento de exceções WebAssembly, sobrescrita de espécies de Promise e carregamento de módulos integrados, o modelo de isolamento apenas JavaScript do vm2 deve ser considerado fundamentalmente insuficiente para casos de uso de alta segurança.

Para organizações que dependem do vm2, a prioridade imediata é a atualização para a versão corrigida mais recente. Se a atualização não for possível devido a dependências críticas, a recomendação é isolar o ambiente de execução em contêineres Docker com permissões mínimas e sem acesso à rede, ou migrar para soluções de isolamento de nível de kernel que oferecem garantias de segurança mais fortes.

Perguntas frequentes

Qual é a severidade das vulnerabilidades?
As vulnerabilidades são classificadas como críticas, com pontuação CVSS alta, permitindo execução remota de código sem autenticação em muitos cenários.

Quais versões são afetadas?
Todas as versões até a 3.11.1 são afetadas. A versão 3.11.1 corrige a maioria, mas duas vulnerabilidades permanecem sem patch.

Devo descontinuar o uso do vm2?
Para cargas de trabalho de alta segurança, recomenda-se substituir o vm2 por tecnologias de isolamento de nível de kernel como Docker ou Firecracker.

Como posso verificar se estou vulnerável?
Verifique a versão do pacote vm2 em seu projeto. Se estiver abaixo de 3.11.1, atualize imediatamente. Se estiver na 3.11.1, considere a migração devido às vulnerabilidades sem patch.


Baseado em publicação original de Cyber Security News
Publicado pela Redação Hack Alerta com base em fontes externas citadas e monitoramento editorial do Hack Alerta. Para decisões técnicas, operacionais ou jurídicas, confirme sempre os detalhes na fonte original.