Один файл — полный доступ к серверу. Рассказываем о критической дыре в популярном фреймворке SGLang

leer en español

Один файл — полный доступ к серверу. Рассказываем о критической дыре в популярном фреймворке SGLang

Простая ошибка в коде ставит под удар тысячи пользователей.

image

Во фреймворке для работы с языковыми моделями SGLang обнаружена критическая уязвимость, которая позволяет злоумышленнику получить полный контроль над сервером — достаточно лишь подсунуть жертве специально подготовленный файл модели.

Уязвимость получила идентификатор CVE-2026-5760 и оценку 9,8 балла из 10 по шкале CVSS. SGLang представляет собой высокопроизводительный фреймворк с открытым исходным кодом, предназначенный для обслуживания больших языковых и мультимодальных моделей. Проект пользуется широкой популярностью: репозиторий на GitHub насчитывает более 5500 ответвлений и собрал уже свыше 26 100 звёзд.

Суть атаки сводится к следующему: злоумышленник создаёт вредоносный файл в формате GGUF, встраивая в параметр tokenizer.chat_template особую Jinja2-нагрузку для внедрения шаблонов на стороне сервера. Когда пользователь загружает такой файл и подключает модель к SGLang, а затем обращается к конечной точке «/v1/rerank», встроенный шаблон рендерится и на сервере выполняется произвольный код на Python. Триггером для активации уязвимого участка кода служит специальная фраза, характерная для модели Qwen3 Reranker.

Обнаруживший и сообщивший об уязвимости специалист Стюарт Бек поясняет, что корень проблемы — в использовании jinja2.Environment() без изоляции, тогда как вместо него следует применять ImmutableSandboxedEnvironment. Именно отсутствие «песочницы» и открывает возможность для выполнения вредоносного кода.

CVE-2026-5760 относится к тому же классу уязвимостей, что и более ранняя CVE-2024-34359, известная под названием Llama Drama и получившая оценку 9,7 балла. Тогда критическая брешь была выявлена в пакете llama_cpp_python. Схожая проблема была также устранена в прошлом году в платформе vLLM — CVE-2025-61620 с оценкой 6,5 балла.

По данным CERT/CC, для устранения угрозы необходимо заменить jinja2.Environment() на ImmutableSandboxedEnvironment при рендеринге шаблонов. Это лишит злоумышленника возможности исполнять произвольный код. При этом центр отмечает, что в ходе координации никакого ответа от разработчиков SGLang и исправления получено не было.