Inyección SQL en LiteLLM afecta la verificación de claves API del proxy
LiteLLM es un servidor proxy, también conocido como AI Gateway, diseñado para invocar APIs de modelos LLM en formato OpenAI o en formato nativo. La vulnerabilidad afecta a las versiones comprendidas desde la 1.81.16 hasta antes de la 1.83.7.
Descripción técnica de la vulnerabilidad
Durante el proceso de verificación de claves API del proxy, una consulta a la base de datos construía el texto de la consulta interpolando directamente el valor de la clave proporcionada por el llamante, en lugar de pasarlo como parámetro separado mediante una consulta parametrizada. Esta práctica constituye un patrón clásico de inyección SQL (CWE-89), en el que la entrada del usuario se mezcla con la lógica de la consulta sin el debido saneamiento ni separación.
El vector de ataque es especialmente crítico porque es accesible sin autenticación previa. Un atacante externo puede enviar una cabecera Authorization especialmente manipulada a cualquier ruta de la API LLM expuesta por el proxy, por ejemplo:
POST /chat/completions
Authorization: Bearer <payload_inyeccion_sql>
El payload malicioso alcanza la consulta vulnerable a través del camino de manejo de errores del proxy, lo que amplía la superficie de ataque más allá del flujo normal de autenticación.
Impacto
Un atacante que explote esta vulnerabilidad puede leer datos arbitrarios de la base de datos del proxy. Dependiendo de los privilegios del usuario de base de datos utilizado por LiteLLM y de la configuración del entorno, también podría ser posible modificar datos almacenados. Esto conlleva dos consecuencias principales:
- Acceso no autorizado al proxy y a sus rutas de API LLM.
- Exposición y potencial compromiso de las credenciales gestionadas por el proxy, que pueden incluir claves API de proveedores de modelos como OpenAI u otros servicios integrados.
Dado que LiteLLM actúa como punto centralizado de gestión de credenciales para múltiples APIs de modelos de lenguaje, el impacto de una explotación exitosa puede extenderse a todos los servicios y modelos configurados en la instancia afectada.
Versiones afectadas y solución
La vulnerabilidad está presente en LiteLLM desde la versión 1.81.16 hasta antes de la versión 1.83.7. El problema ha sido corregido en la versión 1.83.7, que introduce el uso de parámetros separados en las consultas a la base de datos, eliminando la posibilidad de inyección.
Se recomienda a todos los operadores de instancias LiteLLM actualizar a la versión 1.83.7 o superior de forma inmediata, especialmente si el proxy está expuesto a redes no confiables o a Internet.
