Vulnerabilidad DoS por agotamiento de memoria en vLLM
vLLM en sus versiones 0.8.0 y posteriores presenta una vulnerabilidad de tipo DoS por agotamiento de memoria (OOM) originada en el procesamiento sin restricciones del número de frames en el método VideoMediaIO.load_base64().
Descripción técnica
Cuando el sistema procesa URLs de datos de tipo video/jpeg, el método divide la cadena base64 utilizando comas como separador para extraer frames JPEG individuales. El problema crítico reside en que este proceso no impone ningún límite sobre la cantidad de frames que puede procesar en una sola operación.
Un atacante puede aprovechar esta ausencia de control construyendo una única petición a la API que contenga miles de frames JPEG codificados en base64 y separados por comas dentro de una URL de datos. Al recibir dicha petición, el servidor decodifica la totalidad de los frames en memoria de forma simultánea, lo que provoca un consumo excesivo de recursos hasta agotar la memoria disponible y colapsar el proceso.
Vector de ataque
Esta vulnerabilidad es accesible a través de la API de completaciones de chat compatible con OpenAI. No requiere ningún tipo de autenticación para ser explotada, lo que amplía significativamente la superficie de ataque y reduce la barrera de entrada para un adversario.
Impacto
El impacto directo es la interrupción total del servicio (DoS). Un atacante no autenticado puede derribar el servidor con una única petición maliciosa, afectando a todos los usuarios y sistemas que dependan de la instancia de vLLM comprometida. En entornos de producción que sirven modelos de lenguaje a gran escala, este tipo de ataque puede tener consecuencias operativas y económicas severas.
Versiones afectadas
Todas las versiones de vLLM desde la 0.8.0 en adelante están afectadas por esta vulnerabilidad.
Recomendaciones
Se recomienda a los equipos de ingeniería y arquitectura revisar las versiones desplegadas de vLLM y aplicar los parches o actualizaciones disponibles en cuanto sean publicados por el proyecto. Como medida de mitigación temporal, se puede considerar la implementación de controles de tamaño máximo de payload a nivel de proxy o gateway antes de que las peticiones lleguen al servidor vLLM, así como la restricción del acceso a la API mediante autenticación y listas de control de acceso.
