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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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


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

Как бы то ни было, эта особенность возникла из-за слабого механизма аутентификации внутри самого Git, а также из-за системы управления доступом на основе ролей, которую GitHub построил вокруг Git.
Источник: https://habr.com/ru/companies/bastion/articles/877076/


Интересные статьи

Интересные статьи

Сейчас в любой организации есть принтеры. Несмотря на тренд последнего десятилетия на сохранение окружающей среды и перехода на электронный документооборот, печатные копии документ...
Привет, Хабр! На связи команда продуктового матчинга ecom.tech. В серии статей мы расскажем о разработке матчера для Мегамаркета. Первым делом – давайте вместе  посмотрим с разных сторон на ...
Привет, мы команда СберМегаМаркета, и это обзорная статья о нашей площадке, пробный камень для блога Хабре. За нашими плечами спешный переезд с PHP на GO, ребрендинг и решение таких задач, с которыми ...
Один из ключевых сценариев работы в CRM это общение с клиентом в удобном для него канале. По почте, по телефону, по SMS или в мессенджере. Особенно выделяется WhatsApp — интеграцию с ...
Сравнивать CRM системы – дело неблагодарное. Очень уж сильно они отличаются в целях создания, реализации, в деталях.