Os sandboxes do Node.js estão abertos à “poluição do protótipo”

Um bug no vm2, uma sandbox para testar código JavaScript não confiável, permite que partes mal-intencionadas contornem os controles de segurança da biblioteca e realizem ataques de execução remota de código (RCE), descobriu um grupo de pesquisadores.

A página GitHub do vm2 descreve a biblioteca como “uma sandbox que pode executar código não confiável com módulos integrados do Node na lista de permissões. Com segurança! ” No entanto, o CISPA Helmholtz Center for Information Security, um grupo de pesquisa de cibersegurança da Alemanha, descobriu que a biblioteca está aberta a protótipos de ataques de poluição. Poluição de protótipo é um tipo de vulnerabilidade em JavaScript e outras linguagens baseadas em objeto que permite que invasores executem código arbitrário injetando propriedades dinamicamente em objetos confidenciais.

Quebra do sandbox

Uma prova de conceito (PoC) no Snyk mostra como algumas linhas de código podem explorar a vulnerabilidade em vm2 para realizar uma poluição de protótipo e um ataque RCE no host. Embora o bug tenha sido registrado como ‘poluição de protótipo’, Cristian-Alexandru Staicu, um dos pesquisadores que ajudou a descobrir e relatar o bug, disse ao The Daily Swig que um título melhor seria “fuga da caixa de areia”.

“No PoC publicado pela Snyk, mostramos um protótipo de carga útil de poluição e uma execução arbitrária de código. Ambos são o resultado da quebra da caixa de areia ”, disse Staicu. “O vm2 deve impedir o acesso ao objeto global / operações privilegiadas (por exemplo, exigir) e mostramos como um invasor pode contornar esse controle de segurança.”

Embora a vulnerabilidade não forneça acesso root ao dispositivo host, ela dá acesso completo à API Node.js, algo que o vm2 está tentando restringir, explicou Staicu.

Bug recorrente

Em março, eles relataram um bug de quebra de sandbox em isolated-vm, outro sandbox, que permitiu que os invasores obtivessem uma referência para o objeto “função” do contexto Node.js.

Eles encontraram bugs semelhantes em pelo menos três outras bibliotecas sandbox, disse Staicu, embora ele não pudesse compartilhar detalhes, uma vez que o processo de divulgação com os desenvolvedores relevantes continua em andamento e os patches ainda não foram lançados.

“Nossos resultados até agora mostram que o código JavaScript de sandbox com proxies ES6 é difícil”, disse ele. “Encontramos falhas na maioria dos sistemas que analisamos, portanto, deve-se ter muito cuidado ao executar código malicioso usando essas bibliotecas.”

Fonte: https://portswigger.net/