Утёкший почтовый адрес GitLab позволяет вносить код и запускать CI/CD от чужого имени

Изображение: OpenAI
Личный адрес, который GitLab выдаёт для создания задач по почте, на деле работает как бессрочный токен доступа: узнавший его может письмом внести коммит в любую ветку, куда владелец вправе отправлять изменения, включая main, и запустить задания CI/CD от его имени. Об этом сообщает The Hacker News со ссылкой на исследование Aikido Security.
GitLab не проверяет, кто отправил письмо, а токен в середине адреса, согласно документации, не истекает. Адрес выглядит привязанным к одному проекту, но токен у всех адресов пользователя общий и действует во всех проектах, открытых его учётной записи, публичных и закрытых. На входящую почту не распространяются ни ограничения по IP, ни обязательная двухфакторная аутентификация: в эксперименте Aikido закрытый проект, доступный с единственного IP-адреса, не пустил исследователей через браузер и отказал в клонировании, но принял письмо, и коммит попал в main.
Для атаки используется штатная функция создания merge request по почте, и достаточно заменить в адресе суффикс -issue на -merge-request, указать ветку в теме письма и приложить патч. GitLab применит его, при необходимости создаст ветку, а если патч меняет .gitlab-ci.yml и роль владельца это позволяет, запустит задание злоумышленника. Последствия зависят от роли, ведь адрес учётной записи с ролью Guest почти бесполезен, а с ролью Maintainer открывает защищённые ветки и секреты CI/CD.
Чтобы добраться до конкретного проекта, помимо токена нужны его путь и числовой идентификатор. У публичных проектов они открыты, для закрытого нужна отдельная утечка, хотя идентификаторы проектов GitLab легко подобрать. Затронуты все учётные записи GitLab.com и самостоятельно развёрнутые инсталляции с включённой входящей почтой; GitLab Dedicated, по всей видимости, нет, но проверить это напрямую Aikido не смогла.
Отключить функцию для отдельного пользователя нельзя, но утёкший адрес можно обезвредить: сбросить токен входящей почты на странице персональных токенов доступа в профиле. После сброса меняются адреса всех проектов сразу, и старые перестают работать. Также нужно проверить README, руководства для участников и страницы поддержки на опубликованные адреса: Aikido нашла так около десятка действующих, в том числе в популярных открытых проектах. Администратор собственной инсталляции может отключить входящую почту целиком.
Aikido сообщила о проблеме через HackerOne в мае 2026 года, но обращение закрыли как предусмотренное поведение, и в июне компания завела в GitLab конфиденциальную заявку. GitLab после этого изменил описание токена, но не само поведение, а возможность принимать такие письма только с подтверждённого адреса владельца пока лишь рассматривается. По словам Aikido, в GitLab считают его обычным токеном и напоминают, что утечка любых учётных данных ведёт к плохим последствиям.



