12 августа 2026 года GitLab выпустил внеплановые патчи для Community Edition и Enterprise Edition — версии 19.2.2, 19.1.4 и 19.0.6. Всего закрыто 13 уязвимостей: шесть с высокой степенью критичности, шесть средних и одна низкая. Разработчики настоятельно рекомендуют администраторам обновиться до актуальной версии как можно скорее.
Важный момент. Если вы используете GitLab.com, то можно выдохнуть, так как платформа уже пропатчена. Клиентам GitLab Dedicated тоже можно не переживать. А вот всем, кто держит GitLab на своей инфраструктуре, стоит запланировать апдейт в ближайшее окно обслуживания. Особенно если учесть, что часть уязвимостей тянется из версий 2-3-летней давности, а одна восходит аж к GitLab 12.0.
Все 13 уязвимостей одним списком
| CVE | Компонент | Критичность | CVSS | Затронутые версии |
| CVE-2026-15217 | Analytics Dashboards, table field config (XSS) | Высокая | 8.7 | 18.2 – до 19.0.6 / 19.1.4 / 19.2.2 |
| CVE-2026-15216 | Analytics Dashboards, pagination controls (XSS) | Высокая | 8.7 | 18.2 – до 19.0.6 / 19.1.4 / 19.2.2 |
| CVE-2026-15423 | CI/CD pipeline API, обход авторизации | Высокая | 8.5 | 19.0 – до 19.0.6 / 19.1.4 / 19.2.2 |
| CVE-2026-19228 | Duo Workflow Service, обход авторизации | Высокая | 8.5 | 19.1 – до 19.1.4 / 19.2.2 |
| CVE-2026-16627 | CI manual job confirmation modal (XSS) | Высокая | 7.7 | 19.2 – до 19.2.2 |
| CVE-2026-16494 | ProjectsController, missing authorization | Высокая | 7.1 | 19.1 – до 19.1.4 / 19.2.2 |
| CVE-2026-7427 | GraphQL API JSON parser (DoS) | Средняя | 5.3 | 18.5 – до 19.0.6 / 19.1.4 / 19.2.2 |
| CVE-2026-6821 | Merge Requests API, missing authorization | Средняя | 4.3 | 12.0 – до 19.0.6 / 19.1.4 / 19.2.2 |
| CVE-2026-4879 | External status check API, missing authorization | Средняя | 4.3 | 16.0 – до 19.0.6 / 19.1.4 / 19.2.2 |
| CVE-2026-8667 | npm dist-tags endpoint, incorrect authorization | Средняя | 4.3 | 17.6 – до 19.0.6 / 19.1.4 / 19.2.2 |
| CVE-2026-18244 | GitLab Duo settings page, missing authorization | Средняя | 4.3 | 17.7 – до 19.0.6 / 19.1.4 / 19.2.2 |
| CVE-2026-18433 | AI Tool Rules GraphQL resolver, incorrect authorization | Средняя | 4.3 | 19.1 – до 19.1.4 / 19.2.2 |
| CVE-2025-9486 | Custom roles, incorrect privilege assignment | Низкая | 3.3 | 15.6 – до 19.0.6 / 19.1.4 / 19.2.2 |
Все уязвимости найдены и переданы GitLab через программу bug bounty на HackerOne, за исключением CVE-2026-19228 и CVE-2026-18244 — их обнаружила внутренняя команда безопасности GitLab.
Три XSS-уязвимости, которые бьют по самому чувствительному месту — доверенным пользователям
CVE-2026-15216 и CVE-2026-15217 (CVSS 8.7 каждая, вектор AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N) — обнаружены в Analytics Dashboards. Первая в конфигурации полей таблицы, вторая — в элементах пагинации. Причина относительно классическая для XSS: GitLab недостаточно тщательно очищал пользовательские данные перед рендерингом в этих компонентах. Обе требуют от атакующего низкого уровня прав (PR:L) и взаимодействия жертвы (UI:R) — то есть нужен пользователь, уже имеющий доступ к проекту, и атакуемый, который откроет зараженный дашборд. Диапазон затронутых версий широкий — от 18.2 и до соответствующих патч-релизов.
CVE-2026-16627 (CVSS 7.7, AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:N) — уязвимость в модальном окне подтверждения ручного запуска CI-джобы, актуальна только для линейки 19.2.x (до 19.2.1 включительно). Из-за непросанитайзенного HTML, рендерящегося в модалке, пользователь с ролью developer мог эскалировать привилегии. Обратите внимание на AC:H в векторе — эксплуатация технически сложнее, чем у двух предыдущих XSS, но целью здесь становится пользователь, который просматривает и подтверждает CI/CD-джобы, то есть зачастую мэйнтейнер или выше. Это хороший пример того, как UI-уязвимость превращается в полноценную эскалацию привилегий, если атака нацелена на привилегированный процесс ревью.
Обход прав в CI/CD API — угроза для защищенных веток
CVE-2026-15423 (CVSS 8.5, AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:N) — некорректная валидация ссылки на пайплайн позволяла пользователю с ролью developer запускать пайплайны на защищенной ветке без прав на пуш в нее. Затронуты версии от 19.0 до соответствующих патчей, то есть баг относительно свежий.
Защищенные ветки обычно используются для продакшен-кода, релизов и критичных к вопросам ИБ-процессов. Несанкционированный запуск пайплайна на такой ветке потенциально затрагивает артефакты сборки, логику деплоя, CI-переменные (где нередко хранятся секреты) и в целом целостность цепочки поставок ПО.
Обход прав в Duo Workflow и ProjectsController (только Enterprise Edition)
CVE-2026-19228 (CVSS 8.5, AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:L) — обнаружена внутренней командой GitLab (Dennis Appelt). Уязвимость в Duo Workflow Service позволяла аутентифицированному пользователю из-за некорректной проверки identity-данных в запросах приписать использование ИИ-функций к чужому пространству имен (namespace). Формально утечки конфиденциальных данных здесь нет (C:N), но есть влияние на целостность биллинга/атрибуции использования (I:H) и частично на доступность (A:L) — для организаций, которые тарифицируют или лимитируют AI-функции по namespace, это реальная проблема учета.
CVE-2026-16494 (CVSS 7.1, AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L) — отсутствие проверки авторизации на одном из эндпоинтов обновления проекта в ProjectsController позволяло аутентифицированному пользователю менять настройки проекта, обычно доступные только более привилегированным ролям.
Шесть уязвимостей средней критичности
Медианные по CVSS, но каждая — самостоятельная проблема с авторизацией или доступностью:
- CVE-2026-7427 (CVSS 5.3) — неаутентифицированный DoS в парсере JSON GraphQL API из-за недостаточной валидации входных данных. Единственная в списке, эксплуатируемая без аутентификации вообще (PR:N);
- CVE-2026-6821 (CVSS 4.3) — отсутствие авторизации на одном из эндпоинтов Merge Requests API (EE) позволяло обойти ограничения доступа по IP и прочитать ограниченную информацию о merge request из приватного проекта. Примечательно, что баг тянется от GitLab 12.0, то есть теоретически присутствовал в продукте несколько лет;
- CVE-2026-4879 (CVSS 4.3) — отсутствие авторизации на эндпоинте Merge Request API позволяло пользователю с ролью developer видеть конфигурацию external status checks, предназначенную для более привилегированных ролей;
- CVE-2026-8667 (CVSS 4.3) — некорректная авторизация на npm dist-tags endpoint позволяла пользователю с ролью developer менять часть метаданных пакетного реестра без прав мэйнтейнера;
- CVE-2026-18244 (CVSS 4.3) — отсутствие авторизации на странице настроек GitLab Duo позволяло просматривать ограниченные конфигурационные параметры;
- CVE-2026-18433 (CVSS 4.3) — некорректная авторизация в GraphQL-резолвере AI Tool Rules позволяла читать политику конфигурации чужого namespace.
Низкая критичность, но полезно знать: pending membership и кастомные роли
CVE-2025-9486 (CVSS 3.3, AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:N) — некорректное назначение привилегий не учитывало статус членства пользователя: пользователь со статусом неподтвержденного приглашения (pending membership) мог получить права, предоставляемые кастомной ролью. Баг датируется версиями от 15.6 — если у вас активно используются кастомные роли и модерация приглашений в проекты/группы, стоит проверить историю изменений прав после обновления.
Технические детали апдейта: миграции и даунтайм
Патч включает миграции базы данных, и их набор отличается по версиям:
- Обычные миграции, выполняющиеся во время апдейта, есть в 19.2.2 и 19.0.6 (в 19.1.4 их нет);
- Post-deploy миграции, которые можно накатить уже после обновления, есть только в 19.2.2;
- Для single-node инсталляций это означает даунтайм: миграции должны завершиться до старта GitLab;
- Multi-node окружения могут обновиться без простоя при соблюдении процедуры zero-downtime upgrade из документации GitLab.
Еще один момент, который стоит держать в голове: GitLab публикует полные технические подробности каждой уязвимости в публичном issue tracker только через 90 дней после релиза, в котором она была закрыта. Это стандартная практика, которая дает компаниям время обновиться прежде, чем эксплойт станет тривиальным для воспроизведения по описанию бага.
Что делать сейчас
- Определите свою текущую ветку версии и обновитесь до соответствующего патча: 19.2.2, 19.1.4 или 19.0.6.
- Для single-node инсталляций закладывайте окно даунтайма — миграции должны завершиться до старта GitLab.
- Для multi-node — используйте zero-downtime upgrade.
- После обновления имеет смысл провести ревизию прав доступа к protected-веткам, CI-переменным и custom roles — именно в этих зонах найдены самые критичные и самые «долгоживущие» баги этого релиза.
Уязвимость в GitLab потенциально дает доступ не к одному сервису, а сразу ко всей цепочке поставки — поэтому патчинг подобных инструментов не стоит откладывать даже на короткий срок.