Частни имейл адреси в GitLab, които позволяват на разработчиците да изпращат проблеми (issues) или задачи към даден проект, биват умишлено разкривани в README файлове, ръководства за сътрудничество и страници за поддръжка, използвани за събиране на доклади за грешки.

Адресите са част от вградена функция на GitLab, наречена „Email work item to this project“, и съдържат дълготраен токен, свързан с акаунта на разработчика.

Тези адреси се генерират автоматично и съдържат низ, който служи като идентификационни данни за създаване на работни елементи чрез имейл. Когато външен клиент изпрати съобщение до един от тях, GitLab го обработва и превръща в проблем или задача по проекта.

Изследователи от компанията за сигурност на приложения Aikido откриха множество частни адреси в GitLab, изложени на показ в публична документация, и предупреждават за свързания с това риск.

Атакуващ би могъл да ги използва, за да компрометира GitLab акаунти в атаки, които качват код към защитени клонове на частни хранилища, крадат изходен код, събират тайни от CI/CD променливи или достъпват поверителни проблеми.

Всеки от тези частни адреси в GitLab съдържа низ „glimt-“, който действа като идентификационни данни за достъп до проекта и се запазва във всички подобни адреси, генерирани за съответния проект.

„Променете наставката -issue в имейл адреса на -merge-request и GitLab ще отвори заявка за сливане (merge request)“, казват от Aikido.

Swap
Промяна на имейл адресаИзточник: Aikido

Атакуващ, който знае този адрес или може да го извлече, би могъл да промени наставката „-issue“ на „merge-request“ и GitLab ще я приеме, отваряйки заявка за сливане в проекта.

„По принцип проверката дали адресът на подателя съвпада с имейла на собственика на токена би добавила слой на защита, но GitLab не прави това (въпреки че в момента го обмислят)“, казват изследователите.

„Всяка пощенска кутия в интернет може да изпраща до този адрес и GitLab обработва съобщението като собственика на токена.“

Освен това тестовете на Aikido показват, че атаката заобикаля и ограниченията по IP адрес.

Полученото ниво на достъп зависи от правата на акаунта на потребителя и може да позволи промени в кода, изпълнение на CI/CD, достъп до частни хранилища, тайни и т.н.

Изследователите отбелязват, че освен ограничението на правата, което не може да бъде заобиколено, на атакуващия са му необходими също пътя и ID на целевия проект.

При публичните проекти тази информация е публично достъпна, докато при частните проекти ID-то може да бъде открито чрез груба сила (brute-force), но пътят ще трябва да бъде изтекъл.

GitLab предупреждава в своята документация за последиците за сигурността от разкриването на тези адреси, като заявява, че те са частни и „генерирани само за вас“.

„Пазете го за себе си, защото всеки, който го знае, може да създава проблеми или заявки за сливане, сякаш сте вие. Ако подозирате, че този частен имейл адрес е изтекъл, веднага нулирайте токена“, предупреждава GitLab.

Разкрити частни имейл адреси

В рамките на един следобед изследователите от Aikido откриха дузина активни имейл адреси за входящи съобщения в GitLab в публични README файлове, ръководства за сътрудничество и страници за поддръжка.

Изследователите казват, че тези адреси са били умишлено включени в публична документация, за да се изпращат доклади за грешки до поддържащите проекта (maintainers).

В много случаи излагането е засегнало популярни проекти с отворен код, създавайки рискове за веригата на доставки за големи потребителски бази. „Няколко от тях принадлежаха на много популярни проекти с отворен код“, казват изследователите.

От Aikido заявяват, че са съобщили за проблема на GitLab чрез HackerOne през май, но от GitLab са го затворили като „поведение по дизайн“.

Компанията последва с второ известие през юни, което накара GitLab да актуализира своя потребителски интерфейс, за да спомене заявките за сливане, да премахне неверни твърдения относно достъпа до данни на токена и да документира, че входящите имейли заобикалят IP ограниченията.

Поддържащите проекти трябва да спрат доброволно да разкриват тази информация в публична документация и да нулират токените за проекти, които са били изложени по този начин в миналото.