Padvandeling leeft voort: INCIBE waarschuwt voor de sprong naar de cloud, API’s en AI

Path Traversal is a well-known security issue that has been discussed for decades, yet sigue apareciendo en aplicaciones modernas. El Instituto Nacional de Ciberseguridad (INCIBE) ha dedicado un estudio actualizado a esta vulnerabilidad, clasificada como CWE-22, y advierte que el problema ya no se limita a las aplicaciones web tradicionales: microservicios, contenedores, APIs, plataformas cloud y sistemas de inteligencia artificial también pueden ser susceptibles cuando trabajan con rutas controlables desde el exterior.

Resumen rápido de Path Traversal en 30 segundos

  • Path Traversal permite intentar acceder fuera del directorio autorizado manipulando las rutas que procesa una aplicación.
  • El riesgo afecta configuraciones, credenciales, claves API, logs y otros archivos accesibles para el proceso vulnerable.
  • INCIBE identifica también microservicios, contenedores, cloud, APIs REST y aplicaciones con IA como entornos afectados.
  • Herramientas como SAST, DAST y pentesting son clave para detectar estas vulnerabilidades antes de que lleguen a producción.
  • Canonizar rutas, usar allowlists y aplicar el principio de mínimo privilegio son algunas de las principales medidas defensivas.

El origen del problema es conocido para cualquier desarrollador: recibir un parámetro, utilizarlo para construir una ruta y luego acceder al sistema de archivos sin verificar adecuadamente el destino final. Lo que parece una funcionalidad inocente —como descargar documentos, subir imágenes, importar archivos o seleccionar modelos— puede convertirse en un punto de entrada para ataques.

El análisis de INCIBE-CERT subraya además que Path Traversal figura en la clasificación CWE de MITRE y está relacionado con temas de control de acceso señalados por OWASP. Su persistencia indica que modernizar la arquitectura no eliminará automáticamente errores básicos de programación.

De ../ a leer archivos fuera del directorio autorizado

El ejemplo clásico ayuda a entender el fallo.

Supongamos que una aplicación guarda documentos en /var/www/html/documentos/ y recibe vía HTTP el nombre del archivo que debe devolver. Si concatena directamente esa entrada con la ruta base, el usuario puede controlar una parte de la ruta que después será resuelta por el sistema operativo.

En Unix y Linux, ../ indica el directorio superior. Varias secuencias consecutivas permiten 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 incluir directamente una ruta completa.

El ejemplo típico es usar /etc/passwd para visualizar el problema en Linux. Si el proceso del servidor tiene permisos de lectura y la aplicación no valida correctamente la ruta, una petición manipulada podría hacer que se lea ese fichero en lugar del documento esperado.

Esto no implica que Path Traversal por sí solo conceda acceso root ni permita ejecución remota.

El alcance depende de los permisos del proceso y de las operaciones que pueda realizar. El riesgo aumenta si los archivos expuestos contienen información valiosa para continuar el ataque.

Por ejemplo, un archivo .env puede almacenar secretos de la aplicación, un archivo de configuración puede contener credenciales de bases de datos, los logs pueden revelar datos internos y ciertos archivos pueden exponer usuarios, rutas, servicios o parámetros de funcionamiento.

INCIBE también advierte sobre escenarios posteriores, como acceso a información sensible, escalada de privilegios y, cuando Path Traversal se combina con otras vulnerabilidades, ejecución remota de código (RCE).

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

Cloud, contenedores e IA no eliminan el problema

La parte más reciente del informe muestra que INCIBE amplía la preocupación más allá de las aplicaciones web tradicionales.

El organismo señala específicamente microservicios, contenedores, plataformas cloud, APIs REST y soluciones con capacidades de inteligencia artificial como nuevos entornos donde sigue siendo necesario gestionar correctamente las rutas.

La lógica 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, y un microservicio puede procesar ficheros subidos por otros componentes.

Siempre que una entrada externa influya directa o indirectamente en estas rutas, aparecerá una superficie de ataque que debe ser controlada.

Los contenedores aportan una capa adicional de aislamiento, pero no convierten automáticamente una aplicación vulnerable en segura. Si un proceso comprometido puede leer secretos, volúmenes montados o configuraciones, Path Traversal puede facilitar su acceso.

Por ello, INCIBE recomienda limitar el sistema de archivos a recursos estrictamente necesarios, aplicar el principio de mínimo privilegio y aislar adecuadamente los componentes de arquitecturas distribuidas o basadas en contenedores.

Para arquitecturas cloud native, la idea clave es que la mitigación no debería depender solo del código que procesa la ruta. También se pueden limitar las consecuencias reduciendo el alcance de lo que el proceso puede leer o modificar.

Primero canonizar, luego validar

Un error frecuente es pensar que la protección consiste en detectar cadenas sospechosas, como ../.

Bloquear ../ puede parecer suficiente, pero existen diferentes codificaciones, separadores, normalizaciones o comportamientos propios del framework u sistema operativo que pueden evadir esa protección.

El informe cita que, en pruebas de seguridad, se utilizan codificaciones URL o Unicode para verificar si los filtros pueden ser eludidos. También se analizan caracteres especiales y técnicas históricas de truncamiento contra controles deficientes.

Por ello, una estrategia más robusta es determinar primero qué recurso puede solicitarse y cuál es la ruta real que el sistema usará finalmente.

INCIBE recomienda usar allowlists siempre que sea posible. Si la aplicación debe entregar un conjunto limitado de documentos, es más seguro trabajar con identificadores o nombres previamente autorizados que aceptar cualquier cadena enviada por el cliente.

Las listas de denegación intentan bloquear todo lo que potencialmente sea peligroso, pero la mejor opción suele ser usar listas de permitidos, que sólo aceptan entradas conocidas y legítimas.

Para manejar rutas más flexibles, entra en juego la canonicalización.

El objetivo es transformar la ruta solicitada en su forma definitiva antes de autorizar el acceso. Después, se verifica que ese destino siga dentro del directorio permitido.

Así, una cadena inicialmente parecida a /var/www/html/documentos/ pero que termina resolviéndose como una ubicación externa debería ser rechazada antes de abrir el archivo. INCIBE ilustra esto usando realpath() en PHP, pero el principio se aplica a otros lenguajes y frameworks.

SAST y DAST pueden detectar diferentes caras del mismo fallo

El informe también analiza Path Traversal desde la perspectiva del ciclo de desarrollo de software.

El Análisis Estático de Seguridad (SAST) permite revisar el código sin ejecutarlo, identificando flujos en los que datos del usuario alcanzan operaciones con archivos.

Aquí son relevantes patrones como concatenación directa de rutas y llamadas a funciones de lectura o apertura con argumentos dependientes de entradas externas.

El Análisis Dinámico de Seguridad (DAST) cambia la perspectiva: la aplicación se ejecuta y las pruebas manipulan parámetros en URLs, formularios u otras entradas para evaluar cómo responde el servidor.

Además, INCIBE recomienda realizar pruebas de penetración como una tercera vía para simular ataques reales y verificar la vulnerabilidad en un entorno controlado.

Estas tres técnicas son complementarias: SAST puede detectar problemas en el código antes del despliegue, DAST ayuda a entender el comportamiento en tiempo de ejecución y pentests estudian la interacción con permisos, configuraciones y otras vulnerabilidades relacionadas.

El estudio aporta ejemplos prácticos mediante laboratorios de PortSwigger Web Security Academy y Burp Suite, mostrando cómo detectar y explotar casos donde una función de carga de imágenes devuelva un fichero fuera de la ubicación esperado.

Zip Slip extiende Path Traversal a archivos comprimidos

El problema no necesita que exista un parámetro visible en una URL.

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

Cada elemento del archivo comprimido puede contener información sobre la ruta de destino. Si una aplicación confía en ella sin validarla, una entrada manipulada podría intentar escribir fuera del directorio de destino.

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

La raíz del problema es la misma: no validar adecuadamente las rutas antes de usarlas para acceder al sistema de archivos. La mitigación pasa por resolver y canonizar el destino, comprobar que sigue dentro del directorio autorizado y ejecutar con mínimos privilegios posibles.

Esta vulnerabilidad es especialmente relevante en servicios modernos que manejan paquetes, datasets, plugins, modelos, backups o artefactos generados por otros sistemas.

La última línea de defensa: permisos y monitorización

Un desarrollo seguro debería evitar que se produzca un recorrido de directorios. Sin embargo, limitar los privilegios reduce el impacto en caso de fallo.

INCIBE sugiere configurar el servidor web para restringir accesos a directorios, desactivar funcionalidades innecesarias y limitar el proceso solamente a los recursos que requiere.

También recomienda registrar y monitorizar los accesos a los archivos. Un sistema SIEM puede detectar comportamientos anómalos o intentos reiterados de acceder a rutas no autorizadas.

Path Traversal ejemplifica un problema clásico en la seguridad del software: una arquitectura moderna puede arrastrar vulnerabilidades muy antiguas si los datos externos se interpretan como instrucciones implícitas para acceder al sistema.

Cloud, Kubernetes, contenedores o IA cambian la ubicación y el contenido de los archivos, pero la regla básica sigue siendo la misma: una aplicación no debería confiar en una ruta sólo porque haya llegado mediante una API que parezca legítima.

Preguntas frecuentes

¿Cuál es la diferencia entre Path Traversal relativo y absoluto?

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

¿Puede existir Path Traversal dentro de un contenedor?

Sí. Aunque el aislamiento reduce el impacto, una aplicación vulnerable aún puede acceder a archivos disponibles para su proceso dentro del contenedor o en los recursos montados. Se recomienda combinar validación de rutas, aislamiento y mínimo privilegio.

¿Es suficiente bloquear la cadena ../?

No. Esa protección no es suficiente por sí sola, pues las rutas pueden representarse y procesarse de distintas maneras. Es más seguro usar allowlists, canonizar la ruta y verificar que permanece dentro del directorio permitido.

¿Qué herramientas ayudan a detectar Path Traversal?

INCIBE recomienda análisis SAST, pruebas DAST y pentesting. Además, en sus ejemplos prácticos usan Burp Suite y laboratorios de PortSwigger Web Security Academy para analizar peticiones y respuestas en entornos controlados.

Scroll naar boven