Критическая уязвимость в GitLab (CVE-2026-19478)
Введение
В GitLab обнаружена критическая уязвимость CVE-2026-19478, позволяющая неавторизованному злоумышленнику удалённо изменять или удалять общедоступные проекты и пользовательские данные.
Проблема связана с обработкой специальных директив в GraphQL API GitLab. В определённых условиях сервер неправильно проверяет права доступа к операциям, которые должны быть доступны только авторизованным пользователям.
Уязвимость получила оценку 9.4 из 10 по CVSS 3.1 и особенно опасна для самостоятельно установленных экземпляров GitLab, доступных из Интернета.
Что произошло
GitLab предоставляет GraphQL API для выполнения запросов и изменения данных. В отличие от обычных запросов к веб-интерфейсу, GraphQL позволяет клиенту отправлять структурированные операции, описывающие необходимые действия с объектами GitLab.
Проблема CVE-2026-19478 связана с одной из специальных директив GraphQL.
Из-за ошибки в механизме проверки прав доступа сервер в определённых случаях может обработать такую операцию без предварительной проверки того, имеет ли пользователь необходимые права.
Что может сделать злоумышленник
После успешной эксплуатации атакующий получает возможность выполнять операции с общедоступными объектами GitLab.
- изменять содержимое общедоступных проектов;
- удалять общедоступные проекты;
- изменять пользовательские данные;
- удалять пользовательские данные;
- выполнять эти действия без предварительной аутентификации.
Пример эксплуатации
Для проверки наличия проблемы в реальной системе лучше использовать безопасный запрос, не изменяющий данные, а не воспроизводить удаление проекта.
Например, исследовательский запрос может выглядеть как обычная GraphQL-операция:
query {
projects(first: 1) {
nodes {
id
name
}
}
}
Сам по себе такой запрос не является эксплуатацией уязвимости. Он показывает лишь то, что GraphQL API принимает запрос без обычного интерфейса GitLab.
Суть CVE-2026-19478 находится дальше: специальным образом сформированная GraphQL-операция позволяет добраться до операций изменения данных, которые должны быть защищены проверкой прав.
Поэтому не стоит использовать удаление реального проекта в качестве проверки. Для лабораторного воспроизведения лучше создать отдельный тестовый экземпляр GitLab и использовать исключительно тестовые данные.
Аутентификация при эксплуатации не требуется.
Уязвимость особенно опасна для самостоятельно установленных экземпляров GitLab, доступных из Интернета. Злоумышленнику не требуется учётная запись в системе, чтобы отправлять запросы к уязвимому GraphQL API.
Почему это опасно
GitLab часто является центральной системой разработки компании. В нём могут находиться исходный код, задачи, настройки проектов, документация и другая важная информация.
Удаление общедоступного проекта само по себе уже может привести к серьёзным последствиям. Кроме того, изменение данных может использоваться для подмены информации в проекте или нарушения рабочих процессов.
При этом CVSS 9.4 обусловлен сочетанием нескольких факторов:
- атака выполняется удалённо;
- не требуется сложная подготовка;
- не требуется учётная запись;
- не требуется участие пользователя;
- возможны изменения данных;
- возможна их потеря.
Если используется самостоятельно установленный GitLab, рекомендуется как можно скорее обновить его до исправленной версии:
- 18.11.11 и новее;
- 19.0.8 и новее;
- 19.1.6 и новее;
- 19.2.4 и новее.
После обновления рекомендуется дополнительно проверить журналы GitLab на подозрительные обращения к GraphQL API, особенно если экземпляр был доступен из Интернета до установки исправления.
Проверка системы
Версию установленного GitLab можно посмотреть в веб-интерфейсе:
Справка → О GitLab
Для серверной установки также можно использовать:
sudo gitlab-rake gitlab:env:info
В выводе найдите текущую версию GitLab и сравните её с исправленными версиями.
Например:
GitLab version: 19.2.3
Такая версия уязвима.
Версия:
GitLab version: 19.2.4
уже содержит исправление.
Кого затрагивает уязвимость
CVE-2026-19478 затрагивает GitLab Community Edition (CE) и Enterprise Edition (EE) в уязвимых версиях.
При этом владельцам GitLab.com и GitLab Dedicated самостоятельно устанавливать обновление не требуется: эти сервисы работают на исправленных версиях.
Дополнительно
CVE-2026-19478 представляет собой особенно неприятный сценарий для GitLab: удалённый злоумышленник без учётной записи может воздействовать на данные через GraphQL API.
Главная проблема для администраторов заключается не только в высокой оценке CVSS 9.4, но и в отсутствии требования к аутентификации. Если GitLab доступен из Интернета и работает на уязвимой версии, обновление стоит выполнить в первую очередь.
