CVE-2026-100651
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 24 - wyżej niż 24% wszystkich znanych CVE
Streszczenie
vLLM przed 0.29.0 nie wymusza walidacji długości promptu dekodera na endpointcie disaggregated serving /inference/v1/generate. Gdy żądanie zawiera ładunek 'features' (multimodalny), token_ids dostarczone przez klienta nie są sprawdzane względem model_config.max_model_len, a dla procesorów multimodalnych ze skip_prompt_length_check=True zbyt długi prompt trafia do bufora wejściowego workera o stałej szerokości max_model_len. Klient mogący dosięgnąć endpointu może wywołać awarię workera i odmowę usługi.
Ocena ryzyka
Uwierzytelniony lub nieuwierzytelniony klient z dostępem do endpointu może wywołać awarię workera vLLM, powodując denial of service dla obsługiwanych modeli multimodalnych.
Rekomendacja
Zaktualizuj vLLM do wersji 0.29.0 lub nowszej, która wymusza walidację długości promptu na endpointcie disaggregated serving.
Inne podatności w vLLM
Zobacz wszystkie- CVE-2026-48746Krytyczne
Podatność w vLLM w wersjach od 0.3.0 do 0.22.0 pozwala na obejście uwierzytelniania API OpenAI AuthenticationMiddleware. Atakujący może korzystać z API bez podania skonfigurowanego klucza VLLM_API_KEY lub --api-key.
- CVE-2026-22778Krytyczne
Podatność w vLLM od wersji 0.8.3 do 0.14.0 pozwala na wyciek adresu sterty poprzez wysłanie nieprawidłowego obrazu do endpointu multimodalnego. Wyciek ten redukuje skuteczność ASLR z 4 miliardów do około 8 prób, co ułatwia przeprowadzenie ataku.
- CVE-2026-115918Średnie
vLLM w wersjach od 0.16.0 do 0.32.0 pozwala uwierzytelnionemu użytkownikowi na umieszczenie kontrolowanego przez atakującego szablonu w chat_template_kwargs[chat_template], gdy nie skonfigurowano szablonu serwera. Funkcja ChatParams.get_apply_chat_template_kwargs() zachowuje tę wartość bez egzekwowania trust_request_chat_template, co pozwala obejść politykę zaufania i spowodować wyczerpanie CPU lub pamięci przez renderowanie Jinja.
- CVE-2026-115917Niskie
vLLM przed wersją 0.32.0 konfiguruje Starlette CORSMiddleware z allowed_origins ustawionym domyślnie na wildcard. Złośliwa strona internetowa może za pośrednictwem przeglądarki ofiary uzyskać dostęp do nieuwierzytelnionego serwera vLLM w localhost, sieci wewnętrznej lub VPN i wywoływać punkty końcowe, zużywając zasoby GPU i odczytując odpowiedzi.
- CVE-2026-115916Średnie
vLLM przed wersją 0.32.0 w pliku vllm/tokenizers/hf.py oblicza max_token_id z błędem off-by-one górnej granicy, pozwalając identyfikatorowi tokenu równego rozmiarowi słownika przejść walidację. Przy rozmiarze tensor-parallel równym jeden i słowniku będącym wielokrotnością 64, VocabParallelEmbedding.forward nie maskuje tej wartości przed użyciem w F.embedding, powodując asercję po stronie urządzenia CUDA i zakończenie silnika.
- CVE-2026-115915Wysokie
vLLM przed wersją 0.32.0 przekazuje bajty obrazów kontrolowane przez atakującego do biblioteki Pillow przez Image.open(BytesIO(data)) bez ograniczenia wyboru dekodera, a etykieta MIME nie ogranicza wybranego formatu. Ścieżki żądań obsługujące obrazy przez parse_image() i fetch_image() mogą skierować ładunek EPS do komponentów hosta, co przy podatnym Ghostscript (CVE-2024-29510) pozwala na wykonanie poleceń z uprawnieniami procesu vLLM, a przy Pillow 12.0.0–12.2.0 może wyczerpać wątki ładowania mediów.
- CVE-2026-115914Średnie
vLLM w wersjach od 0.11.1 do 0.32.0 w ścieżce obrazów DeepSeek-OCR, DeepSeek-OCR-2 i Unlimited-OCR pozwala zdalnemu klientowi z dostępem do API zgodnego z OpenAI przesłać prawidłowy obraz, którego znormalizowane piksele sumują się do zera, gdy obraz jest sam w partii enkodera. _parse_and_validate_image_input zwraca brak osadzenia, embed_multimodal propaguje tę wartość, a sanity_check_mm_encoder_outputs wyzwala krytyczną asercję, wyłączając silnik dla wszystkich użytkowników.
- CVE-2026-115913Średnie
vLLM to silnik wnioskowania i serwowania dużych modeli językowych. Przed wersją 0.32.0 enkoder audio Phi-4 w plikach phi4mm_audio.py i phi4mm_utils.py domyślnie używa eager attention, co pozwala zdalnemu klientowi przesłać jeden długi klip audio powodujący materializację pełnych macierzy uwagi i kwadratowe zużycie pamięci GPU, prowadząc do wyczerpania pamięci i zakończenia EngineCore dla wszystkich użytkowników.
- CVE-2026-115912Wysokie
W vLLM przed wersją 0.32.0 uwierzytelniony wywołujący może umieścić sfałszowane wartości adresu pamięci współdzielonej i monotonic_id w publicznym polu multimodal features.kwargs_data. W wdrożeniach scale-out z włączonym buforowaniem pamięci współdzielonej workery ufają tym wartościom i przekazują wybrane przez atakującego bajty do pickle.loads(), co pozwala na dowolne wykonanie kodu w Pythonie.
- CVE-2026-115911Średnie
vLLM to silnik wnioskowania i serwowania dużych modeli językowych. Od wersji 0.19.0 do 0.32.0 uwierzytelnieni klienci mogą dostarczyć szablon czatu, gdy nie skonfigurowano serwerowego --chat-template, albo złośliwe repozytorium modelu może dostarczyć szablon kompilowany i renderowany przez tokenizer.apply_chat_template() bez limitu czasu, rozmiaru wyjścia ani liczby iteracji. Renderowanie odbywa się w ThreadPoolExecutor z jednym workerem, więc nieskończone renderowanie może zablokować /v1/responses i innych użytkowników szablonów, a rozszerzające wyjście może wyczerpać pamięć serwera.
Oryginalny opis (angielski, źródło NVD)
vLLM before 0.29.0 fails to enforce decoder prompt-length validation on the disaggregated serving endpoint /inference/v1/generate. When the request contains a 'features' (multimodal) payload, vllm/entrypoints/serve/disagg/serving.py builds a multimodal EngineInput directly from the caller-supplied token_ids, and GenerateRequest.token_ids (vllm/entrypoints/serve/disagg/protocol.py) is not checked against model_config.max_model_len. For multimodal processors that report skip_prompt_length_check=True (for example Nemotron Parse, Whisper, and FireRedLID), InputProcessor._validate_prompt_len() returns immediately for both encoder and decoder prompts, so an overlong prompt becomes an EngineCoreRequest and reaches the worker input-batch copy into a fixed max_model_len-wide NumPy row. A client able to reach the endpoint on an affected model configuration can therefore submit an overlong token_ids list to trigger a worker failure and denial of service. Fixed in 0.29.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

