CVE-2025-59953
KrytyczneCVSS 9.8Streszczenie
LMDeploy implementuje serwer RPC (AsyncRPCServer w zmq_rpc.py), który w funkcji call_and_response() deserializuje otrzymane wiadomości za pomocą pickles.loads() bez żadnej sanityzacji. Umożliwia to zdalne wykonanie kodu przez ten serwer RPC. Podatność występuje od wersji 0.9.1 do 0.10.2, gdzie została naprawiona.
Ocena ryzyka
Atakujący z dostępem sieciowym do serwera RPC LMDeploy może wykonać dowolny kod w kontekście procesu serwera, co prowadzi do pełnego przejęcia systemu. Ryzyko jest wysokie, ponieważ nie wymaga uwierzytelnienia ani interakcji użytkownika.
Rekomendacja
Zaktualizuj LMDeploy do wersji 0.10.2 lub nowszej. Do czasu aktualizacji ogranicz dostęp sieciowy do portu RPC serwera LMDeploy wyłącznie do zaufanych klientów.
Inne podatności w LMDeploy
Zobacz wszystkie- CVE-2026-76850Krytyczne
LMDeploy deserializuje komunikaty peer-to-peer w trybie disaggregated serving za pomocą pickle. Funkcja handle_zmq_recv w lmdeploy/pytorch/disagg/conn/engine_conn.py odczytuje żądania cache-free przez recv_pyobj(), co deserializuje odebrane bajty przez pickle.loads(), a sprawdzenie isinstance przeciwko DistServeCacheFreeRequest następuje dopiero po zakończeniu deserializacji. Peer dostarczający te bajty jest kontrolowany przez wywołującego: p2p_connect przekazuje remote_engine_endpoint_info.zmq_address z treści żądania do connect() na gnieździe ZMQ PULL, a endpointy POST /distserve/p2p_initialize i /distserve/p2p_connect w lmdeploy/serve/openai/api_server.py nie stosują uwierzytelniania, chyba że serwer jest uruchomiony z api_keys, które domyślnie mają wartość None. Zdalny atakujący może skierować silnik do pobierania z kontrolowanego przez siebie punktu końcowego ZMQ i wykonać dowolny kod w procesie silnika. Wdrożenia, które nie włączają disaggregated serving, nie są dotknięte, ponieważ pętla odbioru jest uruchamiana tylko po zaakceptowaniu połączenia przez backend migracji.
- CVE-2026-63764Wysokie
Podatność SSRF w LMDeploy do wersji 0.14.0 (załatana w commit 03c3130) w funkcji _load_http_url w connection.py. Mechanizm ochrony przed adresami prywatnymi sprawdza tylko oryginalny URL, nie weryfikując hostów po przekierowaniach HTTP.
- CVE-2026-46517Wysokie
LMDeploy to zestaw narzędzi do kompresji, wdrażania i serwowania dużych modeli językowych. W wersjach 0.12.3 i wcześniejszych, zakodowane na stałe "trust_remote_code=True" umożliwia zdalne wykonanie kodu (RCE) w łańcuchu dostaw HF bez zgody użytkownika. Wersja 0.13.0 naprawia ten problem.
- CVE-2026-46432Wysokie
LMDeploy w wersjach do 0.12.3 zawiera zakodowane na stałe ustawienie "trust_remote_code=True" w wielu miejscach ładowania modeli HuggingFace, co umożliwia zdalne wykonanie dowolnego kodu. W chwili publikacji nie są dostępne żadne publiczne łatki.
Oryginalny opis (angielski, źródło NVD)
LMDeploy is a toolkit for compressing, deploying, and serving large language models. Starting in version 0.9.1 and prior to version 0.10.2, the LMdeploy implements an rpc server (AsyncRPCServer in zmq_rpc.py) for supporting the RPC communications. In its core functionality call_and_response(), I found it will directly use the pickles.loads() to deserialize the received messages without any sanitization, hence resulting in a remote code execution vulnerability by this RPC server. Version 0.10.2 contains a patch.

