Ataque de cruce de rutas
Una de las vulnerabilidades que más se han detectado tiene relación con el tipo de ataque de cruce de rutas, cruce de directorios o también conocido como recorrido de ruta, en el que los atacantes logran obtener acceso no autorizado a directorios y archivos restringidos a través de peticiones HTTP.
Figura 01 – Ejemplo de ataque de cruce de rutas
Los ataques transversales de directorio utilizan software de servidor web para explotar mecanismos de seguridad inadecuados y acceder a directorios y archivos almacenados fuera de la carpeta raíz web. Un atacante que aprovecha una vulnerabilidad de cruce de directorios es capaz de modificar los datos o el comportamiento de la aplicación y, en última instancia, comprometer todo el servidor web.
¿Cómo funciona?
Considere una aplicación web que muestre alguna imagen. Las imágenes se cargan a través de algún HTML como el siguiente:
<img src="/loadImage?filename=218.png">
La función LoadImage toma como parámetro un nombre de archivo y devuelve el contenido del archivo especificado. Por lo general los archivos de imagen se almacenan en dentro del directorio /var/www/images/ de este modo, la aplicación lee desde la siguiente ruta de archivo:
/var/www/images/218.png
Si la aplicación no implementa mecanismos de seguridad contra los ataques transversales de directorios, un atacante puede solicitar la siguiente URL para recuperar un archivo arbitrario del servidor:
https://web-insegura.com/loadImage?filename=../../../etc/passwd
Esto hace que la aplicación lea desde la siguiente ruta de archivo:
/var/www/images/../../../etc/passwd
La secuencia “../”es válida dentro de una ruta de archivo y significa subir un nivel en la estructura del directorio, por lo que el archivo que realmente se lee es:
/etc/passwd
En los sistemas operativos basados en Unix, este es un archivo estándar que contiene detalles de los usuarios que están registrados en el servidor. De esta forma el atacante obtendrá información de los usuarios que administran el servidor y con ello poder alterar o extraer más archivos de configuración.
Principalmente este tipo de ataques busca obtener archivos de configuración de los aplicativos que estén instalados en el servidor como una base de datos o algún entorno del que se logre obtener información valiosa con el cual puedan incrementar sus privilegios dentro del servidor para poder tomar control total del mismo.
¿Cómo solucionarlo?
Un mecanismo de seguridad para prevenir las vulnerabilidades de cruce de rutas es evitar pasar directamente la entrada proporcionada por el usuario a las API del sistema de archivos reescribiendo la petición con el mismo comportamiento, pero de una manera más segura o verificando si accede exclusivamente a archivos los cuales son de la aplicación, generalmente estos archivos se encuentran dentro de /var/www/html/.
Figura 02 – Diagrama bloqueo de peticiones HTTP maliciosas (Runtime Input Validation for Java Web Applications using Static Bytecode Instrumentation, 2016)
Si se considera inevitable pasar la entrada proporcionada por el usuario a las API del sistema de archivos, se deben usar dos capas de defensa juntas para evitar ataques. La aplicación debe validar la entrada del usuario antes de procesarla. Idealmente, la validación debería compararse con una lista blanca de valores permitidos. Si eso no es posible para la funcionalidad requerida, entonces la validación debe verificar que la entrada contenga solo contenido permitido.
Detección de ataques
Actualmente se busca implementar modelos de machine learning para detectar patrones que permitan identificar dentro de las bitácoras de los servidores web, las posibles peticiones que representen un ataque de cruce de rutas mediante el entrenamiento de peticiones normales y maliciosas.
Figura 03 – Diagrama del modelo de Machine Learning para detección de ataques de cruce de rutas (Detecting common web attacks based on supervised machine learning using web logs, 2021)
De esta forma, a través de una mejora continua y el análisis de información se pueden detectar los ataques de cruces de rutas en tiempo real, lo que permitiría mejorar los tiempos de respuesta y sobre todo el correcto actuar ante alguna fuga o alteración de información en el servidor.
Figura 04 – Diagrama de implementación de Machine Learning para detección de ataques de cruce de rutas (Detecting common web attacks based on supervised machine learning using web logs, 2021)
En conclusión, la correcta configuración de los servidores web y sus aplicativos, además de medidas de seguridad adicionales en el procesamiento de las peticiones HTTP que se realicen, permitirá bloquear al atacante y generar inteligencia que permita identificar con mayor facilidad patrones maliciosos, permitiéndonos mantener la integridad, confidencialidad y disponibilidad de la información dentro de del servidor.
Referencias:
- Cho, S., Kim, G., Cho, S. J., Choi, J., Park, M. & Han, S. (2016). Runtime Input Validation for Java Web Applications using Static Bytecode Instrumentation. Proceedings of the International Conference on Research in Adaptive and Convergent Systems. https://doi.org/10.1145/2987386.2987432
- Dau Hoang & Hung Nguyen. (2021). Detecting common web attacks based on supervised machine learning using web logs. En Journal of Theoretical and Applied Information Technology (Vol. 99). http://www.jatit.org/volumes/Vol99No6/9Vol99No6.pdf
- Dontje, K. (2022, 1 diciembre). Vulnerability Spotlight: Lansweeper directory traversal and cross-site scripting vulnerabilities. Cisco Talos Blog. https://blog.talosintelligence.com/vulnerability-spotlight-lansweeper-directory-traversal-and-cross-site-scripting-vulnerabilities/
- Lansweeper : Products and vulnerabilities. (s. f.). https://www.cvedetails.com/vendor/16541/Lansweeper.html
- Veracode. (s. f.). Directory Traversal. https://www.veracode.com/security/directory-traversal
- What is directory traversal, and how to prevent it? | Web Security Academy. (s. f.). https://portswigger.net/web-security/file-path-traversal
Se realizó la explicacion del ataque Cruce de rutas