sistema: OPERATIVO
← volver a todos los hacks
INFRASTRUCTURE CRITICAL NEW

LiteLLM CVE-2026-42271: los endpoints de prueba MCP encadenan hacia RCE no autenticada

Divulgada en abril como una inyección de comandos autenticada, la función de vista previa MCP de LiteLLM se convierte en RCE no autenticada al encadenarla con el bypass BadHost de Starlette — añadida al KEV de CISA el 8 de junio de 2026.

2026-06-10 // 6 min affects: litellm-proxy, starlette, ai-gateways

¿Qué es esto?

El 8 de junio de 2026, CISA añadió CVE-2026-42271 a su catálogo Known Exploited Vulnerabilities, confirmando que una falla de inyección de comandos en LiteLLM — la difundida pasarela de IA de código abierto que agrupa a numerosos proveedores de modelos tras una única API compatible con OpenAI — está siendo explotada en la práctica. Se ordenó a las agencias civiles federales de EE. UU. remediarla antes del 22 de junio de 2026.

Lo destacable de este caso no es el fallo en sí, sino su cadena. CVE-2026-42271 fue divulgada públicamente en abril de 2026 como una inyección de comandos autenticada. El 1 de junio de 2026, los investigadores de Horizon3.ai demostraron que al combinarla con CVE-2026-48710 — el bypass de validación de cabecera Host «BadHost» de Starlette — el requisito de autenticación desaparece por completo, convirtiendo un fallo reservado a administradores en ejecución remota de código no autenticada, con una puntuación CVSS combinada de 10,0. Es la segunda falla de LiteLLM añadida al KEV en un mes, tras la inyección SQL CVE-2026-42208.

Cómo funciona

La superficie vulnerable es la función de vista previa de servidor MCP de LiteLLM. Dos endpoints usados para probar un servidor MCP antes de guardarlo —

POST /mcp-rest/test/connection
POST /mcp-rest/test/tools/list

— aceptan una configuración de servidor completa en el cuerpo de la petición, incluidos los campos command, args y env que usa el transporte stdio. Cuando el endpoint intenta «conectar», lanza el comando suministrado como subproceso en el host del proxy, con los privilegios del proceso LiteLLM. Los endpoints solo estaban protegidos por una clave de API de proxy válida, sin comprobación de rol: cualquier usuario autenticado — incluso con una clave interna de bajo privilegio — podía ejecutar comandos en el host. Es el mismo peligro de diseño el transporte stdio lanza un proceso que tratamos en RCE por transporte stdio MCP.

La cadena cierra la última brecha. BadHost (CVE-2026-48710) es un bypass de validación de cabecera Host en Starlette ≤ 1.0.0, el framework ASGI que LiteLLM usa para gestionar el HTTP. Cuando la autenticación depende de comprobaciones de host u origen, BadHost permite eludirlas — así desaparece la condición «se necesita una clave».

# Solo conceptual — sin payload funcional.
atacante --> [bypass de cabecera Host BadHost]      # CVE-2026-48710: sin auth
         --> POST /mcp-rest/test/connection          # CVE-2026-42271: config stdio
         --> subproceso ejecutado como proxy LiteLLM # comando en el host

Una explotación exitosa permite ejecutar comandos en el host de la pasarela, leer las credenciales de los proveedores de modelos y las claves de API que almacena el proxy, y pivotar hacia la infraestructura de IA conectada.

Por qué importa

Una pasarela de IA es, por diseño, un objetivo de alto valor: concentra las claves de todos los proveedores de modelos que usa una organización y se sitúa en línea sobre gran parte del tráfico interno. Una RCE no autenticada ahí es un motor de robo de credenciales y movimiento lateral, no solo el compromiso de un único host. La exposición se agrava porque el desencadenante es una función de comodidad — previsualizar un servidor MCP antes de guardarlo — que muchos operadores no marcarían como sensible.

Observe la diferencia de estado confirmado entre ambas CVE: CISA confirma la explotación activa de CVE-2026-42271 en sí, pero a la fecha de divulgación no había confirmación pública de que los atacantes usen el bypass BadHost en las mismas campañas. Los defensores deben asumir que la cadena es viable y parchear ambas, en lugar de esperar esa confirmación.

Defensas

  • Parchee ambos componentes. Actualice LiteLLM a la v1.83.7 o posterior (restringe los endpoints de prueba al rol PROXY_ADMIN y actualiza Starlette) y Starlette a la v1.0.1 o posterior.
  • Si no puede parchear de inmediato: bloquee el acceso externo a /mcp-rest/test/connection y /mcp-rest/test/tools/list, restrinja la pasarela a segmentos de red de confianza y rote todas las credenciales que guarda el proxy — asuma que las claves ya están expuestas.
  • No exponga la pasarela a Internet. Un proxy de IA que guarda claves de proveedores debe permanecer tras autenticación y controles de red, no en una IP pública.
  • Cace los IOC publicados por Horizon3: peticiones a los dos endpoints de prueba MCP, valores de cabecera Host inusuales (posible abuso de BadHost) y ejecuciones de subproceso inesperadas desde el proceso LiteLLM.
  • Trate la configuración del transporte stdio como ejecución de código. Toda función que acepte un command/args y lance un subproceso es una primitiva de RCE; protéjala con autorización fuerte, nunca con una mera clave de API.

Estado

ElementoDetalle
CVE-2026-42271Inyección de comandos en los endpoints de prueba MCP de LiteLLM (autenticada, en origen)
CVE-2026-48710Bypass de validación de cabecera Host «BadHost» de Starlette (≤ 1.0.0)
CVSS encadenado10,0 (RCE no autenticada), según Horizon3.ai
AfectadoLiteLLM 1.74.2–1.83.6; Starlette ≤ 1.0.0
Corregido enLiteLLM v1.83.7; Starlette v1.0.1
DivulgaciónCVE-2026-42271: abr. 2026 · BadHost: 26 may. 2026 · cadena: 1 jun. 2026
KEV / plazoAñadida al KEV de CISA el 8 jun. 2026; remediación federal antes del 22 jun. 2026

Sources