Исследователи из компании Truffle Security подсчитали, что в открытых репозиториях на GitHub опубликованы 543 699 уникальных и по-прежнему действующих учетных данных. Причем некоторые из этих секретов доступны годами: медианное время жизни таких утечек составляет 784 дня, а самый старый (все еще работающий) секрет оказался датирован 2009 годом.
Исследование специалистов основывается на датасете, предназначенном для обучения больших языковых моделей. Этот набор данных был собран на основе краулинга GitHub, который завершился 7 августа 2025 года. Для проведения анализа в компании изучили порядка 224 млн репозиториев и более 58 млрд файлов.
В общей сложности 543 699 уникальных секретов встречались более чем в 1,1 млн файлов и репозиториев, включая копии в форках. Причем около 10% действующих учетных данных оказались старше 6,3 года.
В компании отдельно отметили, что в случае GitHub масштаб проблемы оказался в два раза больше, чем при аналогичном исследовании Hugging Face. Тогда специалисты нашли на платформе 221 303 рабочих секрета.
Кроме того, в отчете подчеркивается, что со временем в репозиториях становится все больше действующих секретов. Например, если в 2015 году на один миллион файлов приходилось 3,72 действующего секрета, то к 2025 году этот показатель достиг пика и составил 11,62 секрета.
Отдельно исследователи оценили эффективность механизма GitHub Push Protection, который ищет в коде API-ключи, токены доступа и другие секреты, а затем блокирует их публикацию. Функция была представлена для пользователей Advanced Security в апреле 2022 года, в мае 2023 года стала доступна для всех публичных репозиториев, а в феврале 2024 года эту защиту активировали по умолчанию для всех пользователей.
Однако исследователи установили, что, невзирая на работу GitHub Push Protection, 199 843 (36,8% от общего числа) секрета утекли в открытый доступ уже после включения Push Protection по умолчанию.
Специалисты объясняют, что проблема заключается не столько в неэффективности защитного механизма, сколько в его охвате. Дело в том, что примерно 51,8% от всех найденных действующих секретов относятся к категориям, которые стандартная конфигурация Push Protection вообще не блокирует. К таким, например, относятся строки подключения к БД и API-ключи Google. Зато утечек сократилось на 53% для тех категорий, которые Push Protection действительно защищает, после включения функции по умолчанию.
Частота отзыва скомпрометированных секретов сильно зависит от конкретного сервиса. Так, среди 101 886 раскрытых npm-токенов исследователи нашли всего один рабочий. Однако дела обстоят совсем иначе в случае с учетными данными для сервисных аккаунтов Google Cloud: из 126 963 обнаруженных секретов действующими оказались 69 041.
Исследователи рекомендуют разработчикам немедленно менять случайно опубликованные в сети секреты, очищать репозитории и их историю, а также автоматически ограничивать срок действия всех учетных данных.


