В публичных репозиториях обнаружили 543 699 действующих учетных данных: токены, ключи и другие секреты GitHub продолжали работать, хотя платформа уже несколько лет блокирует часть случайных утечек. Для разработчиков и бизнеса это неприятное напоминание: если ключ однажды попал в историю коммитов, сама по себе защита на входе его не обезвредит.
О масштабе проблемы сообщает BleepingComputer со ссылкой на исследование Truffle Security. Компания проанализировала 224 млн репозиториев и более 58 млрд файлов в датасете, собранном для обучения больших языковых моделей. Кроул завершился 7 августа 2025 года, а проверка показала: в июле 2026 года сотни тысяч найденных credential все еще были валидны.
Самая болезненная цифра здесь даже не 543 699. Медианное время, в течение которого уникальные учетные данные оставались публично доступными, составило 784 дня. То есть типичная утечка жила в открытом виде больше двух лет. Около 10% рабочих секретов были старше 6,3 года, а самый древний действующий credential датировался 2009 годом. Это уже не «ой, случайно запушили .env в пятницу вечером», а вполне зрелый археологический слой инфраструктурного риска.
Исследователи нашли одни и те же секреты более чем в 1,1 млн файлов и репозиториев, включая форки. Это важная деталь: удалить ключ из основного репозитория мало, если он уже разошелся по копиям. В реальной разработке форки, зеркала, CI-артефакты и старые ветки часто живут дольше, чем память команды о том, зачем этот токен вообще создавали.
GitHub не сидел сложа руки. Защита Push Protection появилась в апреле 2022 года для пользователей Advanced Security, в мае 2023 года стала доступна для публичных репозиториев, а в феврале 2024 года была включена по умолчанию для всех пользователей. Механизм проверяет входящий код на шаблоны секретов, например API-ключи и access-токены, и блокирует загрузку при срабатывании. Но у него есть очевидная граница: он не отзывает то, что уже утекло раньше.
По данным Truffle Security, 199 843 действующих секрета из июльской выборки были опубликованы уже после включения Push Protection для всех пользователей. Это примерно 36,8% от общего числа. На первый взгляд звучит как провал автоматики, но картина тоньше: чуть больше половины живых credential, 51,8%, относились к категориям, которые стандартная Push Protection не блокирует. Среди них упоминаются строки подключения к базам данных и Google API keys.
При этом внутри зоны покрытия механизм работает заметно лучше. Для категорий, которые Push Protection умеет ловить по умолчанию, частота появления секретов снизилась на 53% после включения функции для всех. Иначе говоря, фильтр помогает, когда он знает, что именно искать. Все остальное остается задачей команд, платформенных инженеров и тех, кто до сих пор считает, что «в приватном репозитории можно».
Разница между сервисами тоже оказалась огромной. Из 101 886 npm-токенов, попавших в коммиты, исследователи нашли только один рабочий. Это похоже на относительно эффективную практику отзыва или истечения таких токенов. А вот среди 126 963 раскрытых учетных данных сервисных аккаунтов Google Cloud действующими оставались 69 041. Для облачной инфраструктуры это особенно неприятный сценарий: один забытый ключ может открывать доступ не к тестовому скрипту, а к данным, биллингу и продакшен-сервисам.
Для русскоязычных команд вывод довольно практичный. Нельзя считать GitHub-сканер полноценной заменой управлению секретами. Нужны ротация ключей после любого публичного раскрытия, проверка истории репозиториев, аудит форков, автоматическое истечение токенов и нормальная инвентаризация: кто создал ключ, где он используется, когда должен умереть. Без этого секреты GitHub превращаются в бессрочные пропуска, которые случайно забыли у входа.
Отдельная тема — датасеты для обучения моделей. Исследование опиралось на массив, собранный для LLM, и это показывает побочный эффект нынешней гонки за кодовыми корпусами: старые утечки становятся не просто проблемой конкретного репозитория, а частью больших технических архивов. Даже если атакующие не воспользовались конкретным ключом, сам факт его многолетней доступности меняет модель риска. Следующий зрелый этап для отрасли — не только ловить секреты GitHub при push, но и массово отзывать их до того, как они станут учебным материалом для чужих инструментов.