Компания Truffle Security проанализировала 224 млн репозиториев GitHub и обнаружила 543 699 уникальных действующих учётных данных в открытом доступе. Некоторые из них опубликованы годами: средний срок жизни такой утечки — 784 дня. Самый старый работающий секрет датирован 2009 годом.

Исследование основано на датасете для обучения языковых моделей, собранном краулингом GitHub до 7 августа 2025 года. Учёные проверили более 58 млрд файлов. Все 543 699 секретов встречались в 1,1 млн файлов и репозиториев, включая их форки. Около 10% действующих учётных данных работают более 6,3 года.

На GitHub проблема масштабнее, чем на Hugging Face. Там исследователи нашли 221 303 рабочих секрета — в два раза меньше. Тревожная тенденция: плотность действующих секретов растёт. В 2015 году на один миллион файлов приходилось 3,72 секрета, к 2025 году показатель достиг 11,62.

GitHub Push Protection ищет API-ключи, токены и другие секреты, затем блокирует их публикацию. Функция включена по умолчанию с февраля 2024 года, но не решает проблему полностью. После активации по умолчанию в открытый доступ всё равно попало 199 843 секрета (36,8% от всех найденных).

Основная причина — неполный охват защиты. Примерно 51,8% действующих секретов относятся к категориям, которые Push Protection вообще не блокирует: строки подключения к БД, API-ключи Google и другие. Зато для защищённых категорий утечки сократились на 53% после включения функции по умолчанию.

Отзыв скомпрометированных секретов зависит от сервиса. Из 101 886 раскрытых npm-токенов исследователи нашли всего один рабочий. С учётными данными Google Cloud дело иное: из 126 963 обнаруженных секретов действующими оказались 69 041.

Разработчикам рекомендуют срочно менять случайно опубликованные секреты, очищать историю репозиториев и устанавливать автоматические сроки действия для всех учётных данных.