Недавно Исследователи Aqua Security раскрыли информацию об анализе, который они провели в отношении с применимостью атаки RepoJacking к репозиториям GitHub.
Суть проблемы является то, что после удаления или переименования проектов на GitHub, Сторонние репозитории могут содержать ссылки к именам, которые больше не существуют, например, в документации, сценариях и инструкциях по установке README.
Исследователи отмечают, что злоумышленник может зарегистрировать имя пользователя на GitHub дублировать имя уже существующего пользователя, размещающего вредоносное ПО в репозитории cна двойное имя и ждать пока кто-нибудь скачает используя непропатченные руководства или старый код, загружающий зависимости по старым ссылкам.
В отличие от предыдущих исследований, наше исследование подчеркивает последствия для безопасности и серьезность этой базы данных в случае ее использования злоумышленниками. Многие из которых могут найти в нем многочисленные качественные цели, подверженные RepoJacking. В этом блоге мы углубимся в сценарии эксплойтов этой атаки и предоставим иллюстрации каждого сценария на реальных примерах.
Например, Аналогичным образом в прошлом году был получен контроль над библиотекой PHP phpass. На GitHub есть защита от перерегистрации удаленных проектов, но ее можно было обойти, создав одноименный репозиторий в произвольной учетной записи и затем переименовав эту учетную запись в целевую. Если вы хотите зарегистрировать репозиторий пользователя/представителя, где учетная запись пользователя была удалена, GitHub позволит вам воссоздать пользователя «user», но это не позволит вам создать «репрезентативный» репозиторий. Вы можете обойти это ограничение, создав «репрезентативный» репозиторий в учетной записи другого пользователя (например, «user1»), а затем изменив имя этого пользователя на «user».
GitHub сейчас пытается противостоять таким манипуляциям, но по данным Aqua Security не все решения заблокированы и защита распространяется только на самые популярные проекты.s, у которого до смены имени было более 100 клонов.
Al mismo tiempo, защита не ловит проекты, ставшие популярными после их переименования. Также не учитывается, что популярный проект может использовать в качестве зависимости менее популярный репозиторий, ранее переименованный и не защищенный (может подвергнуться атаке путем подмены зависимости). После смены имени GitHub автоматически перенаправляет старые ссылки на новый репозиторий, но это перенаправление длится только до тех пор, пока пользователь с таким же именем не зарегистрируется, поэтому код часто забывает исправить ссылки на новое имя.
Злоумышленникам не нужно выполнять всю эту тяжелую работу. Они не привязаны к конкретной организации. Они могут сканировать Интернет и находить любую жертву, которую они хотят, и если они чувствуют, что за атакой стоит прибыль, они будут продолжать, пока не максимизируют свою прибыль. Такие веб-сайты, как проект GHTorrent, предоставляют удивительные и бесценные данные.
Проект GHTorrent регистрирует любое публичное событие (коммит, PR и т. д.), происходящее на Github, и сохраняет его в базе данных. Любой желающий может загрузить дамп базы данных за определенный период времени. Используя этот набор данных, злоумышленники могут обнаружить исторические названия различных организаций и расширить свою потенциальную поверхность атаки.
Изучение Компания Aqua Security проверила выборку из 1,25 млн репозиториев. что соответствует примерно 0,4% от общего количества репозиториев на GitHub. Список был получен на основе анализа журнала изменений за случайный месяц (июнь 2019 г.). Подверженность атаке RepoJacking обнаружена в 36983 репозиториях (2.95%).
Исследователи также провели экспериментальную атаку что показало эффективность метода. В нескольких модифицированных репозиториях организован сбор информации об IP-адресах, с которых загружались размещенные в репозитории артефакты. В результате были зафиксированы загрузки фальсифицированных данных в сетях нескольких крупных компаний.
Наконец, если вы хотите узнать об этом больше, вы можете проконсультироваться подробности по следующей ссылке.