Адрес для писем в GitLab может позволить отправлять код от имени пользователя

Адрес для писем в GitLab может позволить отправлять код от имени пользователя

Изображение: OpenAI

The Hacker News сообщил о выводах Aikido Security: специальный адрес для писем в GitLab может позволить постороннему отправлять код и запускать задания CI/CD от имени владельца аккаунта. GitLab не проверяет, с какого почтового ящика пришло сообщение, а связанный с адресом токен, по документации компании, не истекает.

GitLab показывает пользователю адрес для отправки писем в проект: такие сообщения создают задачи от его имени. Однако, как выяснила Aikido Security, токен в адресах одного пользователя одинаков для разных проектов и действует во всех проектах, к которым у этого аккаунта есть доступ, включая публичные и закрытые.

Aikido продемонстрировала отправку кода через функцию создания merge request по электронной почте. Если письмо содержит патч, GitLab применяет его к указанной ветке и при необходимости создаёт эту ветку; коммит оформляется от имени пользователя. Когда у него есть право отправлять изменения в ветку main, таким способом можно изменить и её.

Если патч меняет файл .gitlab-ci.yml, а роль пользователя это позволяет, GitLab запускает задание CI злоумышленника от его имени. Доступ ограничен разрешениями владельца адреса: например, роль Maintainer может дать доступ к защищённым веткам и секретам CI/CD, тогда как возможности учётной записи Guest значительно меньше.

Для обращения к конкретному проекту злоумышленнику нужны его путь и числовой идентификатор наряду с токеном. Aikido проверила сценарий на закрытом проекте, доступ к которому ограничили одним IP-адресом: GitLab отклонил подключение через браузер и попытку клонирования репозитория, но принял письмо с merge request и добавил коммит в main. В документации GitLab также указано, что для функций входящей почты не действуют ограничения по IP и требования двухфакторной аутентификации.

Адреса есть у аккаунтов GitLab.com и у пользователей самостоятельных инсталляций, где включена входящая почта; на GitLab.com она включена по умолчанию. Чтобы заменить раскрытый адрес, пользователь может сбросить токен на странице персональных токенов в профиле: это одновременно изменит адреса для всех проектов, а прежние перестанут работать. Администратор самостоятельной инсталляции может отключить входящую почту целиком; настройки для отключения этой функции только у отдельного пользователя нет.

Сергей
Автор: Сергей
Пишу о кибербезопасности и информационных технологиях на простом и понятном языке
Комментарии:

Как мы обрабатываем данные: политика обработки персональных данных