Единственная защита почтовых уведомлений GitLab — это их невидимость

Gitlab безопасность уязвимость Ci/cd токены репозитории csoonline.com

Уязвимость GitLab: секретный email-адрес для создания задач может дать полный доступ к репозиториям. Узнайте, как защитить свои проекты от утечки токенов и несанкционированного доступа.

Это должно было упростить жизнь: секретный адрес электронной почты, на который разработчики могут отправить сообщение и создать задачу в своем проекте GitLab. Но слабые настройки безопасности по умолчанию и долгоживущий токен, встроенный в адрес, означают, что любой, кто знает этот адрес, потенциально может изменять защищенные репозитории. Если владельцы проектов публикуют или раскрывают эти адреса, как это сделали некоторые, они становятся уязвимыми.

Адрес электронной почты, привязанный к проекту, предоставляемый GitLab в виде кнопки с надписью «Отправить рабочий элемент в этот проект», помимо своей основной функции, может разблокировать доступ ко всему аккаунту как в частных, так и в общедоступных проектах, как обнаружила компания Aikido Security. Эта функция включена для каждой учетной записи на GitLab.com и не может быть отключена; она также может быть включена для локально размещенных экземпляров GitLab.

«Любой, кто владеет этим адресом, может отправлять код и запускать задания CI/CD во всех проектах, к которым имеет доступ ваша учетная запись», — заявила компания по безопасности приложений в записи в блоге, описывающей ее выводы.

«Самая большая проблема существующей конструкции заключается в том, что любой, у кого есть учетная запись электронной почты, может отправить письмо на этот адрес и действовать как этот пользователь GitLab», — сказал Джозеф Леон, исследователь безопасности в Aikido, в интервью CSO. «Если бы GitLab требовал, чтобы адрес отправителя электронной почты совпадал с адресом электронной почты пользователя GitLab, большая часть риска была бы смягчена».

Ограничения по IP-адресам игнорируются

GitLab позволяет пользователям устанавливать ограничения на то, с каких IP-адресов может осуществляться доступ к их учетной записи, но эти ограничения не распространяются на электронные письма. «GitLab заблокировал наш браузер и отклонил команду git clone. Он принял электронное письмо, и коммит был отправлен в основную ветку», — сообщили в Aikido.

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

Уязвимые адреса имеют вид incoming+project-id-glimt-XXXXXXXXXXXXXX-issue@incoming.gitlab.com

Виновником является персональный токен доступа (PAT), начинающийся с префикса «glimt-», встроенный в адрес электронной почты, который GitLab хочет сохранить в тайне. «Держите этот токен в секрете. Любой, кто им владеет, может создавать задачи так, как будто это вы», — предупреждает GitLab через описание токена в пользовательском интерфейсе.

Aikido заявила, что описание добавляет, что токен «не может быть использован для доступа к каким-либо другим данным», что они считают неправдой. Пять разных проектов, принадлежащих одной и той же учетной записи, предоставляют пять разных частных адресов электронной почты, но «токен, встроенный в каждый из них, идентичен», — говорится в сообщении. Один и тот же токен используется для всей учетной записи, что делает компрометацию достижимой для каждого общедоступного или частного проекта в этой учетной записи.

Токен может быть использован не только для создания задачи в GitLab, такой как сообщение об ошибке или запрос функции. Просто изменив суффикс токена, можно обмануть GitLab, чтобы он открыл запрос на слияние (merge request).

Это позволило бы злоумышленнику отправить специально созданный патч, файл с набором изменений кода, и заставить GitLab выполнить контролируемый злоумышленником код в среде CI/CD проекта.

И запросы на слияние

После того как Aikido сообщила об этом GitLab, компания изменила описание в пользовательском интерфейсе, чтобы отразить, что токен позволяет создавать «задачи и запросы на слияние».

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

«Организационные последствия полностью зависят от существующих разрешений пользователя», — сказал Леон. «Если они могут отправлять код в основную ветку или запускать задания конвейера CI/CD в определенном проекте, адрес электронной почты наследует эти права, и последствия могут быть весьма серьезными».

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

Леон добавил, что вероятность утечки этих адресов электронной почты высока. «Я нашел дюжину или около того, выставленных в Интернете после нескольких часов поиска. Некоторые принадлежали популярным проектам с открытым исходным кодом, таким как wget2», — сказал он.

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

Эта статья впервые появилась на InfoWorld.

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

В тренде:


Похожие новости: