Średnia

vLLM: Quadratic Time Complexity in Input Token Processing​ leads to denial of service

  • Ujawniono: 29.04.2025
  • Aktualizacja: 11.10.2026 14:19

Summary

A critical performance vulnerability has been identified in the input preprocessing logic of the multimodal tokenizer. The code dynamically replaces placeholder tokens (e.g., <|audio_|>, <|image_|>) with repeated tokens based on precomputed lengths. Due to ​​inefficient list concatenation operations​​, the algorithm exhibits ​​quadratic time complexity (O(n²))​​, allowing malicious actors to trigger resource exhaustion via specially crafted inputs.

Details

​​Affected Component​​: input_processor_for_phi4mm function. https://github.com/vllm-project/vllm/blob/8cac35ba435906fb7eb07e44fe1a8c26e8744f4e/vllm/model_executor/models/phi4mm.py#L1182-L1197

The code modifies the input_ids list in-place using input_ids = input_ids[:i] + tokens + input_ids[i+1:]. Each concatenation operation copies the entire list, leading to O(n) operations per replacement. For k placeholders expanding to m tokens, total time becomes O(kmn), approximating O(n²) in worst-case scenarios.

PoC

Test data demonstrates exponential time growth:

python
test_cases = [100, 200, 400, 800, 1600, 3200, 6400]
run_times = [0.002, 0.007, 0.028, 0.136, 0.616, 2.707, 11.854]  # seconds

Doubling input size increases runtime by ~4x (consistent with O(n²)).

Impact

​​Denial-of-Service (DoS):​​ An attacker could submit inputs with many placeholders (e.g., 10,000 <|audio_1|> tokens), causing CPU/memory exhaustion. Example: 10,000 placeholders → ~100 million operations.

Remediation Recommendations​

Precompute all placeholder positions and expansion lengths upfront. Replace dynamic list concatenation with a single preallocated array.

python
# Pseudocode for O(n) solution
new_input_ids = []
for token in input_ids:
    if token is placeholder:
        new_input_ids.extend([token] * precomputed_length)
    else:
        new_input_ids.append(token)

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Python (PyPI) vllm >= 0.8.0, < 0.8.5 0.8.5

Odnośniki

Ocena CVSS 6.5/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Słabość (CWE)
CWE-1333
Platforma
Python (PyPI)
Paczka
vllm
Ujawniono
29.04.2025
Aktualizacja
11.10.2026 14:19

Źródła i licencje

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

OSV / GitHub Advisory Database - GHSA-vc6m-hm49-g9qg - CC BY 4.0

Historia podatności: vllm

Wszystkie opisane podatności tej paczki (Python (PyPI)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (94) w archiwum
Wszystkich wpisów
94
Pierwsza → ostatnia
09.2024 10.2026
Bez poprawki
5
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 9
  • Wysoka 23
  • Średnia 47
  • Niska 4
  • Nieoceniona 11

Ujawnienia w latach

  1. 2024: 2
  2. 2025: 30
  3. 2026: 62
Istotność:
  1. Wysoka · 7.5 CVE-2026-54234 >= 0.17.1, < 0.24.0 0.24.0
  2. Wysoka CVE-2026-55514 >= 0.12.0, < 0.24.0 0.24.0
  3. Krytyczna · 9.1 CVE-2026-48746 >= 0.3.0, < 0.22.0 0.22.0
  4. Krytyczna · 9.8 CVE-2026-22778 >= 0.8.3, < 0.14.1 0.14.1
  5. Wysoka · 8.8 CVE-2026-22807 >= 0.10.1, < 0.14.0 0.14.0
  6. Wysoka · 8.8 CVE-2026-56340 >= 0.10.2, < 0.13.0 0.13.0
  7. Wysoka · 6.5 CVE-2025-62372 >= 0.5.5, < 0.11.1 0.11.1
  8. Wysoka · 8.8 CVE-2025-62164 >= 0.10.2, < 0.11.1 0.11.1
  9. Wysoka · 7.5 CVE-2025-59425 < 0.11.0 0.11.0
  10. Wysoka · 8.8 CVE-2025-9141 >= 0.10.0, < 0.10.1.1 0.10.1.1
  11. Wysoka · 7.5 CVE-2025-48956 >= 0.1.0, < 0.10.1.1 0.10.1.1
  12. Krytyczna · 9.8 CVE-2025-47277 >= 0.6.5, < 0.8.5 0.8.5
  13. Wysoka · 8.0 CVE-2025-30165 >= 0.5.2, < 0.10.0 0.10.0
  14. vLLM: Quadratic Time Complexity in Input Token Processing​ leads to denial of service ten wpis
    Średnia · 6.5 CVE-2025-46560 >= 0.8.0, < 0.8.5 0.8.5
  15. Krytyczna · 10.0 CVE-2025-32444 >= 0.6.5, < 0.8.5 0.8.5
  16. Wysoka · 7.5 CVE-2025-30202 >= 0.5.2, < 0.8.5 0.8.5
  17. Krytyczna · 9.8 CVE-2024-9052 <= 0.8.1 brak poprawki
  18. Krytyczna · 9.8 CVE-2024-11041 <= 0.6.2 brak poprawki
  19. Krytyczna · 9.0 CVE-2025-29783 >= 0.6.5, < 0.8.0 0.8.0
  20. Wysoka · 7.5 CVE-2024-8768 < 0.5.5 0.5.5

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.