POST /mcp-rest/test/connectionPOST /mcp-rest/test/tools/listAmbos endpoints aceptan una configuración completa de servidor MCP en el cuerpo de la petición JSON, incluyendo los campos Cmd, args y env que el transporte stdio utiliza para lanzar procesos . Cuando un usuario autenticado llama a cualquiera de estos dos endpoints, LiteLLM toma el valor proporcionado en Cmd y lo ejecuta como un subproceso en la máquina host, con los mismos privilegios del sistema operativo que el propio proceso del proxy LiteLLM
.
Originalmente, BerriAI reveló esto como un fallo de ejecución remota de código que requería autenticación: un atacante necesitaba una clave API válida para llegar a los endpoints, y no existía una verificación de rol para restringir quién podía llamarlos. Cualquier usuario con una clave API de proxy, incluso con pocos privilegios, podía ejecutar comandos en el host . Pero la historia no termina aquí.
La segunda vulnerabilidad es la CVE-2026-48710, apodada "BadHost" por los investigadores. Se trata de un fallo en la validación de la cabecera Host en Starlette, el framework ASGI ligero que sirve de base a FastAPI, vLLM y miles de otras aplicaciones web en Python, incluido LiteLLM . Todas las versiones de Starlette desde la 0.8.3 hasta la 1.0.0 están afectadas
.
La causa raíz es una discrepancia entre cómo Starlette enruta las peticiones entrantes y cómo reconstruye la URL para la lógica de la aplicación . La capa de enrutamiento ASGI utiliza la ruta HTTP sin procesar de la petición para decidir qué endpoint la maneja. Pero
request.url —la URL que el middleware y los decoradores de la aplicación ven— se reconstruye concatenando el valor de la cabecera Host sin procesar con la ruta, sin una validación adecuada .
Al inyectar caracteres delimitadores de autoridad-ruta de URI, como ? o #, en la cabecera Host, un atacante puede hacer que request.url.path parezca completamente diferente a la ruta real enrutada . El middleware ve una ruta inofensiva como
/, mientras que el enrutador reenvía la petición al verdadero endpoint vulnerable. Cualquier middleware de autenticación basado en ruta que confíe en request.url.path puede ser burlado de forma trivial .
El decorador de autenticación de LiteLLM verifica request.url.path para decidir si una petición necesita una clave API. El bypass "BadHost" permite a un atacante manipular esa URL para que el middleware de autenticación vea una ruta que no requiere autenticación, mientras que el enrutador ASGI envía simultáneamente la petición a uno de los endpoints vulnerables de inyección de comandos MCP .
Esto elimina la única barrera de control de acceso que se interponía entre el atacante y la ejecución de comandos. Un atacante sin credenciales y sin acceso previo a la red puede enviar una única petición HTTP maliciosa que evade la autenticación por completo y ejecuta comandos del sistema operativo en el host del proxy LiteLLM . Horizon3.ai confirmó que la cadena completa funciona y le asignó una puntuación CVSS combinada de 10.0 —la máxima gravedad— porque logra una ejecución remota de código sin autenticación
.
Una explotación exitosa otorga al atacante la capacidad de ejecutar comandos con los privilegios del proceso proxy de LiteLLM. A partir de ahí, la superficie de amenaza se expande rápidamente:
La inclusión de la CVE-2026-42271 por parte de CISA en el catálogo KEV el 8 de junio de 2026 confirma que la vulnerabilidad no es teórica: los atacantes la están utilizando activamente en este momento . Bajo la Directiva Operativa Vinculante 22-01, todas las agencias del poder ejecutivo civil federal de EE. UU. deben parchear las vulnerabilidades listadas en el KEV dentro de un plazo de corrección asignado. CISA también recomienda encarecidamente a todas las organizaciones, públicas y privadas, que traten las adiciones al KEV como prioridades de parcheo de emergencia
.
La solución para el exploit encadenado requiere actualizaciones en dos frentes, además de varias medidas de defensa en profundidad para abordar la exposición de credenciales:
Host entrantes según la especificación de la URL e ignora las que contienen caracteres no válidos, evitando el truco de confusión de rutas que permite la evasión de autenticación POST /mcp-rest/test/connectionPOST /mcp-rest/test/tools/listHost manipuladas La gravedad CVSS 10.0 combinada, la explotación activa en la naturaleza y la designación KEV de CISA significan que las organizaciones que ejecutan LiteLLM o servicios basados en Starlette deben tratar esto como un evento de emergencia de parcheo y rotación de credenciales. La ventana entre la explotación activa y la exfiltración de credenciales ya está abierta.
Comments
0 comments