Omisión de autenticación por inyección de cabecera Host en LiteLLM

Se ha identificado un fallo en el análisis de la cabecera Host en el proxy de LiteLLM que podría permitir, bajo condiciones específicas, acceso no autenticado a rutas de gestión protegidas.

Descripción técnica

La capa de autenticación del proxy derivaba la ruta efectiva a partir de request.url.path en el archivo litellm/proxy/auth/auth_utils.py, concretamente en la función get_request_route(). Starlette reconstruye esta ruta a partir de la cabecera Host. Por tanto, una cabecera Host manipulada podría hacer que el mecanismo de autenticación evaluara una ruta diferente a la que FastAPI había despachado realmente.

Esto significa que un atacante no autenticado podría, en determinadas circunstancias, engañar al sistema de control de acceso para que omita la verificación de autenticación en rutas de administración sensibles, accediendo a funcionalidades que deberían estar restringidas.

Impacto

La mayoría de los despliegues no se ven afectados. El bypass queda bloqueado por cualquier capa upstream que valide o normalice la cabecera Host, como por ejemplo:

  • Una CDN o WAF, como Cloudflare
  • Un proxy inverso con listas de permitidos mediante server_name
  • Un balanceador de carga basado en host

Los clientes de LiteLLM Cloud tampoco se ven afectados.

Versiones afectadas y solución

El problema ha sido corregido en la versión 1.84.0. Se recomienda actualizar a 1.84.0 o posterior. No se requiere ningún cambio de configuración adicional.

Mitigaciones alternativas

Si la actualización inmediata no es posible, se recomienda situar el proxy detrás de un componente upstream que valide o normalice la cabecera Host antes de reenviar las peticiones. Las opciones válidas incluyen:

  • Una CDN o WAF
  • Un proxy inverso con listas de permitidos explícitas mediante server_name
  • Un balanceador de carga en la nube con reglas de enrutamiento basadas en host

Alternativamente, se puede restringir el acceso de red al listener del proxy para limitar la superficie de exposición.

Referencias

  • Versión con el parche aplicado: v1.84.0 disponible en el repositorio oficial de BerriAI en GitHub.

Créditos de descubrimiento: Le The Thang (KCSC) y Kim Ngoc Chung (One Mount Group).