Бесплатный экспресс-аудит сайта Безопасность, SEO, AI-поиск и 152-ФЗ — отчёт с баллами за минуту Проверить сайт
Обсудить проект

Критическая уязвимость GitLab: обновите сервер

21 октября 2026 года GitLab выпустил внеплановый критический патч сразу для семи веток. Главная причина — CVE-2026-110264 с оценкой 10,0 из 10: уязвимость позволяет выполнить произвольный код на сервере без авторизации. Затронуты все версии начиная с 7.0, выпущенной в 2014 году, — двенадцать лет релизов.

Если у вас собственный сервер GitLab, это задача на сегодня. Обходных мер разработчики не предлагают.

Что за уязвимость

Ошибка в компиляции регулярных выражений: при обработке специально составленного шаблона происходит целочисленное переполнение. Проблема в движке Onigmo — это библиотека регулярных выражений из Ruby, которую GitLab поставляет в собственных сборках.

GitLab не раскрывает, при каких именно условиях срабатывает атака. Для администратора это означает простую вещь: убедиться, что «нас не касается», по настройкам нельзя. Единственный надёжный ответ — обновление.

Это уже четвёртая уязвимость выполнения кода в регулярных выражениях GitLab за месяц, и все четыре нашёл один исследователь. Предыдущая, CVE-2026-97229, тоже имела оценку 10,0 и закрывалась патчем от 12 октября.

Куда обновляться

Ваша веткаИсправленная версия
19.519.5.1
19.419.4.3
19.319.3.6
19.219.2.9
19.119.1.9
19.019.0.10
7.0 — 18.1118.11.13

Отдельная строка про старые ветки заслуживает внимания: GitLab выпустил исправление даже для 18.11, закрыв им весь диапазон от 7.0. Так делают редко и только для действительно серьёзных проблем.

Главная ловушка этого патча

Если вы обновлялись 12 октября — вы снова уязвимы. Тот патч (версии 19.4.2, 19.3.5, 19.2.8) закрывал прошлую критическую дыру в том же регулярном движке. Новая уязвимость затрагивает и эти сборки, поэтому обновляться нужно второй раз за десять дней.

Ситуация неприятная, но логика понятна: исследователь продолжает копать одну область, и каждая следующая находка задевает более широкий диапазон версий. Эта — первая, которая дотянулась до веток старше 19.2.

Кого это касается

  • Собственный сервер GitLab (self-managed, Community или Enterprise Edition) — да, обновляйтесь.
  • GitLab.com — нет, облако вендор уже обновил.
  • GitLab Dedicated — нет, если вы на версиях 19.3.5-internal0, 19.4.2-internal0 или новее.

Отдельно стоит сказать, почему это важнее, чем кажется. GitLab — не просто хранилище кода. В нём лежат ключи развёртывания, переменные CI с паролями к базам и внешним сервисам, доступ к продакшену через раннеры. Выполнение кода на таком сервере — это компрометация не одного приложения, а всей цепочки поставки: злоумышленник получает и код, и секреты, и возможность подложить что-то в следующий деплой.

Что сделать

  1. Узнайте версию. В веб-интерфейсе она видна на странице /help. На сервере — командой gitlab-rake gitlab:env:info.
  2. Обновитесь до исправленной версии своей ветки по таблице выше. Для Omnibus-установки это обычное обновление пакета, для Docker — смена тега образа и пересоздание контейнера.
  3. Запланируйте окно. В релизах 19.4.3 и 19.3.6 есть миграции базы данных: на одноузловой установке это означает простой. В многоузловой конфигурации возможно обновление без простоя по штатной процедуре.
  4. Проверьте после обновления, что версия сменилась, а CI-задачи, вебхуки и интеграции работают.
  5. Если сервер смотрит в интернет — подумайте, нужно ли это. Внутренний GitLab за VPN или с доступом по списку адресов переживает такие новости гораздо спокойнее.

Если обновиться прямо сейчас нельзя

Честно: защиты, кроме обновления, здесь нет. Можно только сократить поверхность атаки и усилить наблюдение.

  • Закройте доступ к интерфейсу снаружи: VPN, список разрешённых адресов, доступ только из офисной сети.
  • Отключите регистрацию новых пользователей и анонимный доступ к публичным проектам, если он включён.
  • Проверьте, какие персональные токены и ключи развёртывания активны, и отзовите лишние.
  • Снимите резервную копию и убедитесь, что она восстанавливается. Это пригодится независимо от исхода.

Как понять, что сервер уже атаковали

По данным исследователей, косвенные признаки эксплуатации видны в логах: аварийные завершения рабочих процессов, связанные с движком регулярных выражений, и всплески ошибок рендеринга разметки. Для систем мониторинга уже опубликованы правила обнаружения в формате Sigma.

Что ещё стоит проверить руками:

  • новые пользователи, особенно с правами администратора;
  • незнакомые ключи развёртывания, персональные токены и зарегистрированные раннеры;
  • изменения в файлах конфигурации CI в репозиториях, которых никто не делал;
  • исходящие соединения с сервера GitLab в неожиданные адреса;
  • задачи CI, запускавшиеся без коммитов и расписания.

При любых признаках не торопитесь удалять логи: сначала резервная копия, затем смена всех секретов — токенов, ключей развёртывания, паролей к базам из переменных CI, — и только потом разбор.

Что с этим делать на уровне процесса

Это второй критический выпуск за один день: несколькими часами раньше вышли исправления PHP — там тоже выполнение кода и оценка 9,2. Обе истории про одно и то же: про сервисы, которые компания держит у себя и обновляет по остаточному принципу.

Минимум, который стоит завести, если его нет:

  • Список своих сервисов с версиями и ответственными: GitLab, почта, CRM в коробке, мониторинг, базы. Без списка невозможно за час ответить на вопрос «нас касается?».
  • Подписка на рассылки безопасности вендоров этих сервисов.
  • Регламент обновлений: кто обновляет, в какое окно, кто проверяет после.
  • Проверенные резервные копии — как их делать и проверять.

Это скучная часть работы, которая окупается ровно в такие дни, как сегодня. Подробнее о том, как считать зависимость бизнеса от своих и чужих сервисов, — в отдельном разборе.

Источники

  • Патч-релизы GitLab — критический выпуск 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 и 18.11.13 от 21 октября 2026 года закрывает CVE-2026-110264 и ещё одиннадцать уязвимостей.
  • The Hacker News — разбор уязвимости: переполнение при компиляции регулярного выражения в движке Onigmo, диапазон затронутых версий, миграции базы в патче.
  • Агентство кибербезопасности Сингапура — предупреждение по предыдущей уязвимости регулярного движка от 12 октября.

Нужна помощь с обновлением сервера или аудитом своей инфраструктуры — напишите нам: посмотрим, что у вас работает на собственных серверах, и приведём в порядок обновления.

Частые вопросы

У нас GitLab.com, нас это касается?

Нет. Облако GitLab вендор обновил сам. Уязвимость опасна для self-managed установок — серверов Community и Enterprise Edition, которые компания держит у себя.

Как узнать версию своего GitLab?

В веб-интерфейсе — на странице /help, версия показана вверху. На сервере — командой gitlab-rake gitlab:env:info, она выводит версию, редакцию и окружение.

Мы обновлялись 12 октября. Мы защищены?

Нет. Патч от 12 октября (19.4.2, 19.3.5, 19.2.8) закрывал предыдущую уязвимость того же движка регулярных выражений. Новая затрагивает и эти версии — обновляться нужно второй раз.

Есть ли временные меры, если обновиться сегодня нельзя?

Защиты, кроме обновления, разработчики не называют: условия эксплуатации не раскрыты, и исключить себя по настройкам нельзя. Можно сократить поверхность атаки — закрыть доступ снаружи через VPN или список адресов, отключить регистрацию, отозвать лишние токены.

Будет ли простой при обновлении?

В версиях 19.4.3 и 19.3.6 есть миграции базы данных: на одноузловой установке сервис будет недоступен на время обновления. В многоузловой конфигурации доступна штатная процедура обновления без простоя.

У нас очень старая версия, например 17.x. Что делать?

Для всего диапазона от 7.0 до 18.11 выпущена исправленная сборка 18.11.13 — обновитесь на неё, а переход на актуальную ветку планируйте отдельной задачей. Такие бэкпорты GitLab делает редко, и это признак серьёзности проблемы.