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

Что случилось
21 октября GitLab выпустил внеплановые исправления безопасности для Community и Enterprise Edition. Главная уязвимость, CVE-2026-110264, получила наивысшую оценку CVSS 10.0: при определённых условиях пользователь без входа в систему может выполнить произвольный код на сервере GitLab. Причина — ошибка в обработке регулярных выражений. Подробности — в бюллетене GitLab.
Всего выпуск закрывает 12 уязвимостей. Кроме главной, ещё две высокой важности:
- CVE-2026-15723 (CVSS 8.2) — пользователь GitLab может захватить чужую учётную запись LDAP, если одновременно включены вход через SAML и автоматическая привязка к LDAP.
- CVE-2026-112212 (CVSS 7.5) — при определённых условиях посторонний может отравить общий кэш настроек OAuth и OIDC и перенаправить часть входов на внешний сервер.
О реальных атаках GitLab на момент публикации не сообщает. Но он уже выпустил правила, по которым можно искать следы попыток, — о них ниже.
Кого касается
Всех, у кого на сервере свой GitLab Community или Enterprise Edition — из пакета, в Docker или из исходников. Затронуты все версии начиная с 7.0, то есть любая установка без обновления от 21 октября. GitLab.com уже обновлён, его пользователей это не касается.
Как проверить версию
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION— версия GitLab, установленного из пакета.sudo gitlab-rake gitlab:env:info— подробная сводка, версия — в блоке GitLab information.docker ps --format '{{.Names}} {{.Image}}'— контейнеры: ищите образы gitlab/gitlab-ce и gitlab/gitlab-ee. Версию внутри покажетdocker exec <имя> cat /opt/gitlab/embedded/service/gitlab-rails/VERSION.
Если версия ниже исправленной для вашей ветки (список — в конце новости), нужно обновиться.
Как обновить
Сначала резервная копия: sudo gitlab-backup create. Файлы /etc/gitlab/gitlab.rb и /etc/gitlab/gitlab-secrets.json в неё не входят — скопируйте их отдельно.
Быстрее и надёжнее всего обновиться до исправленной версии своей ветки: с 19.4 — на 19.4.3, с 19.3 — на 19.3.6 и так далее. В командах ниже для примера 19.4.3, подставьте свою.
- Debian и Ubuntu:
sudo apt update && sudo apt install gitlab-ce=19.4.3-ce.0. Для Enterprise Edition —gitlab-ee=19.4.3-ee.0. - AlmaLinux и Rocky Linux:
sudo dnf install gitlab-ce-19.4.3-ce.0.el9, на 8-й версии системы окончание.el8. Для Enterprise Edition —gitlab-ee-19.4.3-ee.0.el9. - Docker: укажите в compose-файле точный тег, например
gitlab/gitlab-ce:19.4.3-ce.0, и выполнитеdocker compose pull && docker compose up -d. С тегом latest старая установка может перескочить обязательную промежуточную версию. - Установку из исходников обновляйте по инструкции GitLab.
В 19.4.3 и 19.3.6 есть миграции базы данных: если GitLab стоит на одном сервере, он будет недоступен, пока они идут. Если ваша ветка старше 18.11, исправления для неё нет: доберитесь до 18.11.13 или новее через обязательные промежуточные версии, маршрут подскажет руководство GitLab.
Как поискать следы атаки
GitLab опубликовал два правила для поиска попыток: Onigmo native worker crash и Org mode render error burst. На сервере с GitLab из пакета быстро проверить можно так:
sudo grep -A200 '\[BUG\]' /var/log/gitlab/puma/puma_stderr.log | grep -E 'org-ruby|onig'— аварийные падения рабочих процессов при обработке регулярных выражений. Если команда что-то вывела, это признак попыток.sudo grep 'Timeout::Error' /var/log/gitlab/gitlab-rails/exceptions_json.log | grep -c '\.org"'— тайм-ауты при отображении файлов .org. Пять и больше таких ошибок от одного адреса за несколько минут — признак попыток.
В Docker логи лежат по тем же путям внутри контейнера, команды выполняются через docker exec <имя>. Следы в логах говорят о попытках, а их отсутствие не гарантирует, что атаки не было: удачная атака может пройти тихо. Если следы есть, после обновления смените токены доступа, токены раннеров и секреты в переменных CI/CD.
Если обновиться сразу нельзя
Временных мер для CVE-2026-110264 GitLab не предлагает: защищает только обновление. Если его приходится отложить, закройте веб-интерфейс GitLab от интернета — оставьте порты 80 и 443 открытыми только для своих адресов.
Исправленные версии
Исправления вошли в GitLab CE и EE 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13. В ветки 19.2, 19.1, 19.0 и 18.11 GitLab сверх обычного графика перенёс только исправление CVE-2026-110264. Остальные уязвимости выпуска закрыты начиная с 19.3.6, так что со старых веток стоит перейти на актуальную.