Pesquisadores de cibersegurança revelaram uma falha crítica de segurança no isolated-vm, um popular sandbox de código aberto com mais de 2.900 estrelas e 190 forks no GitHub, que pode permitir que invasores escapem dos limites do ambiente isolado.
A vulnerabilidade, identificada como GHSA-864f-rcv7-6rh4 e ainda sem um identificador CVE, afeta todas as versões da biblioteca anteriores e inclusive a 7.0.0. O problema foi corrigido nas versões 6.2.0 e 7.0.1, lançadas no início deste mês.
O isolated-vm é uma biblioteca para Node.js usada para executar JavaScript não confiável dentro de um V8 Isolate, uma instância independente do mecanismo JavaScript V8 do Google. Isso permite que múltiplos ambientes JavaScript isolados operem ao mesmo tempo, sem compartilhar dados nem interferir uns nos outros. O pacote no npm registrou quase 1 milhão de downloads na última semana.
Como cada V8 Isolate tem estado separado e mantém seu próprio heap, não é possível passar diretamente objetos JavaScript da thread principal do Node.js para um isolate de trabalho. Para isso, o isolated-vm oferece a classe ExternalCopy, usada para serializar com segurança objetos JavaScript do isolate hospedeiro e desserializá-los no isolate convidado.
A vulnerabilidade identificada pela Endor Labs está nesse componente e permite que o código executado dentro do sandbox saia do ambiente isolado e corrompa a memória no aplicativo hospedeiro.
“Uma confusão de tipos no tratamento da opção transferList em ExternalCopy permite que o código executado dentro do sandbox corrompa a memória no processo hospedeiro”, afirmou o pesquisador da Endor Labs Cristian-Alexandru Staicu, creditado por descobrir e relatar a falha, em um relatório técnico compartilhado com portais de notícia.
“A partir de nada além de um único ivm.Reference, a forma padrão pela qual os hosts concedem qualquer capacidade a um sandbox, evoluímos o bug de uma falha controlada com endereço fixo até o sequestro do fluxo de controle do host, demonstrando uma fuga completa do guest para o host.”
A exploração bem-sucedida da falha permite corromper a memória no processo hospedeiro, fazendo com que ele trave com uma falha de segmentação, SIGSEGV. Isso também pode levar a uma fuga do sandbox do guest para o host e à erosão da fronteira de confiança, comprometendo justamente o objetivo do isolated-vm.
“O impacto mínimo demonstrado é um travamento confiável e controlado por endereço fixo, acionável por qualquer guest que tenha recebido um ivm.Reference, a forma padrão de conceder qualquer capacidade a um sandbox”, disse o mantenedor do projeto, Marcel Laverdet, em um comunicado.
“O impacto máximo demonstrado é o sequestro do fluxo de controle do processo hospedeiro, ou seja, potencial execução remota de código no host.”
Usuários que tenham o isolated-vm instalado em seus ambientes de desenvolvimento são orientados a atualizar para a versão mais recente para obter a melhor proteção. Detalhes adicionais sobre o exploit completo foram omitidos para evitar que agentes maliciosos lancem seus próprios ataques.
“A principal conclusão é que o que não foi quebrado foi o próprio mecanismo de isolamento”, disse Staicu. “A fronteira do Isolate do V8 permaneceu intacta. O que falhou foi o código de ligação em C++ que faz a ponte dos valores atravessando essa fronteira. Um bloco de construção perfeitamente sólido foi comprometido pela camada de integração ao seu redor.”
Publicidade
Nossa audiência é formada por analistas, pentesters, decisores e entusiastas que consomem nossas notícias todo dia pelo Site, Newsletter e Instagram. Fale com quem realmente importa para o seu negócio. Anuncie aqui. Saiba mais...