21 ago. 2018

Aplicaciones y servidores Javascript (nodeJS) vulnerables a ataques ReDoS

Las aplicaciones web Javascript y los servidores web son susceptibles a un tipo específico de vulnerabilidad/ataque llamado ReDoS (Denegacion de servicio mediante expresión regular -regex-).

Estas vulnerabilidades tienen lugar cuando un atacante envia trozos largos y complejos de texto a un campo de entrada de texto de un servidor web o app basado en Javascript.

Si el servidor o una librería de la app no esta especificamente diseñada para tratar varios casos, la entrada de texto del atacante puede acabar bloqueando la aplicación o el servidor por algunos minutos o segundos, mientras que el servidor analiza e intenta concordar con el patrón la entrada de texto.

Varios lenguajes de programación y tecnologías de servidores web tienen fallos parecidos con el rendimiento de las operaciones de análisis del patrón y ataques ReDoS, pero algunos son muy exagerados en el caso de JavaScript por el modelo de ejecución de un solo hilo de la mayoría de servidores JavaScript, donde cada petición es procesada por el mismo hilo de ejecución.

Cuando se recibe un ataque ReDoS, esto acaba por colapsar el servidor al completo, en vez de ralentizar una operación en concreto.

Los ataques ReDoS en caso de los servidores JavaScript fueron detallados en una investigación publicada en 2012, pero antes, Javascript y Node.js, en particular, no eran tan populares como lo son ahora en el mundo del desarrollo web, de ahí pues, que se ignorara este problema por media decada.

Otra investigación realizada que fue publicada en 2017 [PDF], revelpo que el 5% del total de las vulnerabilidades encontradas en librerías y aplicaciones de Node.js eran vulnerabilidades ReDoS.
Pero de acuerdo a la investigación presentada en DEFCON la ultima semana, el problema con ReDoS esta cogiendo pulso entre la comunidad de JavaScript por que se dejó desantendida por muchos años.

Cristian-Alexandru Staicu y Michael Pradel, dos académicos de la Universidad Técnica de Darmstadt, Alemania, dicen que han encontrado 25 vulnerabilidades en modulos conocidos de Node.js.

Los dos dijeron que un atacante podría realizar paquetes especiales con exploits y atacar sitios web o servidores que usen cualquiera de estas 25 librerías. El equipo de investigación de TU Darmstadt informó todas las vulnerabilidades a los desarrolladores de módulos respectivos, algunos de los cuales abordaron los problemas. Este repositorio de GitHub contiene exploits de prueba de concepto para probar las bibliotecas vulnerables pero también enlaces a las correcciones apropiadas para los módulos afectados.

Mandar un exploit causaría a cualquiera de estos servidores o webs vulnerables a congelarse durante unos segundos o incluso minutos, mientras el servidor trata de concordar el texto contenido en el exploit con un patron de expresion regular para decidir que hacer con la entrada de texto.

Estas expresiones regulares son  comunes en campos de introducción de texto, como base para prevenir ataques XSS.

Pero cuando un ataque es erroneo, enviando varios paquetes de exploit a la vez contra el mismo servidor, puede causar tiempos prolongados de caída del mismo.

Staicu y Pradel dicen que la razón primaria de estos fallos es la falta de atención en el rendimiento de la comprobación de las expresiones regulares, ya que muchos desarrolladores se centran en que sea lo más acertado posible, dejando grandes huecos en su código que los atacantes pueden explotar utilizando estos ataques.

Los dos tambien dieron un paso adelante con su investigacion: encontraron un metodo de detectar estas vulnerabilidades en sitios web online sin tener que usar un exploit.

Usaron este método para escanear 2846 sitios web populares realizados con Node.js, revelando que 339 eran vulnerables a al menos una de las vulnerabilidades ReDoS.

El equipo de investigacion de la universidad de Darmstadt reporto todas las vulnerabilidades a los desarrolladores de los respectivos módulos, a los cuales les comentaron los respectivos problemas de estas.

Más detalles sobre las vulnerabilidades de ReDoS que afectan a JavaScript están disponibles en un documento titulado "Freezing the Web: A Study of ReDoS Vulnerabilities in JavaScript-based Web Servers". El documento está disponible para su descarga desde aquí o aquí, y también fue presentado en el 27º Simposio de Seguridad Usenix celebrado la semana pasada en Baltimore, EE.UU.

Además de JavaScript, también se sabe que Java se ve afectado por los ataques ReDoS. En 2017, investigadores de la Universidad de Texas en Austin crearon una herramienta llamada Rexploiter [PDF], que utilizaron para encontrar 41 vulnerabilidades ReDoS en 150 programas Java recopilados de GitHub.

Fuente: Bleeping Computer

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!