Podatność w bibliotece SGLang pozwala na zdalne wykonanie kodu (RCE) poprzez endpoint /v1/rerank, gdy załadowany zostanie plik modelu zawierający złośliwy szablon Jinja2 w polu tokenizer.chat_template. Jest to podatność krytyczna, umożliwiająca pełne przejęcie kontroli nad serwerem bez żadnego uwierzytelnienia.
▸ Pokaż oryginał (EN)
SGLang's reranking endpoint (/v1/rerank) achieves Remote Code Execution (RCE) when a model file containing a malcious tokenizer.chat_template is loaded, as the Jinja2 chat templates are rendered using an unsandboxed jinja2.Environment().
Endpoint /v1/rerank w SGLang renderuje szablony Jinja2 zdefiniowane w polu tokenizer.chat_template pliku modelu. Renderowanie odbywa się przy użyciu niezabezpieczonego obiektu jinja2.Environment(), który nie stosuje sandboxingu. Atakujący może dostarczyć plik modelu zawierający złośliwy szablon Jinja2, którego wykonanie prowadzi do uruchomienia arbitralnego kodu po stronie serwera. Brak uwierzytelnienia oraz ograniczeń złożoności ataku (AC:L, PR:N, UI:N) sprawia, że eksploitacja jest wyjątkowo prosta.
Atakujący może uzyskać pełną kontrolę nad serwerem — odczytać, zmodyfikować lub usunąć dane (C:H, I:H, A:H w skali CVSS), a także wykonać dowolne polecenia systemowe w kontekście procesu SGLang.
Należy zastosować patche dostępne w repozytorium projektu (pull request sgl-project/sglang#23660). Do czasu wdrożenia poprawki zaleca się ograniczenie dostępu sieciowego do endpointu /v1/rerank wyłącznie do zaufanych hostów oraz unikanie ładowania plików modeli z niezaufanych źródeł.
SGLang w wersji 0.5.9 oraz potencjalnie inne wersje z niezabezpieczonym silnikiem Jinja2 — dokładny zakres wersji wskazany w referencjach producenta (pull request #23660 w repozytorium sgl-project/sglang).
Dostępny jest publiczny proof-of-concept exploit opublikowany w repozytorium GitHub (Stuub/SGLang-0.5.9-RCE). Podatność jest opisana w bazie CERT/CC pod identyfikatorem VU#915947.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLmsys Sglang
APPLmsys< 0.5.11
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)
RCE w SGLang przez deserializację pickle bez uwierzytelnienia (ZMQ broker)
SGLang: nieuwierzytelnione RCE przez deserializację pickle w module disaggregation