[Перевод] Защита репозиториев на GitHub от вредоносных коммитов

Новости информационной безопасности




[Перевод] Защита репозиториев на GitHub от вредоносных коммитов

Mozilla старается защитить свои репозитории на GitHub от вредоносных изменений. Как показал недавний инцидент с Gentoo, такие атаки реальны.

Первоначально Mozilla использовала GitHub как запасной хостинг. Подобно Gentoo, оригинальные репозитории хранились на собственной инфраструктуре. И хотя большая часть кода Firefox по-прежнему распространяется с собственной инфраструктуры, но многие проекты существуют только на GitHub. Некоторые — просто эксперименты, а другие используются в продакшне (например, Firefox Accounts). Такие «чувствительные» репозитории нужно защищать от вредоносных правок, при этом не усложняя коммиты для нормальных людей.

Здесь описаны реальные меры против распространения (или развёртывания) кода из скомпрометированного репозитория. Мы делимся опытом и некоторыми инструментами для аудита. Такая защита почти не мешает нормальным рабочим процессам в GitHub.

Мы здесь рассматриваем риск взлома учётной записи GitHub через уникальные механизмы этого сайта. Как показал случай Gentoo и другие инциденты, в случае взлома подвергается опасности весь код, к которому есть доступ у пользователя.


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

Лишние разрешения подвергают опасности репозитории с конфиденциальной информацией, при этом админ репозитория ничего не видит. Лучшее, что он может сделать — заметить вредоносный коммит постфактум. Ни GitHub, ни Git невозможно настроить для предотвращения или обозначения такого рода вредоносных коммитов. Только внешний мониторинг.


Следующие рекомендации взяты из нашей системы безопасности, только для данной статьи удалены специфичные особенности Mozilla. Насколько это возможно, мы заимствуем лучшие практики интернета, используем функции GitHub и пытаемся не слишком усложнять жизнь разработчикам.

Рекомендации для организаций



Рекомендации для репозиториев



Рекомендации по рабочему процессу



Реализация этих мер защиты сопряжена с определёнными издержками, особенно в связи с подписью коммитов. Мы разработали инструменты для аудита конфигураций и планируем выпустить инструменты для аудита коммитов. Все они лежат в нашем репозитории.

6f61d34e5bc20cdcecbc3ddf70091544.png

Вот пример аудита. Сначала получаем локальную копию данных для организации octo_org, а затем составляется отчёт по каждому репозиторию:

$ ./get_branch_protections.py octo_org
2018-07-06 13:52:40,584 INFO: Running as ms_octo_cat
2018-07-06 13:52:40,854 INFO: Gathering branch protection data. (calls remaining 4992).
2018-07-06 13:52:41,117 INFO: Starting on org octo_org. (calls remaining 4992).
2018-07-06 13:52:59,116 INFO: Finished gathering branch protection data (calls remaining 4947).

Теперь с локально кэшированными данными можно генерировать любые отчёты. Например, один отчёт показывает соблюдение вышеперечисленных рекомендаций:
$ ./report_branch_status.py --header octo_org.db.json
name,protected,restricted,enforcement,signed,team_used
octo_org/react-starter,True,False,False,False,False
octo_org/node-starter,False,False,False,False,False

Как видим, что только octo_org/react-starter включил защиту от принудительных пушей на ветке продакшна. Результат выдаётся в формате CSV, чтобы легко вставить в электронную таблицу.
Мы все ещё внедряем у себя эти рекомендации и учимся по ходу. Если считаете, что наши рекомендации по безопасности репозиториев вам подходят, помогите упростить реализацию. Поделитесь опытом на странице советов или откройте тикет в репозитории GitHub-Audit.

Дата: 2018-09-14 14:23:43

Источник: https://habr.com/post/423321/

информационная безопасность,open source,github,аудит кода,вредоносный коммит,mozilla,gpg