La nueva herramienta ODGen descubre 180 días cero en las bibliotecas de Node.js Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

La nueva herramienta ODGen descubre 180 días cero en las bibliotecas de Node.js

Investigadores de la Universidad Johns Hopkins descubrieron recientemente 180 vulnerabilidades de día cero sorprendentes en miles de bibliotecas de Node.js utilizando una nueva herramienta de análisis de código que desarrollaron específicamente para este propósito, llamada ODGen.

Desde entonces, setenta de esas fallas han recibido identificadores de vulnerabilidades y exposiciones comunes (CVE). Incluyen fallas de inyección de comandos, vulnerabilidades de recorrido de ruta, problemas de ejecución de código arbitrario y vulnerabilidades de secuencias de comandos entre sitios, algunas de ellas en aplicaciones ampliamente utilizadas.

En un documento publicado en el Simposio de seguridad de Usenix a principios de este mes, los investigadores de Johns Hopkins (Song Li, Mingqing Kang, Jianwei Hou y Yinzhi Cao) describieron ODGen como una mejor alternativa al análisis de código actual y al llamado análisis basado en consultas de gráficos. enfoques para encontrar vulnerabilidades de Node.js.

Los enfoques basados ​​en el análisis de programas han resultado útiles para ayudar a detectar tipos de vulnerabilidades individuales, como fallas de inyección de código en JavaScript. Pero no pueden extenderse fácilmente para detectar todo tipo de vulnerabilidades que puedan estar presentes en la plataforma Node.js, dijeron los investigadores. Del mismo modo, los métodos de análisis de código basados ​​en gráficos, en los que el código se representa primero como un gráfico y luego se consultan los errores de codificación específicos, funcionan bien en entornos como C++ y PHP. Sin embargo, los enfoques basados ​​en gráficos no son tan eficientes en la extracción de vulnerabilidades de JavaScript debido al uso extensivo de características dinámicas del lenguaje de programación, señalaron.

Un enfoque 'novedoso' para encontrar vulnerabilidades de JavaScript

Entonces, los investigadores desarrollaron lo que describieron como un método "novedoso" y mejor llamado gráfico de dependencia de objetos (ODG) que se puede utilizar para detectar vulnerabilidades de Node.js. Implementaron ODGen para generar "ODG" para los programas Node.js para detectar vulnerabilidades, dijeron.

Cao, profesor asistente de informática en la Universidad Johns Hopkins y coautor del informe de investigación, utiliza un par de analogías para describir el análisis de código basado en gráficos en general y su gráfico de dependencia objetivo propuesto. “Si consideramos una vulnerabilidad como un patrón especial, digamos, un nodo verde conectado con un nodo rojo y luego un nodo negro, una herramienta de análisis de código basada en gráficos primero convierte los programas en un gráfico con muchos nodos y bordes”, dice Cao. . “Luego, la herramienta busca dichos patrones en el gráfico para localizar una vulnerabilidad”.

El gráfico de dependencia de objetos que los investigadores han propuesto refina este enfoque al representar los objetos de JavaScript como nodos y agregar características, incluidas las dependencias entre objetos, que son específicas del lenguaje de programación y luego consultar los errores. Cao describe cómo funciona el método usando granos en un puñado de arroz: si todos los granos tienen el mismo aspecto antes de hervirlos pero adquieren dos tonos diferentes después de hervirlos, uno representa los buenos granos y el otro los malos granos, entonces es más fácil detectarlos y eliminarlos. los malos granos. “La interpretación abstracta es algo así como el proceso de ebullición que convierte el arroz, es decir, los programas, en objetos de diferentes colores”, por lo que los errores son más fáciles de detectar, dice Cao.

Una variedad de errores

Para ver si su enfoque funciona, los investigadores primero probaron ODGen contra una muestra de 330 vulnerabilidades previamente reportadas en paquetes de Node.js en el repositorio del administrador de paquetes de nodos (npm). La prueba mostró que el escáner identificó correctamente 302 de las 330 vulnerabilidades. Animados por la tasa de precisión relativamente alta, los investigadores corrieron ODGen contra unos 300,000 2,964 paquetes Java en npm. El escáner informó un total de 264 vulnerabilidades potenciales en los paquetes. Los investigadores revisaron 1,000 de ellos, todos con más de 180 descargas por semana en promedio, y pudieron confirmar que 122 eran vulnerabilidades legítimas. Cuarenta y tres de ellos estaban a nivel de aplicación, 15 estaban en paquetes que son importados por otras aplicaciones o código, y los XNUMX restantes estaban presentes en paquetes indirectos.

Una pluralidad (80) de las vulnerabilidades confirmadas que ODGen detectó fueron flujos de inyección de comandos que permiten a los atacantes ejecutar código arbitrario a nivel del sistema operativo a través de una aplicación vulnerable. Treinta fueron fallas transversales del camino; 24 permitieron la manipulación de código y 19 involucraron un tipo específico de ataque de inyección de comandos llamado contaminación de prototipos.

Sello de tiempo:

Mas de Lectura oscura