- PVSM.RU - https://www.pvsm.ru -

Вершим правосудие на GitHub, помечая мошенников с помощью граффити

Вершим правосудие на GitHub, помечая мошенников с помощью граффити - 1

Уже много лет опенсорсные проекты позволяют нам «украшать» графики активности на GitHub фальшивыми историями коммитов Git. Но знали ли вы, что подобные граффити можно также размещать в профилях других пользователей?

К примеру, в графиках активности нескольких фишеров я оставил вот такую «черную метку»:

Вершим правосудие на GitHub, помечая мошенников с помощью граффити - 2

В статье расскажу, как отметить профиль недобросовестного юзера таким граффити, чтобы другие пользователи GitHub знали, с кем имеют дело.

Итак, при помощи простого скрипта в графике активности на GitHub можно рисовать забавный пиксель-арт. Это возможно из-за отсутствия механизма валидации меток времени между Git и GitHub, а также из-за того, что даты коммитов Git можно указывать задним числом.

Вершим правосудие на GitHub, помечая мошенников с помощью граффити - 3

Еще один пример граффити

Механизм проверки соответствия между email-адресом в коммитах Git и email-адресом, связанным с аккаунтом на GitHub, работает по странному принципу. Можно подумать, что валидация вовсе отсутствует, но вот выдержка из документации по GitHub [1], которая объясняет, как определяется авторство коммитов:

Коммиты отображаются в графике, только если они отвечают всем из нижеперечисленных условий:

  • Адрес почты, использованный для коммитов, привязан к вашему аккаунту на Github;
  • Коммиты сделаны в отдельном репозитории, а не в форке;  
  • (…)

Кроме того, должно соблюдаться как минимум одно из следующих условий:

  • Вы один из соавторов репозитория или член организации, владеющей репозиторием;
  • Вы создали форк репозитория;
  • Вы открыли пулл-реквест или issue для репозитория.

Таким образом, чтобы вы могли завандалить чужой график коммитов, нужны всего три предпосылки:

  • Другой пользователь должен открыть issue или запушить код в репозиторий, в который вы тоже можете пушить код (или получить одобрение пулл-реквеста);
  • Вы должны знать почтовый адрес, который пользователь использовал для регистрации;
  • Репозиторий не должен быть форком.

Эта система прямо напрашивается на злоупотребления. По сути, кто угодно может самовольно разместить баннер размером 7x52 в профиле другого пользователя. Хуже того, жертва не сможет удалить эти коммиты. 

Как использовать эту силу во благо

В последнее время на GitHub фиксировались попытки фишинга через оставление комментариев в issues

Вершим правосудие на GitHub, помечая мошенников с помощью граффити - 4

«Новая методика угона учетных данных Github? Атакующий оставляет комментарий в открытом issue, надеясь убедить владельца репозитория, что поступившее ему письмо с уведомлением о комменте — это предупреждение системы безопасности, требующее смены пароля...»

Кроме того, на GitHub были случаи, когда хакеры внедряли в чужие проекты зловредный код при слиянии репозиториев — например, так спрятали бэкдор в коде XZ-Utils [2].

Встретив на просторах GitHub такого мошенника, вы можете предупредить других пользователей о его недобрых намерениях, разместив граффити в его графике активности.

Как только злоумышленник открывает issue или отправляет нам пулл-реквест, у нас появляется уникальная возможность: теперь мы удовлетворяем одному из критериев, о которых я писал выше.

Некоторое время назад мне пришло фишинговое письмо от мошенника, который действовал по такой же схеме: 

Вершим правосудие на GitHub, помечая мошенников с помощью граффити - 5

Чтобы письмо с этим уведомлением пришло мне на почту, злоумышленник открыл issue в репозитории, куда я пушил код. Это позволило мне оставить в его профиле ту самую метку «Bad dude». С тех пор этого пользователя уже забанили на GitHub.

Если вы хотите попробовать сделать это самостоятельно, достаточно воспользоваться каким-нибудь готовым инструментом для рисования граффити в графиках активности (например, этим [3]) и указать почтовый адрес человека, который пытался вас развести. Эти почтовые адреса можно узнать, просмотрев API событий [4] мошенника. Или можно просто клонировать его репозитории и посмотреть адреса, использованные в его старых коммитах.

Выводы, которые можно отсюда извлечь 

Легко представить, что кто-то может использовать эту систему в менее благородных целях: например, писать в профилях ни в чем не повинных пользователей GitHub нецензурные оскорбления или еще что похуже. Проблемы можно было бы избежать, если бы график основывался на событиях пушей, а не на сырых данных коммитов; однако это может расстроить некоторых пользователей, которые пушат много коммитов за один раз, а не по одному-двум коммитам ежедневно.

Как бы то ни было, эта особенность возникла из-за слабого механизма аутентификации внутри самого Git, а также из-за системы управления доступом на основе ролей, которую GitHub построил вокруг Git.

Автор: breakmirrors

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/409790

Ссылки в тексте:

[1] выдержка из документации по GitHub: https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile#commits

[2] бэкдор в коде XZ-Utils: https://thehackernews.com/2024/03/urgent-secret-backdoor-found-in-xz.html

[3] этим: https://github.com/gelstudios/gitfiti

[4] API событий: https://docs.github.com/en/rest/using-the-rest-api/github-event-types?apiVersion=2022-11-28

[5] Источник: https://habr.com/ru/companies/bastion/articles/877076/?utm_campaign=877076&utm_source=habrahabr&utm_medium=rss