W silniku wnioskowania vLLM (wersje od 0.8.3 do przed 0.14.1) błędnie przetworzone żądanie z nieprawidłowym obrazem powoduje wyciek adresu sterty do klienta, skutecznie redukując ochronę ASLR. Podatność może być łączona z przepełnieniem sterty w dekoderze JPEG2000 (OpenCV/FFmpeg), co prowadzi do zdalnego wykonania kodu (RCE).
▸ Pokaż oryginał (EN)
vLLM is an inference and serving engine for large language models (LLMs). From 0.8.3 to before 0.14.1, when an invalid image is sent to vLLM's multimodal endpoint, PIL throws an error. vLLM returns this error to the client, leaking a heap address. With this leak, we reduce ASLR from 4 billion guesses to ~8 guesses. This vulnerability can be chained a heap overflow with JPEG2000 decoder in OpenCV/FFmpeg to achieve remote code execution. This vulnerability is fixed in 0.14.1.
Gdy do multimodalnego endpointu vLLM zostaje przesłany nieprawidłowy obraz, biblioteka PIL zgłasza wyjątek, który vLLM zwraca bezpośrednio do klienta — ujawniając w treści błędu adres obszaru sterty procesu (CWE-532: wyciek wrażliwych danych do logów/odpowiedzi). Znając adres sterty, atakujący redukuje przestrzeń losowości ASLR z około 4 miliardów możliwości do zaledwie około 8. Uzyskana w ten sposób wiedza o układzie pamięci pozwala niezawodnie przeprowadzić drugi etap ataku — exploit wykorzystujący przepełnienie sterty (heap overflow) w dekoderze JPEG2000 dostępnym przez OpenCV lub FFmpeg. Połączenie obu technik umożliwia zdalne wykonanie dowolnego kodu bez jakiegokolwiek uwierzytelnienia.
Nieuwierzytelniony atakujący zdalny może uzyskać pełną kontrolę nad procesem vLLM, co prowadzi do poufności, integralności i dostępności systemu — w tym potencjalnego przejęcia hosta obsługującego modele LLM.
Należy zaktualizować vLLM do wersji 0.14.1 lub nowszej, w której podatność została naprawiona. Szczegóły dostępne w oficjalnych referencjach projektu oraz advisory GHSA-4r2x-xpjr-7cvv.
vLLM w wersjach od 0.8.3 do 0.14.0 (włącznie) — wyłączone są instalacje korzystające z multimodalnych endpointów przyjmujących obrazy.
Podatność wymaga dwuetapowego ataku: najpierw wykorzystania wycieku adresu sterty (do obejścia ASLR), a następnie przepełnienia sterty w dekoderze JPEG2000 (OpenCV/FFmpeg). Oba etapy są inicjowane zdalnie bez uwierzytelnienia. Poprawka dostępna w vLLM 0.14.1.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HVllm
APPVllm0.8.3 – 0.14.1 (bez)
Powiązane podatności
Pominięcie uwierzytelnienia w vLLM — bypass klucza API OpenAI
vLLM: niezamierzone nasłuchiwanie TCPStore na wszystkich interfejsach sieciowych
RCE w vLLM poprzez deserializację pickle na niezabezpieczonych gniazdach ZeroMQ
RCE przez niebezpieczną deserializację w vllm MessageQueue.dequeue()
RCE przez niebezpieczną deserializację w vLLM z Mooncake (ZMQ/TCP)