Moduł multimodalny SGLang umożliwia nieuwierzytelnionemu atakującemu zdalne wykonanie kodu (RCE) poprzez brokera ZMQ, który deserializuje niezaufane dane za pomocą pickle.loads() bez żadnego mechanizmu uwierzytelnienia. Podatność jest krytyczna, ponieważ nie wymaga żadnych uprawnień ani interakcji użytkownika.
▸ Pokaż oryginał (EN)
SGLang's multimodal generation module is vulnerable to unauthenticated remote code execution through the ZMQ broker, which deserializes untrusted data using pickle.loads() without authentication.
Broker ZMQ w module multimodal generation (scheduler_client.py) przyjmuje dane przesyłane przez sieć i przetwarza je funkcją pickle.loads() bez wcześniejszej weryfikacji tożsamości nadawcy. Deserializacja pickle pozwala na osadzenie w przesyłanym obiekcie dowolnego kodu Python, który zostanie wykonany automatycznie podczas deserializacji. Ponieważ endpoint jest dostępny sieciowo bez uwierzytelnienia, każdy atakujący mający dostęp do portu brokera ZMQ może wysłać spreparowany payload i przejąć kontrolę nad systemem.
Atakujący może wykonać dowolny kod w kontekście procesu SGLang na serwerze, co w praktyce oznacza pełne przejęcie kontroli nad maszyną — kradzież danych, instalację backdoorów lub dalsze ruchy lateralne w sieci.
Należy zaktualizować SGLang do wersji v0.5.10 lub nowszej, w której problem został usunięty zgodnie z pull requestem #20904. Jako dodatkowe zabezpieczenie należy ograniczyć dostęp sieciowy do portu brokera ZMQ za pomocą firewall, tak aby był dostępny wyłącznie z zaufanych hostów.
SGLang (Lmsys SGLang) — wersje poprzedzające v0.5.10, w których aktywny jest moduł multimodal generation
Podatność została opisana przez Orca Security w dedykowanym wpisie blogowym dotyczącym podatności RCE w frameworku SGLang. Security advisory dostępne pod GHSA-3cp7-c6q2-94xr.
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
SGLang: nieuwierzytelnione RCE przez deserializację pickle w module disaggregation