Vulnerabilidad SSRF en Open WebUI por falta de revalidación en redirecciones HTTP

Open WebUI es una plataforma de IA autoalojada diseñada para operar completamente sin conexión a internet. En versiones anteriores a la 0.9.5, existe una vulnerabilidad de tipo SSRF (Server-Side Request Forgery) que permite a cualquier usuario autenticado acceder a recursos de red internos mediante el abuso de redirecciones HTTP.

Descripción técnica

La función validate_url(), ubicada en backend/open_webui/retrieval/web/utils.py, únicamente valida la URL inicial enviada por el cliente. Sin embargo, los clientes HTTP utilizados en las capas inferiores del sistema, concretamente requests (síncrono), aiohttp (asíncrono) y WebBaseLoader de LangChain, siguen por defecto las redirecciones HTTP con código de estado 3xx sin revalidar la URL de destino resultante contra la lista de bloqueo de IPs privadas o IPs de metadatos.

Esto significa que un atacante puede enviar una URL pública aparentemente legítima que responda con una redirección HTTP 302 hacia una dirección interna, como por ejemplo:

code
127.0.0.1
169.254.169.254 (endpoint de metadatos de instancias en entornos cloud)
Cualquier rango RFC1918 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)

El servidor seguirá la redirección y devolverá el cuerpo de la respuesta interna al atacante, exponiendo información sensible de la infraestructura.

Endpoints afectados

La vulnerabilidad puede explotarse a través de múltiples rutas de la API:

  • /api/v1/retrieval/process/web: endpoint de procesamiento de contenido web para recuperación de información.
  • /api/v1/images/...: endpoints relacionados con el procesamiento de imágenes.
  • /api/chat/completions: endpoint de completado de chat cuando se incluye una parte de contenido de tipo image_url.
  • Cualquier otra ruta que invoque internamente las funciones auxiliares afectadas.

Impacto

Cualquier usuario autenticado en la plataforma puede explotar esta vulnerabilidad para realizar peticiones desde el servidor hacia recursos de red internos que normalmente no deberían ser accesibles desde el exterior. En entornos cloud, esto incluye el acceso al endpoint de metadatos de la instancia (por ejemplo, http://169.254.169.254), que puede exponer credenciales temporales, tokens de acceso, configuración de la instancia y otros datos críticos de la infraestructura.

En entornos corporativos o de red privada, el atacante podría mapear servicios internos, acceder a APIs internas no protegidas o exfiltrar información sensible de sistemas que confían en la red interna como perímetro de seguridad.

Condiciones de explotación

Para explotar esta vulnerabilidad, el atacante únicamente necesita:

  1. Disponer de una cuenta autenticada en la instancia de Open WebUI.
  2. Controlar o tener acceso a un servidor público que devuelva una respuesta de redirección HTTP 302 hacia la dirección interna objetivo.
  3. Enviar la URL pública a cualquiera de los endpoints afectados.

No se requieren privilegios de administrador ni condiciones especiales adicionales.

Solución

La vulnerabilidad ha sido corregida en la versión 0.9.5 de Open WebUI. Se recomienda actualizar a esta versión o a cualquier versión posterior de forma inmediata. La corrección implica revalidar la URL de destino final tras seguir cualquier redirección HTTP, comprobando que el destino no corresponde a rangos de IP privados, de loopback o de metadatos de instancias cloud.