Утечки секретной информации обнаружены в 100 000 репозиториев на GitHub +4
Информационная безопасность, Open source, GitHub
Рекомендация: подборка платных и бесплатных курсов Java - https://katalog-kursov.ru/
Методология сбора секретов включает различные фазы, что позволяет в итоге идентифицировать секретную информацию с высокой степенью уверенности. Иллюстрация из научной работы
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