Ad
Угрозы

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

Маша Даровская
By Маша Даровская , IT-редактор и автор
Критическую уязвимость GitLab начали использовать через два дня
Обложка © Anonhaven

Критическую уязвимость GitLab CVE-2026-19478 начали проверять в реальных атаках примерно через два дня после выхода исправления. Ошибка получила 9,4 балла из 10 по CVSS и позволяет удаленному злоумышленнику без учетной записи при определенных условиях менять или удалять публичные проекты и пользовательские данные через GraphQL.

GitLab закрыла проблему 17 августа в версиях 18.11.11, 19.0.8, 19.1.6 и 19.2.4. Компания выпустила исправления отдельным критическим релизом и призвала владельцев собственных установок обновиться немедленно. GitLab.com и GitLab Dedicated к моменту публикации бюллетеня уже работали на исправленных сборках.

19 августа компания watchTowr обнаружила первые попытки эксплуатации CVE-2026-19478 в своей сети серверов-приманок. Исследователи смогли воспроизвести ошибку еще раньше — в течение нескольких минут после ее раскрытия, имея только бюллетень GitLab и изменения в исправленном коде.

Сейчас нет публичных данных о количестве реально взломанных GitLab-серверов или пострадавших организаций. Наблюдения watchTowr подтверждают появление попыток эксплуатации в интернете, но сами по себе не доказывают массовую успешную кампанию.

CVE-2026-19478 находится в обработке GraphQL-запросов GitLab. GraphQL — интерфейс программирования, через который клиент может одним запросом получить или изменить необходимые ему данные. Помимо полей запроса, GraphQL поддерживает директивы — дополнительные инструкции, влияющие на его обработку.

GitLab использует собственную директиву @gl_introduced. Она появилась для совместимости разных версий интерфейса и серверной части. Если новый интерфейс обращается к GraphQL-полю, которого еще нет на старом сервере, директива позволяет корректно обработать такую ситуацию вместо ошибки всего запроса. Сам механизм GitLab публично описывала еще при его разработке в 2025 году.

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

В реестре NVD проблема классифицирована как CWE-94 — недостаточный контроль формирования кода. При этом CVE-2026-19478 не стоит автоматически называть удаленным выполнением произвольного кода на сервере: официально подтвержденное GitLab воздействие — изменение или удаление публичных проектов и пользовательских данных.

Для атаки не нужны учетные данные или действия жертвы. Вектор CVSS указывает сетевую атаку, низкую сложность эксплуатации, отсутствие необходимых привилегий и взаимодействия с пользователем. Основной ущерб приходится на целостность и доступность данных.

watchTowr после воспроизведения ошибки проверила, что можно сделать через нее на практике. Исследователи продемонстрировали удаление репозитория, блокировку сопровождающего проекта и создание ложной записи о слиянии изменений. Эти действия можно провести без авторизации одним специально сформированным HTTP-запросом.

Слияние, или merge, фиксирует включение изменений из одной ветки в другую. История таких операций используется разработчиками при проверке кода, разборе инцидентов и аудите выпуска программ.

Уязвимость позволяет создать запись, из которой следует, что определенное изменение было слито, хотя в действительности оно в код не попало. watchTowr приводит сценарий, при котором журнал может показывать, будто исправление уязвимости уже применено, хотя этого не произошло.

Сейчас подтверждено, что исследователи воспроизвели возможность, а сеть приманок заметила эксплуатационные запросы. Публичных отчетов о реальных атаках с подделкой истории merge пока нет.

GitLab выпустила исправления 17 августа. Первоначальный бюллетень не содержал информации об эксплуатации в реальных атаках. В данных NVD от того же дня CISA также отмечала состояние exploitation как none — это отражало ситуацию именно на момент публикации CVE.

Ситуация изменилась уже 19 августа. watchTowr сообщила SecurityWeek, что сеть приманок зафиксировала первые запросы, направленные на использование CVE-2026-19478. Таким образом, между раскрытием уязвимости и обнаружением эксплуатации прошло примерно двое суток.

The Hacker News опубликовал данные об активной эксплуатации 21 августа. Исследователи рекомендовали владельцам непропатченных серверов искать в журналах запросы, содержащие @gl_introduced.

watchTowr использовала Project Red — собственную агентную систему, которая автоматически анализирует недавно опубликованные уязвимости и пытается воспроизвести их в контролируемой среде.

Компания утверждает, что для CVE-2026-19478 системе хватило публичного бюллетеня и изменений, которые GitLab внесла в исходный код при исправлении. Рабочее воспроизведение появилось в течение нескольких минут.

Project Red работает не полностью без контроля людей. watchTowr описывает процесс так: агент анализирует изменения, воспроизводит уязвимость на исправленной и неисправленной версиях, после чего результат проходит автоматические проверки и проверку исследователем перед использованием в рабочих системах.

Причина быстрого воспроизведения связана с открытой моделью разработки GitLab. Исходный код проекта доступен публично. После выпуска исправления исследователь может сравнить старую и новую реализации и увидеть, какие участки разработчики изменили.

Отдельные элементы механизма @gl_introduced были известны еще до появления CVE. GitLab создала директиву для работы разных версий GraphQL-клиента и сервера: поля, отсутствующие в старой версии, должны были безопасно заменяться пустым результатом.

Технические разборы CVE показывают, что слабым местом стала именно запасная обработка таких полей. До исправления созданное на лету GraphQL-поле не получало безопасный обработчик, из-за чего библиотека GraphQL могла обратиться к одноименному методу объекта GitLab. После исправления используется отдельный обработчик, который не допускает такого поведения.

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

CVE-2026-19478 затрагивает GitLab Community Edition и Enterprise Edition начиная с версии 18.2.

Уязвимы все версии от 18.2 до 18.11.10 включительно, ветка 19.0 до 19.0.7, 19.1 до 19.1.5 и 19.2 до 19.2.3. Исправление вошло в 18.11.11, 19.0.8, 19.1.6 и 19.2.4.

Владельцам старых выпусков 18.x недостаточно искать патч внутри своего прежнего минорного релиза. GitLab указывает безопасной версией для этой линии 18.11.11, поэтому такие установки придется обновлять до поддерживаемой исправленной ветки.

Тип установки роли не играет. GitLab отдельно поясняет: если в бюллетене не указан конкретный вариант развертывания, проблема относится ко всем способам установки продукта.

GitLab.com и GitLab Dedicated уже обновлены компанией. Рекомендация касается прежде всего GitLab Self-Managed — серверов, которые организации администрируют самостоятельно.

Для CVE-2026-19478 особенно опасны собственные GitLab-инстансы, доступные напрямую из интернета и содержащие публичные проекты.

Атака не требует входа в систему. Это убирает один из обычных барьеров: злоумышленнику не нужно предварительно красть пароль, токен API или пользовательскую сессию.

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

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

watchTowr советует искать в журналах веб-сервера запросы с @gl_introduced и затем разбирать их на признаки сканирования или эксплуатации.

Отдельно стоит проверить неожиданные удаления или изменения публичных проектов, операции с участниками и правами сопровождающих, а также расхождения между историей слияний и фактическими коммитами в ветках.

Специалисты Open Science Grid в своем предупреждении рекомендуют сохранять и анализировать журналы самого GitLab, обратного прокси и веб-защитного экрана за период до обновления. Если патч пока установить невозможно, организация советует полностью ограничить доступ к уязвимой системе до обновления.

The Hacker News приводит более мягкие временные варианты от исследователей: ограничить неавторизованный доступ к /api/graphql или убрать публичный доступ к репозиториям. Это сторонние меры снижения риска, а не официальный заменитель патча от GitLab.

Релиз от 17 августа исправил и вторую уязвимость — CVE-2026-19650 с оценкой 7,1 балла. Она затрагивает обработчик групповых GraphQL-запросов. Ошибка проверки входящего запроса могла позволить неавторизованному злоумышленнику выполнять операции изменения данных через GET-запрос. Для успешной атаки требуется взаимодействие с пользователем, поэтому CVSS ниже — 7,1.

Диапазоны затронутых версий совпадают с CVE-2026-19478, исправления также находятся в 18.11.11, 19.0.8, 19.1.6 и 19.2.4.

Данных об эксплуатации CVE-2026-19650 в нынешней серии атак нет.

Вопросы и ответы

Что такое CVE-2026-19478?

Это критическая ошибка в обработке GraphQL в GitLab CE и EE. При определенных условиях неавторизованный удаленный пользователь может менять или удалять публичные проекты и пользовательские данные. Уязвимость получила 9,4 балла по CVSS.

Уязвимость позволяет выполнить произвольный код на сервере GitLab?

Такой эффект официально не заявлен. CVE относится к категории CWE-94, но подтвержденное воздействие связано с вызовом нежелательных операций над объектами GitLab и изменением данных. Называть ее полноценным удаленным выполнением команд на сервере некорректно.

Ее действительно уже используют?

watchTowr обнаружила попытки эксплуатации в своей сети серверов-приманок 19 августа, примерно через два дня после выхода патча. Публичного числа успешно взломанных организаций нет.

Что может сделать злоумышленник?

GitLab подтверждает возможность изменения и удаления публичных проектов и пользовательских данных. watchTowr дополнительно воспроизвела удаление целого репозитория, подделку записи о слиянии и блокировку сопровождающего проекта.

Какие версии нужно обновить?

Исправления находятся в GitLab 18.11.11, 19.0.8, 19.1.6 и 19.2.4. Затронуты версии начиная с 18.2 до соответствующих исправленных выпусков.

GitLab.com тоже находится под угрозой?

GitLab.com и GitLab Dedicated уже переведены на исправленные версии. Пользователям этих сервисов не требуется самостоятельно устанавливать обновление.

Как искать следы атаки?

watchTowr рекомендует проверить веб-журналы на запросы с @gl_introduced. Одного совпадения недостаточно для подтверждения взлома: директива используется и самим GitLab. Подозрительные обращения нужно сопоставлять с источником, авторизацией и последующими изменениями проектов.

Правда ли, что ИИ сделал эксплойт за несколько минут?

Агентная система Project Red компании watchTowr действительно воспроизвела уязвимость в течение нескольких минут, используя публичный бюллетень и изменения в патче. Это не доказывает использование ИИ теми, кто позднее атаковал серверы-приманки.

Есть новость? Станьте автором.

Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.