System równoległego przetwarzania (encoder parallel disaggregation) w SGLang jest podatny na nieuwierzytelnione zdalne wykonanie kodu (RCE) z powodu niebezpiecznej deserializacji danych przy użyciu pickle.loads(). Brak jakiejkolwiek weryfikacji tożsamości sprawia, że atakujący sieciowy może przejąć kontrolę nad systemem bez żadnych uprawnień.
▸ Pokaż oryginał (EN)
SGLang' encoder parallel disaggregation system is vulnerable to unauthenticated remote code execution through the disaggregation module, which deserializes untrusted data using pickle.loads() without authentication.
Moduł disaggregation w SGLang odbiera dane sieciowe i deserializuje je bezpośrednio za pomocą funkcji pickle.loads() bez wcześniejszego uwierzytelnienia nadawcy ani walidacji treści. Biblioteka pickle w Pythonie z założenia pozwala na wykonanie dowolnego kodu podczas deserializacji spreparowanego obiektu. Atakujący może przesłać złośliwy payload pickle do nasłuchującego endpointu, co skutkuje natychmiastowym wykonaniem kodu w kontekście procesu SGLang.
Atakujący bez żadnych uprawnień, działający zdalnie przez sieć, może wykonać dowolny kod na serwerze hostującym SGLang, uzyskując pełną kontrolę nad poufnością, integralnością i dostępnością systemu.
Należy zaktualizować SGLang do wersji v0.5.10 lub nowszej, w której problem został rozwiązany zgodnie z pull requestem #20904. Dodatkowo zaleca się ograniczenie dostępu sieciowego do portów modułu disaggregation wyłącznie do zaufanych hostów (firewall, segmentacja sieci) jako dodatkową warstwę ochrony.
SGLang (Lmsys Sglang) — wersje przed v0.5.10 korzystające z modułu encoder parallel disaggregation (plik encode_receiver.py)
Szczegóły techniczne podatności zostały opublikowane przez Orca Security na ich blogu. Podatny kod znajduje się w pliku python/sglang/srt/disaggregation/encode_receiver.py w repozytorium projektu na GitHub.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLmsys Sglang
APPLmsys0.5.5 – 0.5.9
Powiązane podatności
RCE w SGLang przez niebezpieczną deserializację pickle na gnieździe ROUTER
SGLang: path traversal umożliwiający zapis dowolnych plików bez uwierzytelnienia
RCE przez niebezpieczną deserializację w SGLang (dill.loads)
SGLang: RCE przez niezabezpieczony silnik Jinja2 w endpoincie reranking
RCE w SGLang przez deserializację pickle bez uwierzytelnienia (ZMQ broker)