CVE-2026-37237
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 43 - wyżej niż 43% wszystkich znanych CVE
Streszczenie
vLLM do wersji 0.17.0 włącznie pozwala zdalnym atakującym na spowodowanie odmowy usługi (DoS) poprzez wyczerpanie pamięci. Funkcje AsyncMediaIO.fetch_audio i AsyncMediaIO.fetch_image w multimodal/inputs.py pobierają adresy URL mediów dostarczone przez użytkownika za pomocą aiohttp i wywołują r.read() bez narzucania maksymalnego rozmiaru odpowiedzi, co pozwala atakującemu wyczerpać pamięć serwera, podając URL do dowolnie dużego pliku.
Ocena ryzyka
Atakujący może doprowadzić do wyczerpania pamięci serwera, co skutkuje niedostępnością usługi dla wszystkich użytkowników. Może to prowadzić do przestojów i strat finansowych.
Rekomendacja
Zaktualizuj vLLM do wersji, która zawiera poprawkę, lub wdróż ograniczenia rozmiaru odpowiedzi dla pobieranych mediów. Dodatkowo rozważ ograniczenie dostępu do funkcji przetwarzających zewnętrzne URL-e.
Inne podatności w vLLM
Zobacz wszystkie- CVE-2026-73558Średnie
W vLLM przed wersją 0.27.0 występuje przepełnienie liczby całkowitej w wyrażeniu blockIdx.x * 2 * d w activation_kernels.cu, co może spowodować, że kernel act_and_mul_kernel zużyje dane wejściowe innego użytkownika w tej samej partii, umożliwiając żądaniu przetwarzanemu w tej samej partii wnioskowania otrzymanie częściowej lub pełnej kopii wyniku wnioskowania innego użytkownika. Problem naprawiono w wersji 0.27.0.
- 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-78684Średnie
vLLM przed wersją 0.27.0 nieprawidłowo klasyfikuje DeepStream jako backend GPU i pomija egzekwowanie limitów pikseli w ścieżce dekodowania. Nieuwierzytelnieni atakujący mogą aktywować DeepStream w czasie żądania, inicjalizując procesowy pulę GPU do dekodowania i przesyłając wideo, które omija kontrolę zasobów, powodując częściową odmowę usługi dla równoczesnych żądań.
- CVE-2026-73560Średnie
vLLM przed wersją 0.26.0 w procesorze MiMoV2OmniMultiModalProcessor przekazuje kontrolowane przez atakującego ciągi obrazów i audio przez _fetch_image, requests.get i Image.open zamiast MediaConnector, omijając ochronę allowed_media_domains i allowed_local_media_path. Umożliwia to żądania po stronie serwera i odczyt dowolnych plików dostępnych dla procesu vLLM.
- CVE-2026-71486Średnie
vLLM to silnik wnioskowania i serwowania dla dużych modeli językowych. Przed wersją 0.26.0, endpointy /v1/completions/derender i /v1/chat/completions/derender akceptują obiekty GenerateResponse dostarczone przez wywołującego, których struktury generate_responses, choices, token_ids, prompt_logprobs, logprobs.content, top_logprobs i routed_experts są przetwarzane przez OnlineDerenderer i tokenizer.decode przed egzekwowaniem limitów max_model_len, max_tokens, max_num_seqs lub rozmiaru odpowiedzi, co pozwala uwierzytelnionemu klientowi API na zużycie nadmiernej ilości CPU i pamięci oraz generowanie zbyt dużych odpowiedzi. Problem naprawiono w wersji 0.26.0.
- CVE-2026-73559Średnie
vLLM to silnik wnioskowania i serwowania dla dużych modeli językowych. Od wersji 0.19.0 do 0.26.0 pole prompt w CompletionRequest w /v1/completions akceptuje nieograniczoną listę stringów lub list intów, a funkcje prompt_to_seq() i OnlineRenderer.preprocess_completion() rozwijają każdy element, co powoduje, że serwer tworzy osobny generator i slot odpowiedzi dla każdego promptu. Uwierzytelniony klient API może wyczerpać CPU, pamięć, zdolności planowania asynchronicznego, sloty żądań silnika i buforowanie odpowiedzi jednym żądaniem. Problem naprawiono w wersji 0.26.0.
- CVE-2026-73557Średnie
W vLLM od wersji 0.20.2rc0 do 0.26.0 funkcja safe_load_prompt_embeds w vllm/renderers/embed_utils.py używa torch.sparse.check_sparse_tensor_invariants, którego globalny stan zapisu, włączenia i przywracania może być wyścigowany przez równoczesne części prompt_embeds przesyłane do POST /v1/chat/completions przez AsyncMultiModalItemTracker.resolve_items, asyncio.gather i domyślny executor, co pozwala na dotarcie nieprawidłowego rzadkiego tensora do tensor.to_dense pomimo zabezpieczenia CVE-2025-62164, gdy włączona jest opcja enable_prompt_embeds. Problem naprawiono w wersji 0.26.0.
- CVE-2026-73556Średnie
W vLLM przed wersją 0.26.0 parametr structured_outputs.regex w vllm/v1/structured_output/backend_lm_format_enforcer.py jest przekazywany do lmformatenforcer.RegexParser bez compile_regex_with_timeout lub walidacji w validate_structured_output_request_lm_format_enforcer, co pozwala nieuwierzytelnionemu żądaniu /v1/completions przeciwko backendowi lm-format-enforcer na zużycie rdzenia CPU i zablokowanie ścieżki silnika strukturalnego wyjścia za pomocą katastrofalnego wyrażenia regularnego. Problem naprawiono w wersji 0.26.0.
- CVE-2026-73555Średnie
W vLLM przed wersją 0.26.0 funkcja validation_exception_handler w vllm/entrypoints/openai/server_utils.py konwertuje obiekty FastAPI RequestValidationError za pomocą str(exc), a sanitize_message w vllm/entrypoints/utils.py nie usuwa ścieżek plików w stylu traceback, co pozwala nieuwierzytelnionym żądaniom z nieprawidłowym JSON do /v1/chat/completions, /v1/completions, /tokenize i /detokenize na ujawnienie nazwy użytkownika systemu, ścieżek domowych i środowisk wirtualnych, wersji Pythona, wewnętrznej struktury pakietów, numerów linii i nazw handlerów endpointów. Problem naprawiono w wersji 0.26.0.
Oryginalny opis (angielski, źródło NVD)
vLLM up to and including 0.17.0 allows remote attackers to cause a Denial of Service via memory exhaustion. The AsyncMediaIO.fetch_audio and AsyncMediaIO.fetch_image functions in multimodal/inputs.py fetch user-supplied media URLs using aiohttp and call r.read() without enforcing a maximum response size, allowing an attacker to exhaust server memory by providing a URL to an arbitrarily large file.

