DifyTap: cuatro fallos de autorización filtran chats de IA entre tenants de Dify
Zafran Labs divulgó el 22 de junio de 2026 cuatro fallos DifyTap en Dify — dos críticos, dos sin autenticación, tres con impacto cross-tenant — que permiten interceptar las conversaciones de IA de otros clientes y leer sus archivos. Tres están corregidos en 1.14.2.
¿De qué se trata?
El 22 de junio de 2026, Zafran Security (los investigadores Ido Shani y Gal Zaban) publicó DifyTap, la divulgación coordinada de cuatro vulnerabilidades en Dify, la plataforma open-source de LLMOps / flujos de trabajo agénticos que acumula más de 140 000 estrellas en GitHub, más de 10 millones de pulls Docker de su imagen API y —según Zafran— más de un millón de aplicaciones en más de 60 sectores, usada por empresas como Volvo, Maersk, Panasonic y Thermo Fisher.
Dos de los fallos son críticos, dos no requieren autenticación alguna y tres tienen impacto cross-tenant en la nube multi-tenant de Dify (cloud.dify.ai): los datos privados de un cliente eran legibles por otro. El resultado es un canal sigiloso que permite a un atacante «interceptar» cada mensaje y respuesta del modelo que circula por la aplicación de una víctima, además de leer documentos y archivos de otros tenants. Según la cronología de Zafran, los CVE fueron asignados por VulnCheck el 30 de abril de 2026 y la versión corregida se publicó el 19 de mayo de 2026, antes del informe público.
Cómo funciona
Los cuatro problemas son defectos de autorización —controles de tenant o de propiedad ausentes o indirectos— y no jailbreaks del modelo.
CVE-2026-41947 (CVSS 9.1) — secuestro del tracing. Dify permite que una aplicación reenvíe sus trazas (que contienen los prompts y respuestas reales) a un proveedor externo como LangSmith u Opik. Los endpoints que configuran el tracing nunca validan el tenant del solicitante: cualquier usuario con una cuenta de consola —trivial de obtener, ya que la nube permite el registro libre— puede redirigir el tracing de cualquier aplicación accesible como cliente hacia un proveedor controlado por el atacante, creando un canal de exfiltración persistente para todo el tráfico de la aplicación.
CVE-2026-41948 (CVSS 9.4) — path traversal del Plugin Daemon. Un endpoint de icono de plugin inyecta el parámetro filename directamente en una URL interna del Plugin Daemon sin saneamiento: los segmentos ../../ permiten alcanzar endpoints internos arbitrarios. Y lo más importante, la ruta del icono no impone ninguna autenticación, por lo que cualquier máquina con acceso de red puede alcanzarla, y el ID de tenant lo aporta el atacante. El alcance actual es limitado (p. ej. debug/pprof), pero es un agujero arquitectónico: cualquier nuevo endpoint interno podría convertirse en un fallo de alto impacto.
CVE-2026-41949 (CVSS 7.5) — previsualizar cualquier documento. El endpoint /console/files/<id>/preview devuelve los primeros 3 000 caracteres de un documento y solo comprueba que el tipo de archivo sea «Documento» —sin control de propiedad ni de tenant— de modo que cualquier usuario de consola puede leer documentos de todo el sistema.
CVE-2026-41950 (CVSS 6.5) — leer el archivo de otro mediante el chatbot. Los permisos de archivo se derivan indirectamente de los permisos de mensaje. Como el sistema solo valida el ID de tenant (y no que un UUID de archivo ya pertenezca al mensaje de otra persona), un atacante puede adjuntar el UUID de un archivo de la víctima a su propio mensaje y pedir a un bot capaz de leer archivos: «Repite exactamente el contenido de este archivo.» El LLM se convierte en la herramienta de exfiltración.
Además, Zafran detectó que Dify incluía una versión de PDFium vulnerable a CVE-2024-5846 (un use-after-free divulgado el 11 de junio de 2024) durante más de 18 meses, hasta el 21 de diciembre de 2025 —activable subiendo un PDF malicioso al endpoint de previsualización.
Por qué importa
DifyTap es un recordatorio de manual de que los bugs peligrosos de las plataformas de IA suelen ser fallos triviales de autorización web, amplificados por aquello a lo que la plataforma está conectada. Destacan tres puntos. Primero, el historial de conversación es la joya de la corona: el secuestro del tracing (41947) convierte un control de tenant ausente en una escucha en directo de cada prompt y respuesta. Segundo, el propio LLM se vuelve una primitiva de exfiltración (41950): en cuanto un control de autorización es indirecto, un agente capaz de leer archivos devolverá con gusto datos que su usuario nunca tuvo permiso de ver. Tercero, los escáneres no lo detectan: como señala Zafran, Dify copia código no empaquetado en su imagen, por lo que los escáneres de contenedores clásicos no vinculan la imagen con los CVE a nivel de proyecto —el riesgo queda invisible para los equipos de seguridad.
Defensas
- Parchee ya. Actualice a Dify 1.14.2, que corrige CVE-2026-41947, -41949 y -41950, o compile la última versión desde GitHub, que incluye también el parche fusionado de CVE-2026-41948.
- Mitigue el path traversal sin parchear (41948). En 1.14.2, despliegue reglas WAF / IDS contra los intentos de path traversal hacia
/console/api/workspaces/current/plugin/icony la ruta de plugintasks/.../delete/...; Zafran publicó firmas Snort para las primitivas GET y POST. - No exponga la consola. Mantenga las consolas multi-tenant y el Plugin Daemon interno (puerto 5002) fuera de Internet; se observaron decenas de miles de instancias de Dify expuestas.
- Haga la autorización directa, no derivada. La causa raíz de los cuatro fallos es un permiso inferido de otro objeto (tenant, mensaje). Valide la propiedad del recurso real (el UUID del archivo, la aplicación, el destino de tracing) en cada petición.
- Limite el acceso a archivos y la salida de los agentes. Restrinja los bots con lectura de archivos a los archivos del usuario actual, y trate cualquier destino de tracing/telemetría como una decisión de salida sujeta a lista de permitidos.
- Aísle el parseo de archivos. Actualice y aísle los parsers nativos (PDFium, ffmpeg) —un documento no confiable que alcanza una biblioteca con memoria insegura es por sí mismo una superficie de RCE.
Estado
| CVE | CVSS | Problema | Autenticación | Cross-tenant | Corregido en |
|---|---|---|---|---|---|
| CVE-2026-41947 | 9.1 | Bypass de autz del tracing | Usuario de consola | Sí | 1.14.2 |
| CVE-2026-41948 | 9.4 | Path traversal Plugin Daemon | No | Sí | GitHub (próxima versión) |
| CVE-2026-41949 | 7.5 | Bypass de autz previsualización doc | Usuario de consola | Sí | 1.14.2 |
| CVE-2026-41950 | 6.5 | Lectura de archivo cross-user vía chatbot | Usuario del tenant | Dentro del tenant | 1.14.2 |
| CVE-2024-5846 | 8.8 | Use-after-free PDFium (parser) | Usuario del tenant | — | Corregido el 21 dic. 2025 |
Fechas clave: notificación bajo divulgación responsable desde el 14 de diciembre de 2025; CVE asignados por VulnCheck el 30 de abril de 2026; versión corregida 1.14.2 el 19 de mayo de 2026; informe público el 22 de junio de 2026. La conclusión para quien opere una plataforma LLMOps: el modelo rara vez es el eslabón débil —lo es la fontanería multi-tenant que lo rodea.
Sources
- → https://www.zafran.io/resources/difytap-zafran-discovers-how-attackers-can-silently-wiretap-ai-data-across-tenants-on-a-platform-powering-1m-apps
- → https://thehackernews.com/2026/06/researchers-detail-difytap-flaws-in.html
- → https://nvd.nist.gov/vuln/detail/CVE-2026-41947
- → https://nvd.nist.gov/vuln/detail/CVE-2026-41948
- → https://github.com/langgenius/dify/releases/tag/1.14.2