Услуги Портфолио Контакты БлогНовости +7 (800) 511‑32‑27 Обсудить проект
Безопасность

GitLab закрыл CVE-2026-97229 с CVSS 10: регулярное выражение в CI/CD позволяет выполнить код без авторизации

13 октября 2026·5 мин чтения
CVE-2026-97229CI/CD
Уязвимость GitLab CVE-2026-97229 — разрыв в светящемся конвейере CI/CD на серверной стойке

12 октября 2026 года GitLab выпустил экстренный патч для самостоятельно развёрнутых GitLab CE и EE: уязвимость CVE-2026-97229 с максимальной оценкой CVSS 10.0 позволяет неаутентифицированному атакующему выполнить код на сервере с помощью специально составленного регулярного выражения в конфигурации CI/CD. Исправление — версии 19.4.2, 19.3.5 и 19.2.8; обновляться нужно сразу.

GitLab.com и GitLab Dedicated уже защищены, действовать нужно только владельцам собственных инсталляций. Это третья критическая ошибка в обработке регулярных выражений CI/CD за три недели, и первая, для которой не нужна учётная запись. Если GitLab у вас — основа DevOps-процессов и через него проходят секреты, сборки и деплой, компрометация сервера означает доступ ко всему конвейеру поставки.

Ниже — что именно исправлено, чем этот бюллетень отличается от сентябрьского, что ещё закрыто в релизе и в каком порядке действовать. Основы устройства конвейеров мы разбирали в материале CI/CD простыми словами.

Что исправлено в GitLab 19.4.2, 19.3.5 и 19.2.8

Бюллетень GitLab описывает CVE-2026-97229 как переполнение целого (integer overflow) в компиляторе регулярных выражений CI/CD: из-за недостаточной проверки входных данных выражение, специально составленное атакующим, приводит к выполнению произвольного кода. Ключевые факты из первоисточника:

  • оценка CVSS 3.1 — 10.0, вектор AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H: атака по сети, без привилегий и без действий пользователя;
  • уязвимы GitLab CE/EE 19.2 до 19.2.8, 19.3 до 19.3.5 и 19.4 до 19.4.2;
  • об ошибке сообщил исследователь joaxcar через программу bug bounty GitLab на HackerOne;
  • временных мер защиты в бюллетене не предложено — только обновление.

В части пересказов ветка 19.3 указана как 19.3.4. Ориентируйтесь на официальную страницу релиза: в ней исправленная версия — 19.3.5.

Третья ошибка в regex-движке CI/CD за три недели

23 сентября GitLab уже закрывал в патче 19.4.1 две уязвимости того же узла с оценкой CVSS 9.9: CVE-2026-89078 (двойное освобождение памяти при разборе регулярного выражения) и CVE-2026-93577 (переполнение целого при компиляции выражения). Обе требовали аутентифицированного пользователя. Новая CVE-2026-97229 этого условия не имеет, поэтому и получила максимальный балл.

Серия находок в одном компоненте — повод не считать сентябрьское обновление закрытием темы. Если инсталляция обновлена до 19.4.1 и с тех пор не трогалась, она уязвима к новой ошибке.

Что ещё закрыто в октябрьском релизе

Помимо критической уязвимости, релиз исправляет ещё 23 проблемы. Пять из них имеют высокий уровень опасности: XSS в подсветке синтаксиса (CVE-2026-92883), ошибки авторизации в downstream-пайплайнах (CVE-2026-16301) и в запланированных пайплайнах (CVE-2026-81839), слишком широкое регулярное выражение при доступе к файлам репозитория (CVE-2026-14814) и prompt injection в Duo Agent Platform (CVE-2026-96893). Остальные — ошибки авторизации в GraphQL, рабочих элементах, реестре пакетов и мелкогранулярных токенах, SSRF при импорте репозитория и другие проблемы средней и низкой опасности.

Что это значит для команд разработки

GitLab-сервер хранит исходный код, переменные CI/CD с ключами облаков и реестров, токены деплоя и связи с раннерами. Выполнение кода на таком сервере — это не отдельный инцидент, а точка входа в атаку на цепочку поставки: подмена артефактов, кража секретов, закладки в пайплайнах. По данным Cybersecurity Dive, на момент публикации неясно, эксплуатируется ли уязвимость, и CISA ещё не внесла её в каталог KEV. Но окно между выходом патча и первыми атаками на критические уязвимости GitLab обычно короткое.

Как действовать администраторам

1. Определите версию: страница «Справка» в интерфейсе или gitlab-rake gitlab:env:info на сервере. Всё, что ниже 19.4.2, 19.3.5 и 19.2.8 в своих ветках, требует обновления.

2. Сделайте резервную копию и обновитесь. GitLab предупреждает: в релизе есть миграции базы данных, одиночные инсталляции уйдут в простой на время обновления, многоузловые можно обновить по процедуре без простоя. В 19.3.5 есть пост-деплойные миграции.

3. Пока обновление не завершено, ограничьте доступ к инсталляции из интернета: VPN, список разрешённых адресов, закрытая регистрация новых пользователей.

4. После обновления проверьте журналы на аномальные падения воркеров и неожиданные изменения в .gitlab-ci.yml, а при малейших сомнениях ротируйте токены и переменные CI/CD.

Часто задаваемые вопросы

Затронут ли GitLab.com? Нет. По данным GitLab, облачная версия уже работает на исправленной версии, клиентам GitLab Dedicated действия не нужны.

Помогает ли обновление до 19.4.1? Нет. Версия 19.4.1 закрыла сентябрьские ошибки в regex-движке, а CVE-2026-97229 исправлена только в 19.4.2, 19.3.5 и 19.2.8.

Есть ли публичный эксплойт? На момент выхода патча публичного PoC и подтверждённых атак не было. Это не повод откладывать обновление: оценка 10.0 и доступность без входа делают уязвимость приоритетной целью.

Можно ли обойтись без обновления? В бюллетене временных мер нет. Ограничение сетевого доступа снижает риск, но не устраняет уязвимость.

Источники

GitLab — GitLab Critical Patch Release: 19.4.2, 19.3.5, 19.2.8, 12 октября 2026 года (первоисточник, бюллетень вендора).

Cybersecurity Dive — GitLab fixes serious vulnerability that exposed software environments to sabotage.

GitLab — GitLab Critical Patch Release: 19.4.1, 23 сентября 2026 года (предыдущие уязвимости в regex-движке CI/CD).

Материал подготовлен редакцией YuSMP Group по открытым источникам. Нужна экспертиза по теме или разработка под задачу — обсудим проект.

Защитим конвейер поставки, а не только сервер GitLab

Обновим инсталляцию GitLab без лишнего простоя, закроем доступ из интернета, вынесем секреты из переменных CI/CD и настроим мониторинг пайплайнов, чтобы следующий критический патч не застал команду врасплох.

Заказать DevOps-аудит