PoC - CVE-2024-23334 (aiohttp ≤ 3.9.1) - Directory Traversal via follow_symlinks

Resumen

Desarrollé una Proof of Concept (PoC) que demuestra una vulnerabilidad de Directory Traversal en aiohttp cuando la aplicación se configura para servir archivos estáticos con la opción follow_symlinks=True.

La vulnerabilidad permite acceder a archivos arbitrarios del sistema de ficheros fuera del directorio raíz configurado para contenido estático. La PoC fue verificada en un entorno controlado y publicada en Exploit Database (EDB-ID 52474).

Esta entrada documenta el vector afectado, la técnica empleada, el entorno de pruebas y las recomendaciones de mitigación.

Detalle técnico

  • Producto afectado: aiohttp

  • Versión: ≤ 3.9.1

  • CVE: CVE-2024-23334

  • Componente vulnerable: Static file handling (follow_symlinks=True)

  • Ruta afectada: /static/

  • Tipo de vulnerabilidad: Directory Traversal

  • CWE: CWE-22 – Improper Limitation of a Pathname to a Restricted Directory

Descripción de la PoC

La PoC demuestra que, cuando aiohttp está configurado para servir contenido estático con la opción follow_symlinks=True, no se valida correctamente que la ruta solicitada permanezca dentro del directorio raíz definido.

Mediante el uso de secuencias de traversal (../), es posible escapar del directorio estático y acceder a archivos ubicados en otras rutas del sistema.

La PoC está deliberadamente restringida a localhost para evitar su uso indebido y está diseñada exclusivamente para validación en entornos de laboratorio.

Comportamiento demostrado

  • Acceso a archivos arbitrarios fuera del directorio estático configurado.

  • Lectura de ficheros del sistema accesibles por el proceso aiohttp.

  • Confirmación de que la ruta solicitada no es normalizada ni validada correctamente antes de acceder al sistema de archivos.

Entorno de pruebas

  • Plataforma: Linux

  • Aplicación: aiohttp 3.9.1

  • Entorno: Vulhub (Docker)

  • Herramientas empleadas:

    • Docker / Docker Compose

    • curl

    • Script Python (PoC local)

  • Escenario: Entorno local / laboratorio controlado

Impacto

Un atacante remoto podría explotar esta vulnerabilidad para:

  • Leer archivos sensibles del sistema (impacto alto en confidencialidad).

  • Acceder a configuraciones, secretos o credenciales almacenadas en el host.

  • Facilitar ataques posteriores mediante el acceso a información interna de la aplicación.

El impacto es especialmente relevante en entornos contenerizados o servicios expuestos, donde aiohttp puede ejecutarse con permisos elevados.

Mitigaciones recomendadas

  • Actualizar aiohttp a la versión 3.9.2 o superior.

  • Evitar el uso de follow_symlinks=True salvo que sea estrictamente necesario.

  • Validar y normalizar las rutas solicitadas antes de acceder al sistema de archivos.

  • Ejecutar la aplicación con el principio de mínimos privilegios.

  • Colocar la aplicación detrás de un reverse proxy con controles adicionales de rutas.

Referencias

triangle-exclamation

Last updated