Уязвимость в фреймворке SGLang угрожает серверам ИИ-инференса: злоумышленники могут получить контроль через вредоносные модели

vulnerability

Исследователи в области кибербезопасности обнаружили критическую уязвимость в популярном фреймворке SGLang, который используется для запуска больших языковых моделей. Эта проблема позволяет злоумышленникам полностью скомпрометировать серверы, выполняющие задачи логического вывода (инференса) моделей. Инцидент в очередной раз подчеркивает растущие риски цепочки поставок в инфраструктуре искусственного интеллекта, особенно в части обработки ненадежных метаданных моделей.

Уязвимость CVE-2026-5760

Уязвимость, получившая идентификатор CVE-2026-5760, классифицируется как возможность удаленного выполнения кода (RCE). Она активируется в момент, когда сервер загружает специально сконфигурированный вредоносный файл модели в формате GGUF. Для успешной атаки злоумышленнику достаточно разместить такую "вооружённую" модель на общедоступной платформе вроде HuggingFace и убедить жертву - например, разработчика или компанию - развернуть её в своей среде SGLang. После загрузки модели атакующий получает возможность выполнять произвольные команды на операционной системе целевого хоста, что фактически означает полный контроль над сервером.

Корень проблемы кроется в недостаточной проверке входных данных в компоненте SGLang, отвечающем за ранжирование (reranking endpoint). Речь идёт об уязвимости типа Server-Side Template Injection (SSTI, внедрение шаблонов на стороне сервера). Когда фреймворк обрабатывает шаблоны чата, которые поставляются напрямую с импортированной моделью, он использует небезопасную конфигурацию шаблонизатора Jinja2. В частности, уязвимый код в файле "serving_rerank.py" применяет стандартную функцию "Jinja2.Environment()" вместо гораздо более безопасного варианта "ImmutableSandboxedEnvironment". Эта критическая ошибка означает, что шаблоны обрабатываются без изоляции (песочницы), что позволяет встроенным командам на Python выполняться непосредственно на сервере, обрабатывающем данные.

Недавно опубликованное подтверждение концепции эксплуатации уязвимости (PoC, Proof-of-Concept) на платформе GitHub наглядно демонстрирует механизм атаки. Злоумышленник создаёт вредоносный файл модели GGUF, содержащий модифицированный шаблон "tokenizer.chat_template". В этот шаблон внедряется полезная нагрузка (payload), активируемая определённой триггерной фразой, например, "Ответом может быть только „да“ или „нет“". Эта фраза предназначена для активации встроенного в SGLang механизма обнаружения реранкера Qwen3. Как только ничего не подозревающая жертва загружает и импортирует скомпрометированную модель в свою среду SGLang, ловушка считается установленной. Когда к уязвимому эндпоинту "/v1/rerank" поступает API-запрос, фреймворк направляет его через проблемный путь обработки Jinja2. Полезная нагрузка типа SSTI, используя известную технику обхода ограничений Python, выходит за пределы контекста шаблона и успешно выполняет произвольные команды операционной системы на сервере.

С точки зрения классификации, данная уязвимость попадает под два распространённых типа слабостей: CWE-1336 (Некорректная нейтрализация специальных элементов, используемых в механизме шаблонов) и CWE-94 (Некорректный контроль генерации кода). Это делает её родственной по классу с нашумевшей уязвимостью "Llama Drama" (CVE-2024-34359), которая ранее затрагивала библиотеку "llama-cpp-python". Кроме того, она разделяет поверхность атаки с недавней уязвимостью, приводящей к отказу в обслуживании (DoS, Denial-of-Service) в другом популярном фреймворке - vLLM (CVE-2025-61620).

Для администраторов и разработчиков, использующих SGLang, ситуация требует немедленного внимания. Эксперты настоятельно рекомендуют проявлять крайнюю осторожность при работе с версией фреймворка 0.5.9, которая подвержена уязвимости. Ключевая мера предосторожности на данный момент - избегать загрузки непроверенных моделей в формате GGUF из публичных репозиториев до тех пор, пока не будет выпущен патч, обеспечивающий безопасную, изолированную обработку шаблонов. В долгосрочной перспективе инцидент указывает на необходимость внедрения более строгих практик безопасности при проектировании фреймворков для машинного обучения, включая обязательное использование песочниц для обработки ненадежных данных и тщательный аудит всех компонентов, взаимодействующих с внешними артефактами. Растущая зависимость от открытых моделей и фреймворков делает подобные проверки не просто рекомендацией, а критически важным элементом жизненного цикла ИИ-инфраструктуры.

Ссылки

Комментарии: 0