Uma boa parte das pesquisas que nos fornecem excelentes ferramentas de segurança são desenvolvidas em ambiente acadêmico. Agora, por exemplo, um grupo de pesquisadores acadêmicos projetou uma ferramenta para detectar falhas de segurança do Node.js. A ferramenta é de código aberto e já identificou 180 vulnerabilidades de segurança.
O Node.js
O Node.js é um ambiente de código aberto e multiplataforma para executar código JavaScript fora do navegador. Ele foi projetado para o desenvolvimento de aplicativos de rede.
Embora sejam bastante úteis, muitos dos pacotes Node.js disponíveis contêm falhas desconhecidas que levam ao comprometimento do aplicativo. Assim, uma ferramenta que identifique essas falhas é de bastante valia.
Pensando nisso, acadêmicos da Universidade Johns Hopkins e da Universidade Renmin da China propõem uma nova abordagem para encontrar vulnerabilidades de segurança em pacotes Node.js.
Ferramenta para detectar falhas de segurança do Node.js
Inspirados pelas abordagens baseadas em consultas de gráficos, como o Code Property Graph (CPG), os pesquisadores criaram uma nova estrutura de gráfico chamada Object Dependence Graph (ODG) e também construíram um sistema de protótipo de código aberto chamado “ODGEN”, para usar ODG para caça de insetos.
O ODG basicamente modela objetos JavaScript como nós e representa suas relações com Abstract Syntax Tree (AST) como arestas. “Especificamente, o ODG inclui dependências de dados refinadas entre objetos, ajudando assim a detecção de vulnerabilidades no estilo taint, como injeção de comando”, de acordo com um documento de pesquisa (.pdf) que documenta o trabalho.
A nova abordagem gera ODG usando “análise estática sensível a fluxo e contexto com sensibilidade de ramificação híbrida e informações de pontos”, disse o grupo, observando que o ODG pode ser usado para a detecção offline de vários tipos de vulnerabilidades do Node.js.
O ODGEN, que interpreta abstratamente todas as ramificações em paralelo, foi projetado para definir e pesquisar objetos para nós AST e registrar definições e pesquisas de objetos como parte do ODG.
Os pesquisadores conseguiram configurar o ODGEN para identificar seis tipos de vulnerabilidades, o que levou à descoberta de “43 vulnerabilidades de zero dia em nível de aplicativo com 14 falsos positivos e também confirmamos 137 vulnerabilidades de dia zero em nível de pacote com 84 falsos positivos”. Um total de 70 identificadores de Vulnerabilidades e Exposições Comuns (CVE) foram emitidos para os bugs de segurança identificados.
Esperamos que essa ferramenta seja de grande valia para identificar falhas de segurança no Node.js, dessa forma, deixando as coisas mais seguras para os usuários.