Критическая уязвимость 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.5 | 19.5.1 |
| 19.4 | 19.4.3 |
| 19.3 | 19.3.6 |
| 19.2 | 19.2.9 |
| 19.1 | 19.1.9 |
| 19.0 | 19.0.10 |
| 7.0 — 18.11 | 18.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 с паролями к базам и внешним сервисам, доступ к продакшену через раннеры. Выполнение кода на таком сервере — это компрометация не одного приложения, а всей цепочки поставки: злоумышленник получает и код, и секреты, и возможность подложить что-то в следующий деплой.
Что сделать
- Узнайте версию. В веб-интерфейсе она видна на странице
/help. На сервере — командойgitlab-rake gitlab:env:info. - Обновитесь до исправленной версии своей ветки по таблице выше. Для Omnibus-установки это обычное обновление пакета, для Docker — смена тега образа и пересоздание контейнера.
- Запланируйте окно. В релизах 19.4.3 и 19.3.6 есть миграции базы данных: на одноузловой установке это означает простой. В многоузловой конфигурации возможно обновление без простоя по штатной процедуре.
- Проверьте после обновления, что версия сменилась, а CI-задачи, вебхуки и интеграции работают.
- Если сервер смотрит в интернет — подумайте, нужно ли это. Внутренний 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 делает редко, и это признак серьёзности проблемы.