
Reproducción educativa de la vulnerabilidad de path traversal CVE-2026-14628 con ejemplos de código vulnerable y seguro, explicación de la corrección y demos ejecutables para estudiar CWE-22.
Una demostración mínima y ejecutable de la clase de vulnerabilidad Path Traversal (CWE-22), utilizando el recientemente divulgado CVE-2026-14628 como punto de referencia del mundo real.
CVE-2026-14628 afecta a 'NousResearch/hermes-agent' (< 2026.5.16).
La función extract_media en gateway/platforms/base.py construye una ruta del sistema de archivos a partir del payload entrante del webhook sin validarla, permitiendo que un atacante remoto no autenticado lea archivos fuera del directorio de medios previsto.
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:Nhermes-agent. En su lugar, reproduce el patrón exacto de vulnerabilidad en un ejemplo pequeño y autocontenido para que la falla y su corrección sean fáciles de estudiar y reutilizar como referencia al revisar otro código.| Archivo | Propósito |
|---|---|
vulnerable_example.py | Reproduce la lógica defectuosa: construye una ruta mediante concatenación ingenua de cadenas, sin validación |
secure_example.py | Versión corregida: valida que la ruta absoluta resuelta permanezca dentro del directorio raíz previsto |
python3 vulnerable_example.py
La salida muestra al 'atacante' leyendo exitosamente un archivo (secret_outside_media_root.txt) que se encuentra fuera del directorio previsto media_storage/, usando una entrada como ../secret_outside_media_root.txt.
python3 secure_example.py
La misma entrada maliciosa es rechazada con un claro PathTraversalError.
Dos defensas complementarias se aplican en secure_example.py:
.. o separadores de ruta son rechazados antes de tocar el sistema de archivos (fallo rápido, error claro para llamadores legítimos).candidate_path = os.path.abspath(os.path.join(MEDIA_ROOT, filename))
if not candidate_path.startswith(MEDIA_ROOT + os.sep):
raise PathTraversalError(...)
La travesía de rutas (path traversal) es una de las clases de vulnerabilidad más comunes y evitables en software que maneja subidas de archivos, descargas o cualquier nombre de archivo controlado por el usuario — los manejadores de webhooks, procesadores de medios, visores de registros, motores de plantillas y las API que sirven archivos son objetivos frecuentes. La corrección es barata (un puñado de líneas); el costo de omitirla es la divulgación arbitraria de archivos, y en peores casos (cuando se combina con acceso de escritura) la ejecución remota de código.
Este proyecto es solo con fines educativos. Es una reproducción genérica de una clase de vulnerabilidad conocida, no un exploit funcional contra ningún software específico en vivo o sin parche. No utilices estas técnicas contra sistemas que no poseas o para los que no tengas autorización explícita para probar.