Nova ferramenta ODGen revela 180 dias zero em bibliotecas Node.js PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Nova ferramenta ODGen revela 180 dias zero em bibliotecas Node.js

Pesquisadores da Universidade Johns Hopkins descobriram recentemente surpreendentes 180 vulnerabilidades de dia zero em milhares de bibliotecas Node.js usando uma nova ferramenta de análise de código desenvolvida especificamente para esse propósito, chamada ODGen.

Desde então, setenta dessas falhas receberam identificadores de vulnerabilidades e exposições comuns (CVE). Eles incluem falhas de injeção de comando, vulnerabilidades de passagem de caminho, problemas de execução de código arbitrário e vulnerabilidades de script entre sites – algumas delas em aplicativos amplamente usados.

Em um artigo divulgado no Usenix Security Symposium no início deste mês, os pesquisadores da Johns Hopkins – Song Li, Mingqing Kang, Jianwei Hou e Yinzhi Cao – descreveram o ODGen como uma alternativa melhor para a análise de código atual e os chamados gráficos baseados em consulta. abordagens para encontrar vulnerabilidades do Node.js.

As abordagens baseadas em análise de programa provaram ser úteis para ajudar a detectar tipos de vulnerabilidades individuais, como falhas de injeção de código em JavaScript. Mas eles não podem ser facilmente estendidos para detectar todos os tipos de vulnerabilidades que possam estar presentes na plataforma Node.js, disseram os pesquisadores. Da mesma forma, os métodos de análise de código baseados em gráficos — onde o código é representado primeiro como um gráfico e depois consultado quanto a erros de codificação específicos — funcionam bem em ambientes como C++ e PHP. No entanto, as abordagens baseadas em gráficos não são tão eficientes na mineração de vulnerabilidades JavaScript devido ao uso extensivo de recursos dinâmicos da linguagem de programação, observaram.

Uma abordagem 'nova' para encontrar vulnerabilidades de JavaScript

Então, os pesquisadores desenvolveram o que descreveram como um método “novo” e melhor chamado Object Dependence Graph (ODG) que pode ser usado para detectar vulnerabilidades do Node.js. Eles implementaram o ODGen para gerar “ODG” para programas Node.js para detectar vulnerabilidades, disseram eles.

Cao, professor assistente de ciência da computação na Universidade Johns Hopkins e coautor do relatório de pesquisa, usa algumas analogias para descrever a análise de código baseada em gráficos em geral e seu gráfico de dependência objetivo proposto. “Se considerarmos uma vulnerabilidade como um padrão especial – digamos, um nó verde conectado a um nó vermelho e depois a um nó preto – uma ferramenta de análise de código baseada em gráficos primeiro converte programas em um gráfico com muitos nós e arestas”, diz Cao . “Em seguida, a ferramenta procura esses padrões no gráfico para localizar uma vulnerabilidade.”

O Gráfico de Dependência de Objetos que os pesquisadores propuseram refina essa abordagem, representando objetos JavaScript como nós e adicionando recursos – incluindo dependências entre objetos – que são específicos da linguagem de programação e, em seguida, consultando erros. Cao descreve como o método funciona usando grãos em um punhado de arroz: Se todos os grãos parecem iguais antes de ferver, mas assumem dois tons diferentes após a fervura - um representando grãos bons e o outro grãos ruins - então fica mais fácil identificar e eliminar os grãos ruins. “A interpretação abstrata é como o processo de fervura que converte o arroz – ou seja, programas – em objetos de cores diferentes” para que os erros sejam mais fáceis de detectar, diz Cao.

Uma variedade de erros

Para ver se sua abordagem funciona, os pesquisadores primeiro testaram o ODGen em uma amostra de 330 vulnerabilidades relatadas anteriormente em pacotes Node.js no repositório do gerenciador de pacotes do nó (npm). O teste mostrou o scanner identificando corretamente 302 das 330 vulnerabilidades. Impulsionados pela taxa de precisão relativamente alta, os pesquisadores executaram o ODGen em cerca de 300,000 pacotes Java em npm. O scanner relatou um total de 2,964 vulnerabilidades em potencial nos pacotes. Os pesquisadores verificaram 264 deles – todos com mais de 1,000 downloads por semana em média – e conseguiram confirmar 180 como vulnerabilidades legítimas. Quarenta e três deles estavam no nível do aplicativo, 122 estavam em pacotes que são importados por outros aplicativos ou código e os 15 restantes estavam presentes em pacotes indiretos.

Uma pluralidade (80) das vulnerabilidades confirmadas que o ODGen detectou foram fluxos de injeção de comando que permitem que os invasores executem código arbitrário no nível do sistema operacional por meio de um aplicativo vulnerável. Trinta eram falhas na travessia do caminho; 24 permitiram adulteração de código e 19 envolveram um tipo específico de ataque de injeção de comando chamado poluição de protótipo.

Carimbo de hora:

Mais de Leitura escura