viernes, 2 de septiembre de 2022

Nuevo escáner de vulnerabilidades de JavaScript descubre más de 100 vulnerabilidades de día cero en las bibliotecas de Node.js

Investigadores de la Universidad Johns Hopkins han desarrollado una herramienta de análisis de código basada en gráficos que puede detectar una amplia gama de vulnerabilidades en los programas de JavaScript.

Llamada ODGen, la herramienta se presentó en el Simposio de seguridad de Usenix de este año y aborda algunos de los desafíos que limitaban el uso de herramientas de seguridad basadas en gráficos para analizar programas de JavaScript.

Los investigadores demostraron la eficacia de ODGen aplicándolo a miles de bibliotecas de Node.js, donde descubrió 180 vulnerabilidades de día cero y recibió 70 CVE. 

Inspirados por el éxito de los métodos gráficos, particularmente CPG, los investigadores de la Universidad Johns Hopkins intentaron aplicarlos a JavaScript. Si bien existen diferentes herramientas para encontrar vulnerabilidades específicas en el código JavaScript, las herramientas basadas en gráficos prometen proporcionar un marco general para detectar todo tipo de vulnerabilidades.

“JavaScript, particularmente Node.js, se está convirtiendo en una comunidad vital con millones de paquetes en estos días”, dijo a The Daily Swig Yinzhi Cao, coautor del artículo y profesor asistente de informática en la Universidad Johns Hopkins. 

“Al mismo tiempo, muchos de estos paquetes de NPM tienen menos mantenimiento y las vulnerabilidades prevalecen en el ecosistema de NPM. Por eso decidimos realizar el estudio para hacer del ecosistema un entorno más seguro”.

Sin embargo, sus hallazgos iniciales mostraron que CPG no es muy efectivo en JavaScript debido a la estructura dinámica del lenguaje, lo que hace que sea mucho más difícil analizar sintácticamente y analizar las relaciones de objetos y las ramas del programa antes de la ejecución.

“CPG no modela relaciones de objetos detalladas, incluidas (i) cadenas de prototipos y (ii) flujos de datos a nivel de objeto. Por lo tanto, es difícil aplicar CPG para detectar vulnerabilidades específicas de JavaScript, como la contaminación de prototipos y la manipulación de propiedades internas. Y es difícil modelar flujos de datos detallados a nivel de objeto en CPG”, dijo Cao.

Gráfico de dependencia de objetos

En su artículo, los investigadores proponen Object Dependence Graph (ODG) como un método novedoso para crear gráficos a partir de código JavaScript. ODG utiliza algunos de los componentes de CPG, como Abstract Syntax Trees (AST), y agrega funciones que son específicas de JavaScript, incluida la dependencia de datos de granularidad fina entre objetos. En consecuencia, los investigadores crearon ODGen, una herramienta para crear y consultar ODG.

“Nuestro ODGen propuesto interpreta de manera abstracta el código JavaScript y genera el llamado gráfico de dependencia de objetos para capturar tales características dinámicas, incluidas las relaciones de objetos, de modo que un enfoque basado en consultas de gráficos pueda obtener fácilmente dicha información y detectar vulnerabilidades”, dijo Cao.

Los investigadores diseñaron ODGen para detectar vulnerabilidades a nivel de aplicaciones y paquetes. Probaron la herramienta en 330 vulnerabilidades documentadas que abarcaban 16 categorías, incluidas secuencias de comandos entre sitios (XSS), falsificación de solicitudes del lado del servidor y del cliente (SSRF/CSRF), inyección de SQL, contaminación de prototipos e inyección de comandos.

La herramienta pudo detectar 13 tipos de vulnerabilidades con una precisión muy alta, descubriendo 302 de lass 330 vulnerabilidades.

Ampliaron su prueba rastreando 300,000 paquetes NPM y aplicando ODGen con consultas gráficas para detectar consultas. ODGen informó casi 3,000 vulnerabilidades de seguridad, de las cuales los investigadores verificaron 264 que pertenecían a bibliotecas con más de 1,000 descargas semanales. Pudieron confirmar e informar 180 vulnerabiliades de seguridad, muchos de lass cuales estaban en bibliotecas que se usan ampliamente en aplicaciones web. De las cuales a 70 se les asignaron CVE.

ODGen muestra cuánto más se necesita hacer para proteger el ecosistema JavaScript de código abierto y cómo la adaptación de las herramientas existentes puede ayudar a desarrollar enfoques holísticos para proteger las bibliotecas de Node.js.

En el futuro, dijo Cao, el equipo podría extender ODGen a otros lenguajes de programación utilizados en aplicaciones web, incluidos PHP y Java.

Ir al Inicio