Possível vulnerabilidade de execução remota de código descoberta em aplicativos Node.js

Uma vulnerabilidade em uma estrutura de aplicativo da web Node.js pode ser explorada para obter a execução remota de código (RCE).

Pública feita por auto-descrito “wannabe” pesquisador de segurança Shoeb ‘CaptainFreak’ Patel em 23 de janeiro, a pesquisa sugere que Express.js podem ser suscetíveis a arquivo local erros de leitura. Quando combinada com uma versão antiga do mecanismo Handlebars, essa falha também pode ser explorada para executar remotamente código malicioso.

Handlebars é um mecanismo de modelagem popular para aplicativos da web.

Falando ao The Daily Swig , Patel disse que decidiu caçar vulnerabilidades no Node.js, Express.js e Handlebars devido à sua familiaridade com o código como desenvolvedor.

‘Dependência inferno’

Em um artigo técnico , Patel disse que na semana passada, ele “tropeçou” em um problema crítico de segurança de leitura de arquivo local que exigia apenas uma carga útil de menos de  10 linhas de código para transformá-lo em um potencial exploit de RCE.

desenvolvedor disse que ficou “surpreso e desiludido” com o bug, colocando a culpa no ‘inferno da dependência’ – um problema de desenvolvimento comum experimentado quando o software depende de dependências conflitantes .

“Para ser honesto, eu não deveria ter ficado tão surpreso”, disse Patel. “A traição por módulos embutidos, dependências e pacotes foram a razão para introduzir vários bugs de segurança. Este é um tema recorrente na segurança de software. ”

Para verificar se suas descobertas eram um “problema conhecido” ou não, Patel criou uma competição Capture the Flag (CTF) no Twitter e a compartilhou com associados de segurança na web, competições de CTF, engenharia de software e grupos de recompensa por bug.

Quatro participantes encontraram com sucesso a bandeira, um parâmetro de layout ‘secreto’. Após uma investigação mais aprofundada do código estranho em Node.js, Patel descobriu que era possível ler qualquer arquivo com uma extensão lendo “do diretório de visualizações raiz + layout, e passando-o para handlebars.compile , o que nos dá o HTML depois de compilar o arquivo fornecido que controlamos completamente ”.

Então, é possível acionar o RCE com certos pré-requisitos, incluindo o uso de Handlebars versões 4.0.3 e abaixo. Uma vulnerabilidade nessas versões permitia a poluição do protótipo e a criação de carga útil RCE, conforme mostrado na carga útil RCE de Mahmoud Gamal para Shopify . Esse problema foi corrigido nas versões 4.1.2, 4.0.14 e posteriores do Handlebars.

Patel diz que os aplicativos potenciais do mundo real incluem o comprometimento do servidor por meio do RCE ou, pelo menos, vazamentos de informações e código-fonte causados ​​pela vulnerabilidade de leitura de arquivo local.

“Escrevi sobre isso para que toda a comunidade de desenvolvimento web e NodeJs [soubesse] sobre esse comportamento peculiar nesta pilha”, comentou Patel.

Fonte: https://portswigger.net/