GitLab экстренно исправила критическую уязвимость: неавторизованные атаки удаляют проекты

GitLab экстренно исправила критическую уязвимость: неавторизованные атаки удаляют проекты

Вчера компания GitLab экстренно выпустила патч для четырёх версий своей платформы, чтобы закрыть две критические уязвимости в GraphQL API. Главная из них — CVE-2026-19478 с оценкой CVSS 9.4 — позволяет неавторизованным злоумышленникам удалять или изменять публичные проекты и пользовательские данные без малейшей учётной записи. Этот релиз стал исключением из правил: обычно GitLab накапливает исправления до очередного планового обновления, но в этот раз разработчики сочли ситуацию настолько опасной, что выпустили патч всего через пять дней после предыдущего. Такой шаг говорит сам за себя — риск эксплуатации в реальных атаках посчитали критичным для пользователей платформы.

Уязвимость связана с неправильной обработкой директив в GraphQL-запросах, например @include или кастомных конструкций, которые модифицируют выполнение запроса. Из-за ошибки в валидации таких директив можно было обойти проверки авторизации и выполнить мутации над публичными ресурсами от имени анонимного пользователя. По данным GitLab, атака выполняется удалённо по сети без каких-либо привилегий или действий со стороны жертвы. Последствия эксплуатации могут быть разрушительными: порча или удаление данных, нарушение целостности и доступности проектов, при этом конфиденциальность информации не страдает. В реальных условиях это означало бы, что любой злоумышленник с доступом к публичному GraphQL-эндпоинту инстанса мог бы удалить или исказить данные без последствий для своей анонимности.

Вторая уязвимость, CVE-2026-19650 с оценкой CVSS 7.1, хоть и уступает по критичности, но тоже представляет серьёзную угрозу. Она связана с CSRF (межсайтовой подделкой запроса) в обработчике multiplex-запросов GraphQL. Из-за неправильной валидации таких запросов GraphQL-мутации можно было выполнять через GET-запросы. Это особенно опасно, потому что GET-запросы часто не блокируются стандартными системами защиты от CSRF, так как по спецификации HTTP считаются безопасными и идемпотентными. Для эксплуатации этой уязвимости атакующему всё же требуется взаимодействие со стороны жертвы — она должна перейти по вредоносной ссылке или открыть страницу, содержащую подготовленный запрос. Из браузера жертвы уходит GET-запрос с мутацией, авторизованный её текущей сессией. Это снижает риск, но не исключает его полностью, особенно если в организации есть активные пользователи с доступом к критичным проектам.

Обе уязвимости обнаружены в рамках программы багбаунти GitLab на платформе HackerOne. Первую нашёл исследователь под ником hiimguardian, вторую — kreep. На момент публикации представители компании не зафиксировали подтверждённых случаев эксплуатации в реальных атаках, однако стандартная практика предполагает раскрытие технических деталей примерно через 90 дней — ориентировочно в ноябре 2026 года. Это сделано для того, чтобы у организаций оставалось время на установку патча до появления рабочего эксплойта. Учитывая низкий порог эксплуатации, особенно для CVE-2026-19478, сканеры уязвимостей и автоматизированные боты могут начать атаки в течение нескольких дней после релиза патча.

Для администраторов self-managed инсталляций GitLab Community Edition и Enterprise Edition обновление до версий 18.11.11, 19.0.8, 19.1.6 или 19.2.4 должно быть приоритетом. Пользователи GitLab.com могут не беспокоиться — фикс уже применён на стороне провайдера. Если обновление по каким-либо причинам отложено, эксперты рекомендуют временно ограничить доступ к GraphQL API для анонимных запросов через WAF или reverse proxy. Также стоит проанализировать логи GraphQL API на наличие аномальных мутаций от неавторизованных клиентов за период с момента появления уязвимого кода. В условиях роста числа ИИ-агентов и автоматизированных ботов, специализирующихся на эксплуатации уязвимостей, своевременное обновление и мониторинг становятся ключевыми мерами защиты.