
Reconstrucción independiente, validación en laboratorio y PoC para CVE-2026-9198, el RCE no autenticado de Langflow (corregido en 1.10.1)
Reconstrucción independiente, validación en laboratorio y divulgación de exposición para la inyección de código en Langflow (CVE-2026-9198), una ejecución remota de código no autenticada con CVSS 9.8 en implementaciones predeterminadas de Langflow 1.0.0 hasta 1.10.0. Corregida en 1.10.1 y añadida al catálogo de Vulnerabilidades Explotadas Conocidas de CISA el 2026-08-04.
Ventana de investigación: 17-18 de agosto de 2026. Toda la explotación se realizó exclusivamente contra instancias de laboratorio de nuestra propiedad.
Artículo web: https://riftweld.github.io/langflow-cve-2026-9198/
Este no es el informe de descubrimiento original. CVE-2026-9198 fue divulgada públicamente por IBM y CISA; este repositorio documenta una reconstrucción independiente de la causa raíz, una reproducción en laboratorio y una campaña coordinada de notificación a proveedores de hosting.
| Ruta | Descripción |
|---|---|
WRITEUP.md | Artículo completo: causa raíz, la cadena, diferencial de laboratorio, exposición y la divulgación por vía de proveedores |
LAB-VALIDATION.md | Registro de laboratorio: reproducción en 1.10.0 y el diferencial con la versión parcheada 1.10.1 |
poc/poc_takeover.py | PoC de laboratorio de extremo a extremo (solo laboratorio, editar primero el host objetivo) |
poc/poc_transcript.md | Ejecución del PoC capturada contra nuestros contenedores de laboratorio |
recon/shodan_langflow_recon.py | Enumeración pasiva de exposición (API de Shodan, sin sondeo activo) |
notifications/ | Copias de los ocho correos de notificación enviados a los buzones de abuso de los proveedores de hosting (tablas por instancia omitidas) |
GET /api/v1/auto_login en implementaciones predeterminadas (LANGFLOW_AUTO_LOGIN=true)
devolvía un JWT de superusuario de larga duración sin credenciales.POST /api/v1/validate/code ejecutaba las definiciones de funciones enviadas y
devolvía la salida de los comandos en la respuesta HTTP: ejecución de código
completamente no autenticada.langflowai/langflow:1.10.0 en un laboratorio aislado; el control con 1.10.1 cierra
ambas mitades (tokens de corta duración; sumidero de ejecución vacío).Solo laboratorio. Inicie un contenedor Langflow vulnerable y apunte el script hacia él:
docker run -d --name lf-lab -p 127.0.0.1:7860:7860 \
-e LANGFLOW_AUTO_LOGIN=true langflowai/langflow:1.10.0
python3 poc/poc_takeover.py --url http://127.0.0.1:7860 --cmd "id"
Nunca ejecute esto contra sistemas de terceros. Los hallazgos de exposición se gestionaron a través de los canales de abuso de los proveedores de hosting; los registros por objetivo no se publican intencionadamente.
| Fecha | Evento |
|---|---|
| 2026-06-23 | Publicación de Langflow 1.10.1 (corrección) |
| 2026-07-02 | Boletín de IBM |
| 2026-07-06 | Primeras detecciones de sensores en estado salvaje (antes de la publicación) |
| 2026-07-17 | Publicación del CVE |
| 2026-07-29 | Fusión de la plantilla pública de nuclei |
| 2026-08-04 | Inclusión en CISA KEV (remediación antes del 08-07) |
| 2026-08-17/18 | Esta reconstrucción independiente, validación en laboratorio y notificaciones a proveedores |
El código se proporciona tal cual para uso defensivo y educativo.