SGLang zawiera krytyczną podatność umożliwiającą zdalne wykonanie kodu (RCE) podczas ładowania wag modeli z repozytorium HuggingFace. Luka wynika z użycia niebezpiecznej deserializacji pickle przy obsłudze plików .bin, co pozwala atakującemu na przejęcie kontroli nad systemem.
▸ Pokaż oryginał (EN)
SGLang contains a RCE vulnerability when attempting to load model weights from a HuggingFace repository, specifically within the /update_weights_from_disk, where torch.load(..., weights_only=False) fallback enables pickle deserialization of .bin files.
Podatność występuje w endpoincie /update_weights_from_disk, gdzie SGLang wywołuje funkcję torch.load() z parametrem weights_only=False. Taka konfiguracja aktywuje mechanizm fallback oparty na deserializacji pickle, który przetwarza pliki .bin bez żadnych ograniczeń bezpieczeństwa. Atakujący może dostarczyć spreparowany plik .bin zawierający złośliwy pickle payload, który zostanie automatycznie wykonany podczas procesu ładowania wag modelu. Mechanizm deserializacji pickle z natury umożliwia wykonanie dowolnego kodu Pythona osadzonego w przetwarzanym pliku (CWE-502).
Atakujący bez żadnego uwierzytelnienia może doprowadzić do zdalnego wykonania dowolnego kodu (RCE) na serwerze z pełnym naruszeniem poufności, integralności i dostępności systemu.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Szczegóły w oficjalnym security advisory projektu SGLang: https://github.com/sgl-project/sglang/security/advisories/GHSA-wf98-gv64-5wrf. Do czasu aktualizacji zaleca się ograniczenie dostępu sieciowego do endpointu /update_weights_from_disk oraz ładowanie wyłącznie zaufanych plików wag modeli.
SGLang — wersje wskazane w referencjach producenta (advisory GHSA-wf98-gv64-5wrf)
Szczegóły techniczne podatności zostały ujawnione przez badacza Apoorva Dayal w poście: https://thoughts.apoorvdayal.com/posts/sglang-disclosures/
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLmsys Sglang
APPLmsys≤ 0.5.15
Powiązane podatności
RCE w SGLang — ucieczka z sandbox przez podsystem dumper
SGLang: nieuwierzytelnione RCE przez podatność deserializacji pickle
SGLang: nieuwierzytelnione RCE przez deserializację pickle w ZeroMQ
RCE w SGLang przez niebezpieczną deserializację pickle na gnieździe ROUTER
SGLang: path traversal umożliwiający zapis dowolnych plików bez uwierzytelnienia