SGLang, środowisko uruchomieniowe do generowania multimodalnego, domyślnie nasłuchuje na wszystkich interfejsach sieciowych (0.0.0.0) i wykonuje deserializację danych przychodzących przez pickle.loads(), co umożliwia zdalne wykonanie kodu bez uwierzytelnienia. Podatność jest krytyczna, ponieważ wystarczy sieciowy dostęp do eksponowanego gniazda ROUTER, aby przejąć kontrolę nad systemem.
▸ Pokaż oryginał (EN)
SGLangs multimodal generation runtime scheduler's ROUTER socket binds to 0.0.0.0 by default and contains a sink that calls pickle.loads() on incoming messages, enabling RCE when exposed to the internet.
Harmonogram zadań (scheduler) modułu multimodalnego w SGLang wiąże gniazdo ROUTER do adresu 0.0.0.0, czyli akceptuje połączenia ze wszystkich interfejsów sieciowych. Dane przesyłane do tego gniazda są przekazywane bezpośrednio do funkcji pickle.loads(), która deserializuje obiekt Pythona bez jakiejkolwiek walidacji lub uwierzytelnienia nadawcy. Atakujący może spreparować złośliwy payload pickle i przesłać go do otwartego gniazda, wymuszając wykonanie dowolnego kodu w kontekście procesu SGLang.
Atakujący uzyskuje możliwość zdalnego wykonania dowolnego kodu (RCE) na serwerze bez konieczności posiadania jakichkolwiek uprawnień czy interakcji ze strony użytkownika, co może prowadzić do pełnego przejęcia systemu, kradzieży danych oraz naruszenia poufności, integralności i dostępności.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Do czasu aktualizacji zaleca się ograniczenie dostępu do gniazda ROUTER za pomocą firewalla lub reguł sieciowych tak, aby port nie był dostępny z niezaufanych sieci ani z publicznego internetu. Nie należy wystawiać SGLang bezpośrednio na internet bez warstwy uwierzytelniania.
Produkt Lmsys SGLang — wersje wskazane w referencjach producenta; podatny jest komponent multimodalnego harmonogramu generowania (multimodal generation runtime scheduler) z domyślną konfiguracją gniazda ROUTER.
Podatność została opisana przez badaczy na blogu antiproof.ai w artykule dotyczącym trzech odrębnych podatności klasy RCE w SGLang.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLmsys Sglang
APPLmsys0.5.10
Powiązane podatności
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)
SGLang: nieuwierzytelnione RCE przez deserializację pickle w module disaggregation