VMTech
Обсудить проект

Служебный email GitLab позволяет отправлять коммиты от имени пользователя

Служебный email GitLab позволяет отправлять коммиты от имени пользователя

Исследователи Aikido Security обнаружили, что персональный адрес GitLab для создания задач по email может использоваться как учётные данные: владелец такого адреса способен отправить патч, создать коммит от имени пользователя в доступной ему ветке, включая main, и запустить задания CI/CD с его правами.

GitLab показывает этот адрес в функции Email work item to this project. Внутренняя часть адреса содержит токен, связанный с учётной записью. Документация GitLab указывает, что он не имеет срока действия. Письмо на этот адрес создаёт задачу в проекте от имени владельца токена, при этом GitLab не проверяет, с какого почтового ящика отправлено сообщение.

Один токен для доступных проектов

По данным Aikido Security, адреса, созданные для разных проектов одного пользователя, содержат один и тот же токен. Он действует для всех проектов, к которым у аккаунта есть доступ, включая публичные и приватные. Для атаки на конкретный проект также требуются его путь и числовой ID; для публичных репозиториев эти сведения доступны открыто.

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

Возможный запуск CI/CD и обход ограничений

При наличии у пользователя прав на запись в ветку изменения могут попасть и в main. Если приложенный патч меняет файл .gitlab-ci.yml и роль владельца позволяет такую операцию, GitLab запускает задание CI/CD с его полномочиями. Сам merge request нельзя направить в копию проекта, контролируемую атакующим, поэтому исполняемый код в описанном сценарии доставляется именно приложенным патчем.

Масштаб последствий зависит от роли скомпрометированного аккаунта. Токен пользователя с ролью Guest почти не даёт возможностей, тогда как токен Maintainer может открыть доступ к защищённым веткам и секретам CI/CD. Входящая почта не подпадает под IP-ограничения и работает без двухфакторной аутентификации. Aikido Security проверила это на приватном проекте с доступом только с одного IP: браузер и git clone блокировались, но письмо с merge request было принято, а коммит оказался в main.

Что можно сделать

GitLab.com включает входящую почту по умолчанию; функция также доступна на self-managed-инстансах при включённой настройке. GitLab Dedicated, по описанию Aikido Security, не затронут, однако исследователи не смогли проверить это непосредственно. Индивидуального переключателя для запрета создания задач и merge request по email нет.

Пользователь может отозвать скомпрометированный адрес, сбросив токен входящей почты на странице персональных access tokens: после этого все ранее выданные проектные адреса перестанут работать. Aikido Security советует проверить README, руководства для участников и страницы поддержки на опубликованные адреса. Администратор self-managed GitLab может отключить incoming email для всего инстанса.

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

#gitlab#devsecops#supplychain#cicd
Открытая аналитика
На сайте 0 просмотров
мин чтения 4 23.09.2026
Instagram

Служебный email GitLab позволяет отправлять коммиты от имени пользователя

Открыть публикацию в Instagram ↗