В GitLab обнаружена критическая уязвимость с удаленным выполнением кода

В GitLab обнаружена критическая уязвимость с удаленным выполнением кода

CVE‑2026‑110264 получила максимальные 10 баллов по CVSS и позволяет злоумышленнику без аккаунта выполнить произвольный код на сервере GitLab. Аналитики BI.ZONE WAF рассказывают, как устроена уязвимость и что сделать, чтобы закрыть ее
23 октября 2026 г.

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

21 октября GitLab выпустила исправления и рекомендовала немедленно обновить self‑managed‑инсталляции. Уязвимость в облачных GitLab.com и GitLab Dedicated компания исправила на своей стороне, действий от пользователей не требуется.

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

Корень проблемы — в движке регулярных выражений Onigmo, который Ruby использует внутри себя, а GitLab поставляет в комплекте.

GitLab умеет отображать в вебе файлы формата Emacs Org‑mode (.org). При рендеринге такого файла одно из его ключевых слов попадает в регулярное выражение без фильтрации. Если выражение содержит слишком много повторов, внутренний счетчик движка переполняется: переполнение начинается после 32 767 повторов — это предел знакового 16‑битного счетчика (CWE‑190). Из‑за переполнения движок начинает писать за границами выделенной области памяти (CWE‑787), и эту порчу памяти удается довести до выполнения произвольного кода.

Полезная нагрузка прячется в строках #+TODO:, #+SEQ_TODO: и #+TYP_TODO: — именно там Org‑mode задает регулярное выражение, в которое можно заложить аномально большое число повторов.

Как эксплуатируется

Атака состоит из двух шагов и не требует аутентификации:

  1. Злоумышленник размещает вредоносный .org‑файл. Достаточно публичного проекта, вход в систему не нужен.
  2. Злоумышленник инициирует рендеринг этого файла. В итоге запускается уязвимый движок регулярных выражений.
Какие версии уязвимы

Затронуты self‑managed‑инсталляции GitLab Community Edition (CE) и Enterprise Edition (EE).

В таблице приведены исправленные версии, и уязвимы все версии ниже указанных.

Ветка Версия с исправлением
До 19.0

18.11.13

19.0.x

19.0.10

19.1.x

19.1.9

19.2.x

19.2.9

19.3.x

19.3.6

19.4.x

19.4.3

19.5.x

19.5.1

Для версий 18.10 и ниже отдельного исправления нет — нужно идти по штатному пути обновления до 18.11.13 или новее.

Как защититься
  • Обновите GitLab до исправленной версии: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 или 18.11.13.
  • Разверните штатные детектирующие правила GitLab для Sigma: Onigmo native worker crash и Org mode render error burst.
  • Добавьте в WAF или IDS правило на аномально длинные, многократно повторяющиеся конструкции в строках #+TODO:, #+SEQ_TODO: и #+TYP_TODO: внутри .org‑файлов.
  • Ограничьте сетевой доступ к GitLab через VPN или белый список, если публичная доступность сервиса не нужна.

Пользователям BI.ZONE WAF уже доступны правила, которые предотвращают попытки эксплуатации.