Średnia

vLLM: Unauthenticated audio decompression-bomb DoS in /v1/chat/completions

  • Ujawniono: 16.09.2026
  • Aktualizacja: 11.10.2026 15:18

Summary

The audio decode-duration guard (max_duration_s, env VLLM_MAX_AUDIO_DECODE_DURATION_S, default 600s) that protects against audio decompression-bomb DoS is wired into only the speech-to-text path (/v1/audio/transcriptions). The chat audio path (/v1/chat/completions, input_audio content parts) calls the same decoder with no limit, so an unauthenticated client can submit a few-KB compressed audio file that expands to multiple GB of float32 PCM at decode time, OOM-killing the worker. This is a distinct sibling of CVE-2026-5497 (video frame-count bomb, VideoMediaIO.load_base64) and GHSA-pq5c-rjhq-qp7p (image) in the same media subsystem.

Verified against main at HEAD d78650c (2026-06-16); applicable to the latest release v0.23.0.

Details

The guard rejects long audio during decode (before allocation), implemented in vllm/multimodal/media/audio.py:

  • load_audio_pyav — metadata reject (~82-98) and live sample-count reject (~129-136)
  • load_audio_soundfile — frames reject (~165-174)

All are gated on if max_duration_s is not None.

It is passed in exactly one place — the transcription serving layer:

python
# .../speech_to_text/base/serving.py:~170-174
load_audio(buf, sr=..., max_duration_s=self.max_audio_decode_duration_s)
#   self.max_audio_decode_duration_s = envs.VLLM_MAX_AUDIO_DECODE_DURATION_S  (default 600)

The chat path never threads it:

python
# vllm/multimodal/media/audio.py:237-238
def load_bytes(self, data: bytes) -> tuple[npt.NDArray, float]:
    return load_audio(BytesIO(data), sr=None)   # no max_duration_s -> every guard above is skipped

Unauthenticated reachability chain (chat): parse_input_audio (chat_utils.py) -> parse_audio -> connector.fetch_audio -> AudioMediaIO._load_data_url -> load_base64 -> load_bytes -> load_audio(..., sr=None). The connector never passes max_duration_s, and inline data: URLs need no HTTP fetch (so VLLM_AUDIO_FETCH_TIMEOUT does not bound them). The OpenAI-compatible server has no auth by default (auth only when --api-key / VLLM_API_KEY is set).

Impact

Unauthenticated remote denial of service (availability) via memory amplification on a default-no-auth endpoint, on any deployment serving an audio-capable model. Same class and impact as the sibling CVE-2026-5497 (video). CWE-770 / CWE-409.

Fix

A fix was introduced in this MR: https://github.com/vllm-project/vllm/pull/45908

Czego dotyczy

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

PlatformaPaczkaPodatne wersjePoprawka w wersji
Python (PyPI) vllm < 0.24.0 0.24.0

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-770
Platforma
Python (PyPI)
Paczka
vllm
Ujawniono
16.09.2026
Aktualizacja
11.10.2026 15:18

Źródła i licencje

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

OSV / GitHub Advisory Database - GHSA-hcwq-8wjf-3gcr - 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. vLLM: Unauthenticated audio decompression-bomb DoS in /v1/chat/completions ten wpis
    Średnia · 6.5 CVE-2026-57173 < 0.24.0 0.24.0
  2. Wysoka · 7.5 CVE-2026-54234 >= 0.17.1, < 0.24.0 0.24.0
  3. Wysoka CVE-2026-55514 >= 0.12.0, < 0.24.0 0.24.0
  4. Krytyczna · 9.1 CVE-2026-48746 >= 0.3.0, < 0.22.0 0.22.0
  5. Krytyczna · 9.8 CVE-2026-22778 >= 0.8.3, < 0.14.1 0.14.1
  6. Wysoka · 8.8 CVE-2026-22807 >= 0.10.1, < 0.14.0 0.14.0
  7. Wysoka · 8.8 CVE-2026-56340 >= 0.10.2, < 0.13.0 0.13.0
  8. Wysoka · 6.5 CVE-2025-62372 >= 0.5.5, < 0.11.1 0.11.1
  9. Wysoka · 8.8 CVE-2025-62164 >= 0.10.2, < 0.11.1 0.11.1
  10. Wysoka · 7.5 CVE-2025-59425 < 0.11.0 0.11.0
Pokaż więcej (13) Widać 20 z 33

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.