Внедрение шаблонов в GitLab AI Gateway позволяет выполнить произвольные команды

vulnerability

Ошибка в механизме шаблонов GitLab AI Gateway открывает удалённому злоумышленнику путь к выполнению произвольных команд на сервере. Хватит учётной записи с минимальными правами, права администратора не нужны. Затронуты инсталляции, которые связывают GitLab Duo Agent с внешними поставщиками больших языковых моделей (LLM): под уязвимость попадают диапазоны версий 18.1.6-19.2.4, 19.3-19.3.2 и 19.4-19.4.1. Базовая оценка по CVSS 3.1 доходит до 9,9, это критический уровень.

GitLab AI Gateway и CVE-2026-90970

Шаблонизатор собирает готовый текст из заготовки и подставленных значений. Когда служебные символы из пользовательского ввода не экранируются, движок принимает их за часть шаблона и исполняет. Ровно такую ошибку описывает бюллетень BDU:2026-17952: неправильная нейтрализация специальных элементов в механизме шаблонов, CWE-1336. В международной базе проблема числится под идентификатором CVE-2026-90970.

Класс ошибки известен давно, однако в связке с генеративными моделями он снова становится актуальным. Шлюз постоянно собирает запросы из фрагментов: системные подсказки, текст пользователя, ответы внешней модели. Чем больше слоёв подстановки, тем выше шанс, что один из них пропустит служебную конструкцию. Злоумышленнику остаётся передать такую конструкцию через доступный ему интерфейс и дождаться, пока сервер выполнит её при обработке.

Последствия не ограничиваются самим шлюзом. Вектор CVSS 3.1 фиксирует смену области воздействия, а значит, результат выходит за пределы уязвимого компонента. По конфиденциальности, целостности и доступности оценка максимальная. Шлюз обслуживает запросы платформы Duo Agent и обращается к тем ресурсам, которым доверяет инсталляция GitLab, поэтому успешная эксплуатация затрагивает и данные, проходящие через него.

Атака не требует участия пользователя. Взаимодействие с интерфейсом происходит целиком на стороне атакующего, что упрощает автоматизацию попыток. Способ эксплуатации в бюллетене обозначен как манипулирование структурами данных. Сведения о наличии готового эксплойта пока уточняются, как и данные об операционных системах и аппаратных платформах.

Уязвимость выявили 2 октября 2026 года. Производитель подтвердил проблему и признал её устранённой, обновление программного обеспечения остаётся единственным штатным способом закрыть брешь. Конкретные сборки с исправлением перечислены в рекомендациях GitLab, ссылка на них приведена в карточке BDU:2026-17952. Кто именно эксплуатировал ошибку до публикации, из бюллетеня не следует.

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

Обновите GitLab AI Gateway до сборки вне перечисленных диапазонов. Затем сверьте журналы обращений к шлюзу за период с момента установки уязвимой версии: в них могут остаться следы попыток передать необычные служебные последовательности. Если обновление откладывается, сузьте сетевой доступ к интерфейсу шлюза до доверенных сегментов. Одновременно пересмотрите список учётных записей, которым разрешена работа с Duo Agent, и снимите лишние права у сервисных аккаунтов.

Отдельного внимания заслуживает сегментация. Шлюз обращается и к внутренним сервисам, и к внешним API, поэтому его сетевые связи стоит ограничить явным перечнем адресатов. Такая мера не устраняет ошибку в шаблонизаторе, зато сокращает набор целей, доступных после успешной эксплуатации. Полезно также ограничить объём данных, которые шлюз получает из репозиториев.

История с CWE-1336 показывает, как старый класс ошибок возвращается вместе с новой инфраструктурой. Генеративные функции добавляют в продукты слои подстановки текста, и каждый такой слой требует аккуратной обработки входных данных. Пока одни команды переносят рабочие процессы в ИИ-инструменты, другим приходится заново проверять, как эти инструменты собирают строки из чужих слов.

Ссылки

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