Una aplicación web aparentemente sencilla puede terminar mostrando archivos internos del servidor si utiliza sin comprobar un nombre de fichero recibido desde una URL, un formulario o una API. Es el problema conocido como Path Traversal o recorrido de directorios, clasificado como CWE-22, una vulnerabilidad antigua que sigue apareciendo en sistemas actuales y sobre la que INCIBE-CERT ha publicado en julio de 2026 un estudio específico con técnicas de detección, ejemplos prácticos y medidas de prevención.
Las claves del Path Traversal en 20 segundos
- El ataque manipula rutas para intentar salir del directorio que la aplicación debería utilizar.
- Puede exponer configuraciones, credenciales, logs, archivos personales y otros datos sensibles.
- INCIBE advierte de que sigue apareciendo en aplicaciones web, APIs, contenedores, cloud y sistemas con IA.
- La defensa pasa por validar, canonicalizar y limitar estrictamente las rutas accesibles.
- Las listas de archivos permitidos ofrecen más protección que intentar bloquear patrones maliciosos.
El Instituto Nacional de Ciberseguridad (INCIBE) considera esta debilidad especialmente relevante porque afecta directamente a la relación entre una aplicación y el sistema de archivos sobre el que se ejecuta. MITRE mantiene Path Traversal como CWE-22, mientras que OWASP lo relaciona con problemas de control de acceso: el atacante intenta que una aplicación procese una ruta diferente de la que su desarrollador esperaba.
El fallo puede parecer elemental, pero sigue siendo fácil de introducir. Una aplicación permite, por ejemplo, descargar documentos almacenados dentro de una carpeta. Si el programa toma directamente el valor enviado por el usuario y lo añade a una ruta base, el usuario puede intentar modificar esa ruta antes de que el sistema operativo la resuelva.
El problema empieza al confiar demasiado en el nombre de un archivo
El estudio de INCIBE utiliza un ejemplo muy reconocible. Una aplicación tiene una carpeta destinada a documentos y construye la ruta que utilizará para abrirlos concatenando el directorio base con el parámetro recibido del navegador.
En condiciones normales, el usuario solicita un archivo permitido y la aplicación accede a él.
El problema aparece si ese parámetro admite componentes de ruta como ../. En sistemas Unix y Linux esa secuencia representa el directorio padre. Repetirla puede hacer que la ruta vaya ascendiendo por la estructura de directorios hasta abandonar la ubicación inicialmente prevista.
La ilustración aportada resume precisamente este recorrido: una aplicación parte de /var/www/html/files/, pero una ruta manipulada puede intentar ascender por html, www y var hasta llegar a la raíz del sistema y, desde allí, solicitar otra ubicación como /etc. El fallo no reside en el sistema de archivos de Linux, sino en que la aplicación ha permitido que una entrada controlada por el usuario participe directamente en la construcción de la ruta.
INCIBE diferencia además entre Path Traversal relativo y absoluto. El primero intenta escapar utilizando referencias a directorios superiores, mientras que el segundo introduce directamente una ruta absoluta hacia otra ubicación del sistema.
OWASP describe el mismo principio: modificar variables que hacen referencia a archivos mediante secuencias de recorrido o rutas absolutas puede permitir acceder a código fuente, configuraciones u otros recursos almacenados fuera del directorio web. El acceso final sigue dependiendo de los permisos que tenga el proceso vulnerable.
Leer un archivo puede ser solo el primer problema
Path Traversal no equivale automáticamente a tomar el control completo de un servidor.
El impacto depende de qué pueda hacer la aplicación, de los permisos del proceso que la ejecuta y de otras vulnerabilidades que puedan encadenarse posteriormente.
En su estudio, INCIBE señala como primer riesgo el acceso no autorizado a archivos sensibles. Una aplicación vulnerable podría exponer configuraciones, credenciales de bases de datos, claves de API guardadas en archivos de entorno, logs u otra información almacenada localmente.
Ese detalle explica por qué una vulnerabilidad inicialmente limitada a lectura puede terminar siendo mucho más seria.
Un fichero de configuración puede contener una contraseña que permita acceder a una base de datos. Un archivo de entorno puede revelar secretos utilizados para comunicarse con servicios externos. Un log puede contener información que facilite otro ataque. Y una ruta vulnerable combinada con una función de carga o inclusión de archivos puede ampliar considerablemente el impacto.
INCIBE contempla entre los escenarios posteriores la escalada de privilegios y, cuando existen condiciones adicionales, la posibilidad de llegar a ejecución remota de código mediante la combinación con otras debilidades. Por tanto, leer un fichero fuera del directorio permitido no debe confundirse con ejecutar código de forma automática, pero tampoco debería tratarse como una filtración irrelevante.
No es una vulnerabilidad limitada a viejas páginas PHP
Uno de los apartados más interesantes del informe de 2026 es que traslada el problema a arquitecturas actuales.
INCIBE señala que Path Traversal puede aparecer también en microservicios, contenedores, plataformas cloud, API REST y soluciones que incorporan inteligencia artificial. Todos ellos continúan trabajando con rutas hacia archivos, modelos, conjuntos de datos, repositorios de artefactos o recursos compartidos.
La tecnología cambia, pero el error de programación puede ser esencialmente el mismo.
Un servicio de IA puede recibir el identificador de un modelo que debe cargar desde disco. Una API puede servir documentos asociados a un cliente. Una aplicación en contenedor puede escribir archivos temporales. Una plataforma de machine learning puede gestionar datasets o checkpoints.
Si alguno de esos nombres termina convirtiéndose en una ruta sin controles suficientes, vuelve a existir una superficie similar.
Los contenedores pueden reducir el alcance si están correctamente aislados y funcionan con permisos mínimos, pero no eliminan el error. Una aplicación vulnerable todavía puede acceder a cualquier fichero que el proceso tenga permitido ver dentro de su entorno.
Por eso INCIBE recomienda también aplicar mínimo privilegio y aislamiento entre componentes, además de validar las propias rutas.
Bloquear simplemente ../ no soluciona el problema
Una de las tentaciones habituales es buscar la cadena ../ y rechazarla.
Puede ser una protección adicional, pero el informe desaconseja depender exclusivamente de listas negras. Existen distintas representaciones y procesos de codificación y decodificación que pueden hacer que una entrada termine teniendo un significado diferente cuando finalmente llega al sistema de archivos.
INCIBE describe pruebas con codificación URL y Unicode precisamente para comprobar si los controles se ejecutan antes o después de la normalización de la entrada. También aborda variantes históricas basadas en caracteres especiales y truncamiento.
La enseñanza defensiva es más importante que cada técnica concreta: la aplicación debería decidir qué está permitido, no intentar imaginar todas las formas posibles de escribir algo prohibido.
De ahí la recomendación de utilizar allowlists o listas de valores permitidos.
Si una función únicamente debe entregar factura.pdf, manual.pdf y contrato.pdf, resulta más seguro aceptar exclusivamente esos identificadores que permitir cualquier texto y posteriormente intentar descubrir si contiene una ruta peligrosa.
INCIBE dedica una sección completa a este enfoque y considera preferibles las listas blancas porque reducen el problema a un conjunto conocido de entradas válidas.
La ruta debe resolverse antes de decidir si es segura
Otro control especialmente importante consiste en trabajar con la ruta canonicalizada.
Una aplicación no debería limitarse a comprobar la cadena que ha recibido. Debe resolverla y verificar cuál sería realmente su destino antes de abrir el archivo.
El informe propone comprobar que la ruta absoluta resultante continúe dentro del directorio permitido. Si una solicitud aparentemente relacionada con /var/www/html/documentos/ termina resolviéndose fuera de esa ubicación, debe rechazarse.
Es una diferencia pequeña en código y enorme en seguridad.
También pueden restringirse los nombres admitidos mediante un formato conocido. Si una función únicamente necesita un identificador alfanumérico y una extensión concreta, no tiene por qué aceptar barras, separadores de directorio u otras cadenas arbitrarias.
La defensa debe completarse en otras capas. INCIBE recomienda limitar los permisos del proceso, restringir qué directorios puede leer el servidor web, mantener registros de acceso y utilizar sistemas de monitorización que permitan detectar solicitudes sospechosas. El documento menciona expresamente la integración con soluciones SIEM, Security Information and Event Management, para identificar patrones y responder ante intentos de explotación.
Zip Slip demuestra que el mismo error puede aparecer fuera de una URL
El informe incluye otra variante interesante: Zip Slip.
El problema surge cuando una aplicación extrae un ZIP, TAR, JAR u otro archivo comprimido y confía directamente en las rutas internas que aparecen en el paquete.
Un archivo manipulado puede contener entradas diseñadas para intentar escribir fuera de la carpeta en la que debería realizarse la extracción. Si el programa concatena esas rutas sin normalizarlas y comprobar su destino, podría terminar sobrescribiendo configuraciones, bibliotecas u otros recursos accesibles para el proceso.
INCIBE señala que el mecanismo no es exactamente igual al de una aplicación web vulnerable, pero el origen es prácticamente idéntico: utilizar una ruta externa sin verificar dónde termina realmente.
Es una buena muestra de por qué Path Traversal continúa apareciendo después de décadas de documentación.
El error no pertenece a un lenguaje de programación concreto ni a una generación determinada de servidores web. Aparece cada vez que software y datos externos se encuentran en una operación sobre el sistema de archivos.
Detectarlo antes de producción sigue siendo la medida más barata
INCIBE propone combinar varias técnicas durante el desarrollo y las auditorías.
El análisis estático de código, conocido como SAST, puede localizar puntos donde una entrada controlada por el usuario termina llegando a funciones que abren o leen archivos. El análisis dinámico, DAST, prueba la aplicación mientras se ejecuta para observar cómo responde ante entradas manipuladas. Las pruebas de penetración permiten estudiar además la vulnerabilidad dentro del comportamiento general de la aplicación.
Ninguna herramienta sustituye a un diseño seguro.
Una aplicación puede disponer de firewall, monitorización, autenticación multifactor y múltiples capas defensivas y seguir exponiendo información si una función aparentemente secundaria de descarga de documentos confía en una ruta manipulable.
Ese es precisamente el valor del estudio publicado por INCIBE-CERT el 23/07/2026: recordar que buena parte de la seguridad de aplicaciones sigue dependiendo de decisiones de desarrollo relativamente básicas.
Path Traversal lleva años documentado, pero sigue apareciendo porque las aplicaciones continúan necesitando leer, escribir, importar, exportar y transformar archivos.
Y con la expansión de APIs, contenedores, servicios cloud y sistemas de IA, el número de lugares donde una ruta externa puede terminar llegando al sistema de archivos no está disminuyendo.
Preguntas frecuentes
¿Qué es una vulnerabilidad Path Traversal?
Es un fallo que permite manipular una ruta utilizada por una aplicación para intentar acceder a archivos o directorios situados fuera de la ubicación prevista. MITRE la clasifica como CWE-22.
¿Path Traversal permite controlar directamente un servidor?
No necesariamente. Puede limitarse a lectura o acceso a determinados archivos según los permisos disponibles, aunque INCIBE advierte de que puede combinarse con otras vulnerabilidades y facilitar ataques posteriores más graves.
¿Cómo se evita Path Traversal?
INCIBE recomienda listas de valores permitidos, canonicalización de rutas, comprobación de que el destino permanece dentro del directorio autorizado, validación del formato, mínimo privilegio, configuración segura del servidor y monitorización.
¿Puede aparecer Path Traversal en aplicaciones cloud o de inteligencia artificial?
Sí. INCIBE señala expresamente microservicios, contenedores, cloud, APIs REST y soluciones con IA como entornos actuales donde siguen utilizándose rutas hacia modelos, datasets, archivos temporales y otros recursos.

