Descripción general

vLLM es un motor de inferencia y servicio para modelos de lenguaje de gran escala (LLM). En las versiones comprendidas entre la 0.1.0 y anteriores a la 0.19.0, existe una vulnerabilidad de DoS en el servidor API compatible con OpenAI que expone a los sistemas afectados a interrupciones completas del servicio sin necesidad de autenticación previa.

Detalle técnico de la vulnerabilidad

El problema reside en la ausencia de validación de límite superior sobre el parámetro n en los modelos Pydantic ChatCompletionRequest y CompletionRequest. Este parámetro controla el número de copias del objeto de solicitud que se generan internamente antes de que la petición alcance la cola de planificación del motor.

Al no existir ninguna restricción sobre el valor máximo permitido para n, un atacante no autenticado puede enviar una única petición HTTP con un valor astronómicamente elevado para dicho parámetro. El efecto inmediato es doble:

  • Bloqueo del event loop de asyncio: el procesamiento del valor desencadena una operación síncrona que ocupa completamente el bucle de eventos de Python, impidiendo que cualquier otra corrutina o tarea pueda ejecutarse. Esto paraliza por completo la capacidad de respuesta del servidor.

  • Crash por agotamiento de memoria (Out-Of-Memory): la asignación de millones de copias del objeto de solicitud en el heap provoca el agotamiento de la memoria disponible antes de que la petición llegue siquiera al planificador interno, causando la terminación abrupta del proceso.

El vector de ataque es especialmente crítico porque requiere únicamente una sola petición HTTP maliciosa, no necesita credenciales y produce un impacto inmediato y total sobre la disponibilidad del servicio.

Componentes afectados

  • Servidor API de vLLM compatible con OpenAI
  • Modelos Pydantic ChatCompletionRequest y CompletionRequest
  • Versiones de vLLM desde la 0.1.0 hasta la 0.18.x (inclusive)

Impacto

La explotación exitosa de esta vulnerabilidad provoca la indisponibilidad completa del servidor de inferencia. En entornos de producción donde vLLM actúa como backend de inferencia para aplicaciones basadas en LLM, esto implica la interrupción total del servicio para todos los usuarios y sistemas dependientes. Dado que el ataque puede ejecutarse con una única petición no autenticada, el umbral de explotación es extremadamente bajo.

Solución

La vulnerabilidad ha sido corregida en la versión 0.19.0 de vLLM, que introduce la validación del límite superior sobre el parámetro n en los modelos de solicitud afectados. Se recomienda actualizar a esta versión o superior de forma inmediata.

Recomendaciones adicionales

Mientras se aplica el parche, se recomienda considerar las siguientes medidas de mitigación en entornos expuestos:

  • Restringir el acceso al servidor API de vLLM mediante autenticación a nivel de proxy o gateway.
  • Aplicar reglas de validación de entrada en capas intermedias (API gateway, WAF) que limiten los valores numéricos de los parámetros de solicitud.
  • Monitorizar el consumo de memoria y el estado del event loop para detectar intentos de explotación.
  • Limitar la exposición pública del endpoint de inferencia a redes de confianza.