
Prueba de concepto de exploit para CVE-2026-5027, una vulnerabilidad de path traversal en Langflow que permite la escritura arbitraria de archivos y una potencial ejecución remota de código mediante un nombre de archivo multipart manipulado.
Esta publicación es un artículo de investigación publicado por EQSTLab.
Gracias a Yahia Hamza, quien reportó y analizó esta vulnerabilidad.
★ CVE-2026-5027 Langflow Path Traversal / Arbitrary File Write PoC ★
CVE-2026-5027 : Vulnerabilidad de escritura arbitraria de archivos en Langflow
descripción: Una vulnerabilidad de path traversal en Langflow <= 1.8.4 permite a los atacantes escribir archivos arbitrarios fuera del directorio de carga previsto mediante un filename multipart manipulado enviado al endpoint /api/v2/files. En implementaciones donde el auto-login está habilitado o la autenticación se aplica débilmente de otro modo, este problema puede aprovecharse para lograr la ejecución remota de código escribiendo contenido controlado por el atacante en ubicaciones sensibles del sistema de archivos.
Construya y ejecute el entorno vulnerable usando Docker:
docker build -t cve-2026-5027 .
docker run --rm -it -p 9013:7860 --name cve-2026-5027 cve-2026-5027
# Validación no destructiva (archivo de prueba)
python3 CVE-2026-5027.py -t <HOST_IP>
# Validación con modo autenticado
python3 CVE-2026-5027.py -t <HOST_IP> -u <USERNAME> -p <PASSWORD>
Endpoint vulnerable
POST /api/v2/files
El problema existe porque la funcionalidad de carga confía en el valor filename multipart proporcionado por el cliente. En lugar de generar un nombre de almacenamiento seguro en el lado del servidor o restringir la ruta resuelta a un directorio de carga dedicado, la ruta de código vulnerable permite que secuencias de traversal como ../ influyan en la ruta de destino final.
Como resultado, un atacante puede escapar de la raíz de almacenamiento prevista y forzar a la aplicación a escribir archivos en ubicaciones arbitrarias del sistema de archivos del servidor.
Un flujo de explotación representativo es el siguiente:
/api/v2/files.filename manipulado que contenga secuencias de path traversal.Esto es fundamentalmente un problema de CWE-22: Limitación inadecuada de un nombre de ruta a un directorio restringido.
La falla de seguridad se debe a una sanitización y validación insuficientes de las rutas de archivo controladas por el usuario durante el manejo de la carga. La aplicación acepta el nombre de archivo original del cliente y lo pasa al flujo de trabajo de almacenamiento sin aplicar adecuadamente la normalización y contención de rutas.
Desde un punto de vista defensivo, el patrón peligroso es conceptualmente similar al siguiente:
save_path = base_dir / file.filename
Si file.filename contiene componentes de path traversal como:
../../../../tmp/poc.txt
la ruta final resuelta puede apuntar fuera de base_dir, lo que permite la escritura arbitraria de archivos.
Las vulnerabilidades de escritura arbitraria de archivos suelen ser más graves que los problemas estándar de carga sin restricciones porque el atacante controla no solo el contenido del archivo, sino también la ruta de destino. Dependiendo de los privilegios de ejecución del proceso de Langflow, esto puede permitir:
Atacante --(Obtener token de acceso o abusar del auto-login)--> Langflow /api/v2/files --(Proporcionar filename multipart manipulado con ../)--> Escritura arbitraria de archivos fuera del directorio de carga --(Escribir en ubicación sensible)--> Posible ejecución remota de código
Este repositorio no está destinado a facilitar la explotación no autorizada de instancias de Langflow. El propósito de este proyecto es ayudar a los investigadores de seguridad, defensores y desarrolladores a comprender la vulnerabilidad, validar la exposición en entornos controlados y aplicar mitigaciones efectivas.