Критическая уязвимость в фреймворке SGLang позволяет удалённо выполнять код через функцию шаблонизации

vulnerability

В Банк данных угроз безопасности информации (БДУ) поступила запись об уязвимости в высокопроизводительном фреймворке SGLang. Этот инструмент предназначен для обслуживания больших языковых моделей (LLM) и широко применяется как в исследовательских лабораториях, так и в коммерческих продуктах. Проблема получила идентификатор BDU:2026-05925, а также номер CVE-2026-5760. Критический уровень опасности подтверждается оценками CVSS 2.0 (10 баллов) и CVSS 3.1 (9,8 баллов). Речь идёт об уязвимости кода в файле serving_rerank.py. Злоумышленник может эксплуатировать её удалённо, без предварительной аутентификации и без взаимодействия с жертвой. Более того, в открытом доступе уже опубликован рабочий эксплойт. Всё это делает инцидент особенно опасным для владельцев серверов, разворачивающих модели на базе SGLang.

Детали уязвимости

Суть уязвимости кроется в неправильном управлении генерацией кода. Конкретная ошибка относится к типу CWE-94 (внедрение кода). Проблемная точка - функция jinja2.Environment() в файле serving_rerank.py. Jinja2 - популярная библиотека для создания шаблонов на языке Python. Она используется для динамической генерации HTML-страниц, конфигураций и других текстовых данных. В контексте SGLang эта функция применяется при обработке запросов к конечной точке /v1/rerank, то есть к службе переранжирования результатов работы модели. Из-за отсутствия должной изоляции шаблона атакующий может передать в запросе специально сформированную строку, которая будет интерпретирована как код. В результате злоумышленник получает возможность выполнить произвольные команды на сервере. При этом никаких дополнительных прав доступа не требуется.

На данный момент уязвимым признан релиз SGLang версии 0.5.9. Разработчики из сообщества свободного программного обеспечения ещё не выпустили официальное обновление. Информация об устранении уточняется. Однако в описании мер защиты уже предложены несколько компенсирующих шагов. Во-первых, рекомендуется заменить стандартную среду шаблонов jinja2.Environment() на ImmutableSandboxedEnvironment. Как следует из названия, такая среда не позволяет изменять состояние системы и блокирует выполнение опасных инструкций. Во-вторых, следует ограничить доступ к конечной точке /v1/rerank. Администраторам советуют разрешить запросы только с доверенных IP-адресов или вовсе временно отключить этот маршрут, если он не критичен для бизнеса. В-третьих, необходимо внедрить строгую проверку файлов моделей перед их загрузкой в SGLang. Злоумышленник может попытаться подменить модель, содержащую вредоносный шаблон. Наконец, стоит задействовать системы обнаружения и предотвращения вторжений (IDS/IPS). Они способны выявлять аномальные запросы на этапе эксплуатации.

Последствия удачной атаки могут быть катастрофическими. Выполнение произвольного кода даёт нарушителю полный контроль над сервером. Он может похитить сами языковые модели, которые часто представляют собой дорогостоящую интеллектуальную собственность. Кроме того, через скомпрометированный узел злоумышленник получает доступ к данным пользователей, отправляющих запросы. В корпоративной среде это может означать утечку коммерческой тайны или персональных данных. Также нельзя исключать, что сервер будет использован как точка входа в корпоративную сеть для дальнейшего продвижения. Учитывая, что SGLang нередко развёртывают в облачных инфраструктурах, масштаб ущерба может быть очень широк.

Теперь коротко о том, почему эта новость заслуживает пристального внимания. SGLang - не единственный фреймворк для LLM, но он набирает популярность благодаря высокой производительности. Проект используют как стартапы, так и крупные технологические компании. Критическая уязвимость в таком инструменте - серьёзный сигнал для всех, кто строит сервисы на основе больших языковых моделей. Особенно тревожно, что эксплойт уже в открытом доступе. Это значит, что даже низкоквалифицированный злоумышленник может воспользоваться им без особых усилий. Специалистам по безопасности следует немедленно провести аудит собственных инсталляций и применить компенсирующие меры, не дожидаясь официального патча.

Таким образом, организациям, использующим SGLang 0.5.9, необходимо как можно скорее оценить риски. В первую очередь нужно проверить, активен ли маршрут /v1/rerank. Если да, то временно ограничить к нему доступ или перевести его в режим обслуживания. Затем следует модифицировать код в части работы с шаблонами - заменить среду исполнения на безопасную. Параллельно стоит настроить мониторинг на предмет подозрительных запросов. Системы обнаружения вторжений помогут засечь попытки инъекции. И, конечно, важно следить за выходом официального обновления от разработчиков. Только комплексный подход позволит снизить вероятность компрометации до нуля.

Ссылки

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