Aikido

Prevención de ataques de día cero para NodeJS con Aikido Zen

Timo KösslerTimo Kössler
|
#
#

TLDR: 

Los ataques de día cero, que explotan vulnerabilidades desconocidas para los proveedores de software, representan una amenaza cibernética significativa. Los firewalls de aplicaciones web (WAF) tradicionales a menudo no logran prevenir estos ataques, lo que requiere parches frecuentes. La protección de aplicaciones en tiempo de ejecución (RASP) adopta un enfoque diferente que no se basa en reglas escritas, sino que monitorea activamente el comportamiento de la aplicación a través de integraciones nativas, lo que conduce a una mayor protección contra los ataques de día cero. 

El objetivo al construir Aikido Zen para NodeJS fue permitir a los desarrolladores adaptar sus aplicaciones y protegerlas por defecto contra clases comunes de ataques de inyección, como inyecciones SQL, inyecciones de shell, path traversal y SSRF. El desarrollador no solo debe estar protegido contra errores en su propio código, sino también contra fallos desconocidos en las librerías que utiliza.

Para evaluar su eficacia, evaluamos Zen frente a una serie de CVEs. Este documento técnico explica el enfoque, califica la eficacia y expone los compromisos y las limitaciones. Para este documento, el equipo identificó 17 vulnerabilidades de día cero, de las cuales 11 fueron bloqueadas por Zen sin conocimiento previo sobre el exploit específico.

Introducción

Los WAF siempre han sido una última esperanza contra los ataques de día cero, ya que dependían de una combinación de suerte y patrones recurrentes para detectarlos durante su ventana de "ataque de día cero" (como se muestra a continuación). Solo después de que las vulnerabilidades se hayan divulgado públicamente (t0) se pueden actualizar las reglas del WAF para detener el nuevo ataque. 

Por Libicki et al. - (en inglés) (2015) The Defender’s Dilemma: Charting a Course Toward Cybersecurity, Rand Corporation ISBN: 978-0-8330-8911-3., Dominio público, https://commons.wikimedia.org/w/index.php?curid=147095222

Un WAF examinará los datos de conexión entrantes (encabezados, cuerpo, ...) antes de que lleguen a su aplicación. Escanea los datos en busca de patrones sospechosos (inyecciones SQL, path traversals) y bloquea o elimina los datos sospechosos. Aunque es eficaz, tiende a generar muchos falsos positivos, como se observa en la investigación de System Weakness.

 Si tiene 10.000 clientes, la mejor solución aún podría bloquear a 56 de ellos. 

Aikido Zen adopta un enfoque fundamentalmente diferente para la seguridad de las aplicaciones web. En lugar de depender únicamente de firmas y patrones conocidos, se centra en comprender y mitigar los comportamientos de ataque a un nivel de aplicación más profundo. 

El enfoque de Aikido Zen

Al centrarse en la monitorización e interceptación de actividades maliciosas en el punto donde intentan acceder o manipular recursos críticos, Aikido Zen es capaz de proporcionar una reducción significativa de falsos positivos al adoptar una estrategia que solo bloquea los ataques cuando interactúan con los sistemas subyacentes. 

Esto se logra implementando un sistema que examina varios tipos de interacciones con el entorno subyacente. Estos incluyen:

  • Interacciones con la base de datos: La monitorización de las llamadas realizadas a las librerías de bases de datos, tanto SQL como NoSQL, permite la detección de consultas no autorizadas, intentos de exfiltración de datos o ataques de inyección. Al analizar el contenido y la estructura de estas llamadas a la base de datos, la actividad maliciosa puede identificarse y bloquearse antes de que cause daños.

  • Llamadas externas: La monitorización de las llamadas externas realizadas a través de HTTP, HTTPS u otros protocolos puede revelar intentos de comunicación con servidores de comando y control, descarga de malware o exfiltración de datos. Al inspeccionar el contenido y el destino de estas llamadas, el tráfico malicioso puede identificarse y bloquearse.

  • Acceso al sistema de archivos y ejecución de Shell: La monitorización del acceso al sistema de archivos puede detectar intentos de leer, escribir o modificar archivos sensibles, o de ejecutar código malicioso. Al analizar las rutas de los archivos, los permisos y las operaciones involucradas en estos accesos, la actividad no autorizada puede identificarse y bloquearse.

  • Intentos de Server-Side Request Forgery (SSRF): Los ataques SSRF pueden ser devastadores, permitiendo a los atacantes aprovechar la confianza de su servidor para acceder a recursos internos o incluso interactuar con servicios externos en su nombre. Al monitorizar de cerca el destino y la naturaleza de las solicitudes internas que se originan en sus servidores, Zen es capaz de bloquear los ataques SSRF.

Al centrarse en estos puntos críticos de interacción con los sistemas subyacentes, el enfoque de Zen permite una detección y bloqueo de ataques más precisos y efectivos, minimizando el número de falsos positivos que pueden interrumpir la actividad legítima. Esta estrategia también proporciona información valiosa sobre la naturaleza y los objetivos de los ataques, que puede utilizarse para mejorar la postura de seguridad general.

Investigación

Como un esfuerzo continuo, el equipo de Aikido Zen realiza pruebas contra vulnerabilidades descubiertas recientemente para medir la eficacia de Aikido Zen. El equipo identifica nuevos ataques de día cero, crea un entorno de prueba reproducible, valida la vulnerabilidad con una inyección de payload exitosa y luego instala Aikido Zen para verificar que el ataque está bloqueado. 

Para este documento, el equipo ha identificado 17 vulnerabilidades, de las cuales 11 fueron bloqueadas por Zen y 6 no lo fueron por una miríada de razones. 

Los resultados de nuestra investigación se pueden encontrar a continuación, y todos los entornos de prueba, exploits y recursos necesarios para su reproducción se han publicado como código abierto.

Bloqueado

ID de CVE Software afectado Tipo
CVE-2014-3744 npm:st Path Traversal
CVE-2015-1369 npm:sequelize SQL Injection
CVE-2019-15597 npm:node-dfs Inyección de Shell
CVE-2020-7687 npm:fast-http Path Traversal
CVE-2020-7765 npm:@firebase/util Contaminación de Prototipos
CVE-2020-8116 npm:dot-prop Contaminación de Prototipos
CVE-2020-26301 npm:ssh2 Inyección de Shell
CVE-2023-31719 npm:@frangoteam/fuxao SQL Injection
CVE-2024-24806 libuv (utilizado por Node.js) SSRF
CVE-2024-39338 npm:axios SSRF
CVE-2024-53900 npm:mongoose Inyección de código JS
CVE-2025-23084 Node.js Recorrido de rutas
CVE-2025-25975 npm:parse-git-config Contaminación de Prototipos
CVE-2025-25977 npm:canvg Contaminación de Prototipos
CVE-2025-27152 npm:axios SSRF
CVE-2025-28269 npm:js-object-utilities Contaminación de Prototipos
CVE-2025-32020 npm:crud-query-parser SQL Injection

No bloqueado

CVE Software afectado Tipo Motivo
CVE-2014-9682 dns-sync Inyección de comandos Utiliza una versión antigua y no compatible de ShellJS. Las versiones más recientes son compatibles con Zen.
CVE-2015-1369 sequelize SQL Injection Problema no detectado inicialmente, corregido en la versión 1.7.0.
CVE-2024-21511 mysql2 Inyección de código Estamos perdiendo el rastro de la entrada del usuario debido a un problema en AsyncContext en Node.js.
CVE-2024-56198 path-sanitizer Path Traversal No podemos rastrear la carga útil peligrosa hasta la entrada del usuario debido a una modificación.
CVE-2025-1302 jsonpath-plus Ejecución remota de código Debido a un mecanismo de seguridad integrado en V8, el comportamiento de eval cambiaría si lo instrumentamos.
Estamos planeando resolver esto con un enfoque diferente en el futuro.
CVE-2024-42352 @nuxt/icon SSRF Paquete aún no compatible.

Aikido investiga y expande continuamente la protección zero-day de Aikido Zen con nuevo soporte de frameworks y algoritmos mejorados.

Un principio fundamental es mantener un impacto mínimo en el rendimiento (≤ 5%) para una protección continua. Si bien esto nos impide implementar de inmediato ciertos algoritmos de protección que requieren muchos recursos (lo que podría aumentar los tiempos de solicitud en 2x-10x), estamos desarrollando activamente enfoques alternativos y eficientes.

Considere Aikido Zen una capa de protección *adicional*, que complementa los componentes reactivos integrales de Aikido, como el escaneo de código, las pruebas de API y otras sólidas capacidades de seguridad.

Conclusión

Aikido Zen es un avance importante en la seguridad de las aplicaciones web. Ofrece una sólida protección contra ataques zero-day sin necesidad de parches constantes, al concentrarse en los comportamientos de ataque y utilizar tecnologías de vanguardia. Aikido Zen ofrece una solución potencial para garantizar la seguridad continua de las aplicaciones web a medida que cambia el panorama de amenazas.

4.7/5

Protege tu software ahora.

Empieza gratis
Sin tarjeta
Solicitar una demo
Sus datos no se compartirán · Acceso de solo lectura · No se requiere tarjeta de crédito

Asegúrate ahora.

Proteja su código, la nube y el entorno de ejecución en un único sistema central.
Encuentre y corrija vulnerabilidades de forma rápida y automática.

No se requiere tarjeta de crédito | Resultados del escaneo en 32 segundos.