Path Traversal sigue vivo: INCIBE alerta de su salto a cloud, APIs e IA

Path Traversal lleva décadas en los manuales de seguridad, pero continúa apareciendo en aplicaciones modernas. El Instituto Nacional de Ciberseguridad (INCIBE) ha dedicado un nuevo estudio a esta vulnerabilidad, clasificada como CWE-22, y advierte de que el problema ya no debe asociarse únicamente con aplicaciones web tradicionales: microservicios, contenedores, APIs, plataformas cloud y sistemas de inteligencia artificial también pueden quedar expuestos cuando trabajan con rutas controlables desde el exterior.

Las claves de Path Traversal en 30 segundos

  • Path Traversal permite intentar salir del directorio autorizado manipulando las rutas que procesa una aplicación.
  • El riesgo alcanza configuraciones, credenciales, claves API, logs y otros archivos accesibles para el proceso vulnerable.
  • INCIBE sitúa también el problema en microservicios, contenedores, cloud, APIs REST y aplicaciones con IA.
  • SAST, DAST y pentesting permiten buscar estos fallos antes de que lleguen a producción.
  • Canonicalizar rutas, usar allowlists y aplicar mínimo privilegio son algunas de las principales defensas.

La raíz del problema resulta conocida para cualquier desarrollador: recibir un parámetro, utilizarlo para construir una ruta y acceder posteriormente al sistema de archivos sin comprobar adecuadamente cuál es el destino final. Una funcionalidad aparentemente inocente para descargar documentos, cargar imágenes, importar archivos o seleccionar un modelo puede convertirse así en un punto de entrada.

El estudio de INCIBE-CERT recuerda además que Path Traversal figura en la clasificación CWE de MITRE y está relacionado con los problemas de control de acceso recogidos por OWASP. Su persistencia demuestra que modernizar la arquitectura no elimina automáticamente errores básicos de programación.

De ../ a la lectura de archivos fuera del directorio permitido

El ejemplo clásico sigue siendo útil para entender el fallo.

Supóngase que una aplicación almacena documentos en /var/www/html/documentos/ y recibe mediante HTTP el nombre del fichero que debe entregar. Si el programa concatena directamente ambas cadenas, el usuario pasa a controlar una parte de la ruta que posteriormente resolverá el sistema operativo.

En Unix y Linux, ../ representa el directorio superior. Varias secuencias consecutivas pueden hacer que una ruta relativa abandone la carpeta prevista. INCIBE denomina esta modalidad Path Traversal relativo (CWE-23). También existe Path Traversal absoluto (CWE-36), donde se intenta introducir directamente una ruta completa.

El ejemplo de /etc/passwd suele utilizarse porque permite visualizar fácilmente el problema en Linux. Si el proceso del servidor tiene permisos de lectura y la aplicación no controla correctamente la ruta, una petición manipulada podría conseguir que el programa lea ese fichero en lugar del documento previsto.

Eso no significa que Path Traversal proporcione por sí mismo acceso root o ejecución remota.

Su alcance depende de los permisos del proceso y de las operaciones disponibles. El riesgo aumenta cuando los archivos expuestos contienen información aprovechable para continuar el ataque.

Un .env, por ejemplo, puede almacenar secretos de una aplicación. Un archivo de configuración podría contener credenciales de bases de datos. Los logs pueden revelar información interna y determinados archivos pueden descubrir usuarios, rutas, servicios o parámetros de funcionamiento.

INCIBE contempla por ello escenarios posteriores como acceso a información sensible, escalada de privilegios y, cuando Path Traversal se combina con otras debilidades, ejecución remota de código (RCE).

La diferencia es importante desde el punto de vista técnico: Path Traversal es el mecanismo que permite romper la frontera prevista del sistema de archivos; el impacto posterior depende de qué exista al otro lado y de qué permisos tenga la aplicación.

Cloud, contenedores e IA no eliminan el problema

La parte más actual del informe aparece cuando INCIBE abandona el escenario de una aplicación web convencional.

El organismo señala expresamente microservicios, contenedores, plataformas cloud, APIs REST y soluciones con capacidades de inteligencia artificial como nuevos entornos donde continúa siendo necesario gestionar correctamente las rutas.

La razón es sencilla. Aunque cambie la arquitectura, las aplicaciones siguen utilizando sistemas de archivos.

Un servicio de machine learning puede necesitar localizar modelos y datasets. Una plataforma de IA puede gestionar checkpoints, archivos temporales o repositorios de artefactos. Una API puede recuperar documentos almacenados localmente. Un microservicio puede procesar ficheros subidos por otro componente.

Siempre que una entrada externa influya directa o indirectamente en una de esas rutas aparece una superficie que debe controlarse.

Los contenedores introducen una capa adicional de aislamiento, pero tampoco convierten una aplicación vulnerable en segura. Si un proceso comprometido puede leer determinados secretos, volúmenes montados o configuraciones dentro de su entorno, Path Traversal puede permitir acceder a ellos.

Por eso INCIBE incluye entre sus recomendaciones restringir el sistema de archivos a los recursos estrictamente necesarios, aplicar mínimo privilegio y aislar correctamente los componentes de arquitecturas distribuidas o basadas en contenedores.

Es una idea relevante para arquitecturas cloud native: la mitigación no debería depender únicamente del código que procesa la ruta. Las consecuencias también pueden limitarse reduciendo aquello que el proceso tiene capacidad de leer o modificar.

Canonicalizar primero, validar después

Uno de los errores defensivos consiste en convertir la protección en una competición por detectar cadenas sospechosas.

Bloquear ../ puede parecer suficiente hasta que entran en juego diferentes codificaciones, separadores, normalizaciones o comportamientos del framework y del sistema operativo.

El informe describe, dentro de las pruebas de seguridad, el empleo de codificaciones URL o Unicode para comprobar si los filtros pueden ser evitados. También analiza caracteres especiales y técnicas históricas de truncamiento utilizadas contra controles deficientes.

Por eso una estrategia más sólida consiste en determinar primero qué recurso puede solicitarse y cuál es la ruta real que finalmente utilizará el sistema.

INCIBE recomienda el uso de allowlists siempre que sea posible. Si una aplicación debe entregar un conjunto concreto de documentos, puede resultar mucho más seguro trabajar con identificadores o nombres previamente autorizados que aceptar cualquier cadena enviada por el cliente.

Las listas de denegación intentan reconocer todo aquello que podría ser peligroso. Las listas de permitidos invierten la lógica: solo admiten entradas que la aplicación conoce de antemano.

Cuando la aplicación necesita trabajar con rutas más flexibles entra en juego la canonicalización.

El objetivo es convertir la ruta solicitada en su representación definitiva antes de autorizar el acceso. Posteriormente puede comprobarse que ese destino continúa situado dentro del directorio permitido.

Así, una cadena que aparentemente parte de /var/www/html/documentos/ pero termina resolviéndose como una ubicación externa debería ser rechazada antes de que se abra el archivo. INCIBE muestra este planteamiento mediante realpath() en PHP, aunque el principio es aplicable a otros lenguajes y frameworks.

SAST y DAST pueden encontrar dos caras distintas del mismo fallo

El informe también plantea Path Traversal desde el ciclo de desarrollo.

El análisis estático de seguridad de aplicaciones (SAST) permite revisar el código sin ejecutarlo y localizar flujos donde datos procedentes del usuario terminan alcanzando operaciones sobre archivos.

Aquí interesan especialmente patrones como la concatenación directa de rutas y llamadas a funciones de lectura o apertura cuyos argumentos dependen de entradas externas.

El análisis dinámico de seguridad de aplicaciones (DAST) cambia la perspectiva. La aplicación se ejecuta y las pruebas manipulan parámetros de URL, formularios u otras entradas para comprobar cómo responde realmente el servidor.

INCIBE añade las pruebas de penetración como tercera vía para evaluar el fallo dentro de un escenario más próximo a un ataque real.

Las tres aproximaciones son complementarias. El SAST puede descubrir código potencialmente peligroso incluso antes del despliegue. El DAST permite comprobar el comportamiento observable de una aplicación en funcionamiento. El pentesting puede estudiar cómo ese fallo interactúa con permisos, configuraciones y otras vulnerabilidades.

El estudio utiliza además laboratorios de PortSwigger Web Security Academy y Burp Suite para mostrar casos prácticos de detección y explotación en un entorno controlado. En uno de ellos se analiza cómo una función utilizada para cargar imágenes termina devolviendo un fichero situado fuera de la ubicación esperada.

Zip Slip lleva Path Traversal al interior de los archivos comprimidos

El problema tampoco requiere necesariamente un parámetro visible en una URL.

INCIBE incluye Zip Slip, una variante que aparece durante la extracción de ZIP, TAR, JAR y otros archivos comprimidos.

Cada elemento incluido en un archivo comprimido puede contener información sobre la ruta en la que debe extraerse. Si una aplicación confía en ella y no comprueba el destino final, una entrada manipulada podría intentar escribir fuera del directorio de extracción.

Dependiendo de los permisos disponibles, eso podría afectar a configuraciones, bibliotecas, ejecutables u otros recursos.

Aunque el vector es diferente, INCIBE identifica el mismo error subyacente: no validar adecuadamente una ruta antes de utilizarla para acceder al sistema de archivos. La mitigación vuelve a pasar por resolver y canonicalizar el destino, comprobar que permanece dentro de la ubicación autorizada y ejecutar el proceso con los mínimos privilegios posibles.

Esta variante resulta especialmente relevante en servicios modernos que reciben paquetes, datasets, plugins, modelos, backups o artefactos generados por otros sistemas.

La última barrera está en los permisos y la monitorización

Un desarrollo seguro debería evitar que el recorrido de directorios llegue a producirse. Aun así, limitar los privilegios reduce lo que puede ocurrir cuando falla esa primera barrera.

INCIBE recomienda configurar el servidor web para restringir directorios, desactivar funcionalidades innecesarias y limitar el acceso del proceso únicamente a los recursos que realmente necesita.

El organismo también plantea registrar y monitorizar los accesos a archivos. Un sistema SIEM (Security Information and Event Management) puede ayudar a localizar comportamientos anómalos o intentos repetidos de acceder a rutas inesperadas.

Path Traversal ilustra así un problema habitual de la seguridad del software: una arquitectura moderna puede seguir heredando vulnerabilidades muy antiguas si los datos externos terminan convirtiéndose en instrucciones implícitas para acceder al sistema.

Cloud, Kubernetes, contenedores o inteligencia artificial cambian dónde se encuentran los archivos y qué contienen. No cambian la regla básica: una aplicación no debería confiar en una ruta simplemente porque haya llegado mediante una API aparentemente legítima.

Preguntas frecuentes

¿Qué diferencia existe entre Path Traversal relativo y absoluto?

El relativo utiliza referencias a directorios superiores para intentar escapar de la ubicación prevista. El absoluto intenta proporcionar directamente una ruta completa hacia otro recurso del sistema. INCIBE los relaciona respectivamente con CWE-23 y CWE-36.

¿Puede existir Path Traversal dentro de un contenedor?

Sí. El aislamiento puede limitar el impacto, pero una aplicación vulnerable todavía podría acceder a archivos que estén disponibles para su proceso dentro del contenedor o de los recursos que tenga montados. INCIBE recomienda combinar validación de rutas, aislamiento y mínimo privilegio.

¿Es suficiente bloquear la cadena ../?

No es una defensa suficiente por sí sola. Las rutas pueden representarse y procesarse de diferentes maneras, por lo que resulta más seguro utilizar allowlists, canonicalizar el destino y comprobar que permanece dentro del directorio autorizado.

¿Qué herramientas ayudan a detectar Path Traversal?

INCIBE contempla análisis SAST, pruebas DAST y pentesting. En los ejemplos prácticos del estudio utiliza además Burp Suite y laboratorios de PortSwigger Web Security Academy para analizar peticiones y respuestas en un entorno controlado.

encuentra artículos

newsletter

Recibe toda la actualidad del sector tech y cloud en tu email de la mano de RevistaCloud.com.

Suscripción boletín

LO ÚLTIMO