Содержание
API-ключи и другие секреты всё ещё лежат в открытом доступе прямо в коде сайтов. Исследователи из Stanford University, UC Davis и TU Delft проверили 10 млн веб-страниц и нашли 1 748 валидных учётных данных на почти 10 000 страниц.
Речь не про «старые токены из песочницы». По описанию авторов, часть находок открывала доступ к продакшн-сервисам: от облака и платежей до инструментов разработки.
Какие доступы утекали и почему это опаснее паролей
Найденные креды покрывают несколько типов сервисов, которые компании часто подключают к реальным системам. В выборке встречались ключи к облачным платформам, платежным провайдерам и девтулзам, которые используют в боевой среде.
Нуруллах Демир, аспирант Stanford, описал картину прямо: «What we found were highly sensitive API credentials left publicly exposed on public webpages» — «Мы нашли высокочувствительные API-учётные данные, оставленные в открытом доступе на публичных веб-страницах».
И тут важный нюанс: API-учётные данные отличаются от логина и пароля. Они работают как токены доступа для приложений. Такой ключ может давать автоматический и постоянный доступ к внешнему сервису, часто без дополнительных проверок. Если ключу выдали широкие права, он открывает путь к базам данных, хранилищам и даже инфраструктуре управления ключами.
- Облако: доступ к внутренним сервисам, данным, хранилищам
- Платежи: операции и интеграции с платежными сервисами
- Инструменты разработки: доступ к репозиториям и пайплайнам
84% утечек пришлись на JavaScript и сборки Webpack

Главный «разносчик» секретов — клиентский код. Около 84% подтверждённых учётных данных исследователи нашли в JavaScript-ресурсах, которые браузер скачивает для работы сайта.
Часто это были бандлы, собранные инструментами вроде Webpack. Сборка может утащить секреты в итоговый файл, если конфиги и переменные окружения настроили неаккуратно. В итоге ключ, который разработчик считал внутренним, уезжает к каждому посетителю вместе со скриптами.
Но JavaScript не единственный канал. Креды встречались в HTML и JSON. Некоторые попадались даже в CSS. Это намекает на системную проблему в подготовке и деплое ассетов, а не на одну конкретную ошибку «на этапе X».
Утечки жили месяцами и годами, но после уведомлений стало лучше
Отдельно неприятна «живучесть» таких утечек. По данным авторов, некоторые ключи оставались доступными несколько месяцев или даже несколько лет. Разработчики часто не знали о проблеме, пока им не писали исследователи.
Когда команда начала процесс раскрытия и уведомлений, число доступных наружу секретов снизилось примерно вдвое за две недели. Это хороший сигнал, но он же показывает, что без внешнего пинка многие утечки висят бесконечно долго.
Авторы отдельно предупреждают: их цифры — нижняя оценка. Они проверяли валидность ключей на ограниченном наборе провайдеров, так что реальный масштаб может быть больше.
Препринт исследования опубликован на arXiv, и в нём зафиксирована итоговая статистика: 10 млн проанализированных страниц, 1 748 валидных учётных данных и почти 10 000 страниц с экспозицией.