Утечки секретной информации обнаружены в 100 000 репозиториев на GitHub +4



Методология сбора секретов включает различные фазы, что позволяет в итоге идентифицировать секретную информацию с высокой степенью уверенности. Иллюстрация из научной работы

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

Группа исследователей из университета штата Северная Каролина провела крупномасштабное исследование утечек секретных данных на GitHub. Они просканировали миллиарды файлов, которые собраны двумя взаимодополняющими методами:

  • почти шестимесячное сканирование публичных коммитов GitHub в режиме реального времени;
  • снимок общедоступных репозиториев, охватывающй 13% всех репозиториев на GitHub, всего около 4 млн репозиториев.

Выводы неутешительные. Учёные не только обнаружили, что утечки широко распространены и затрагивают более 100 000 репозиториев. Ещё хуже, что каждый день на GitHub попадают тысячи новых, уникальных «секретов».

В таблице перечислены API популярных сервисов и риски, связанные с утечкой этой информации.



Общая статистика по найденным секретным объектам показывает, что чаще всего в открытый доступ попадают ключи Google API. Также нередко встречаются приватные ключи RSA и идентификаторы Google OAuth. Что характерно, абсолютное большинство утечек происходит через репозитории с одним владельцем.

Секрет Всего Уникальных %, один владелец
Ключ Google API 212 892 85 311 95,10%
Секретный ключ RSA 158 011 37 781 90,42%
Google OAuth ID 106 909 47 814 96,67%
Обычный приватный ключ 30 286 12 576 88,99%
Amazon AWS Access Key ID 26 395 4648 91,57%
Токен доступа Twitter 20 760 7953 94,83%
Приватный ключ EC 7838 1584 74,67%
Токен доступа Facebook 6367 1715 97,35%
Приватный ключ PGP 2091 684 82,58%
Ключ MailGun API 1868 742 94,25%
Ключ MailChimp API 871 484 92,51%
Ключ Stripe Standard API 542 213 91,87%
Ключ Twilio API 320 50 90,00%
Токен доступа Square 121 61 96,67%
Секрет Square OAuth 28 19 94,74%
Токен Amazon MWS Auth 28 13 100,00%
Токен доступа Braintree 24 8 87,50%
Ключ Picatic API 5 4 100,00%
Всего 575 456 201 642 93,58%

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

Среди самых заметных утечек — аккаунт на AWS государственного учреждения одной из стран Восточной Европы, а также 7280 приватных RSA-ключей для доступа к тысячам приватных сетей VPN.

Исследование демонстрирует, что злоумышленник даже с минимальными ресурсами может скомпрометировать многих пользователей GitHub и найти массу секретных ключей. Авторы отмечают, что многие существующие методы защиты неэффективны против сбора секретной информации. Например, инструменты вроде TruffleHog демонстрируют эффективность всего лишь на уровне 25%. Встроенное ограничение GitHub по количеству запросов к API тоже легко обходится.

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

Недавно на GitHub реализована бета-версия сканирования токенов (функция Token Scanning), которая сканирует репозитории, ищет токены и уведомляет поставщиков услуг об утечке информации. В свою очередь, вендор может аннулировать этот ключ. Авторы считают, что благодаря их исследованию GitHub может улучшить эту функцию и расширить число вендоров.




К сожалению, не доступен сервер mySQL