
Методология сбора секретов включает различные фазы, что позволяет в итоге идентифицировать секретную информацию с высокой степенью уверенности. Иллюстрация из научной работы
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 может улучшить эту функцию и расширить число вендоров.
mr_tron
Они многое пропустили походу. Я например находил около двух тысяч рабочих токенов для телеграмных ботов, а телеграм даже не попал в таблицу.