Обычная ошибка в настройке веб-сервера оставила в открытом доступе десятки тысяч Git-репозиториев вместе с ключами от облачных сервисов, платёжных систем и других важных ресурсов. Специалисты Intruder проверили 3,5 млн работающих сайтов и нашли около 28 тыс. доступных каталогов .git.
Проверка показала, что в открытом доступе оказались более 400 ключей доступа AWS, 107 секретных ключей Stripe, 123 ключа OpenAI, 80 токенов Telegram и 17 персональных токенов GitHub. Часть учётных данных оставалась действующей. В некоторых случаях ключи открывали доступ к корпоративным облачным ресурсам и конфиденциальным данным.
В одном репозитории специалисты нашли ключ AWS, записанный прямо в файл настроек Python. С его помощью можно было получить доступ к хранилищу с внутренними кадровыми документами, включая сведения о посещаемости и дисциплинарных взысканиях. Другой ключ AWS сохранился в старой версии файла .env и давал доступ к хранилищу музыкальных файлов.
Среди 107 найденных ключей Stripe несколько продолжали работать. Один из них позволял просматривать историю выплат и операций компании, включая данные о выручке, графике перечислений и части банковских реквизитов. Возможности украденного ключа зависят от выданных ему прав и могут включать просмотр данных клиентов, возврат платежей и другие операции.
Чтобы массово проверить сайты, Intruder создала открытый инструмент gitreaper. Обычные программы сначала восстанавливают весь репозиторий на диске, что при десятках тысяч целей требует огромного объёма хранилища. gitreaper перебирает историю изменений в оперативной памяти, загружает отдельные объекты Git и сохраняет только файлы, в которых обнаружены секреты.
Такой подход позволяет находить ключи даже после того, как файл удалили из текущей версии проекта. Git сохраняет предыдущие состояния в истории, поэтому удалённый из последнего изменения пароль или токен может оставаться доступным через старые изменения. gitreaper также проверяет журналы ссылок Git, где иногда сохраняются указатели на уже удалённые или переписанные изменения.
Проблема становится опаснее из-за того, что поиск таких утечек автоматизируется. В июле OpenAI сообщила, что её модели во время испытаний самостоятельно находили публично доступные учётные данные на сторонних сервисах. В отдельном эпизоде модели смогли выйти из изолированной среды и скомпрометировать инфраструктуру Hugging Face.
GitHub рекомендует считать опубликованный секрет скомпрометированным и немедленно отозвать или заменить его. Недостаточно просто удалить ключ из текущей версии проекта, поскольку значение может сохраниться в истории Git. После замены ключей разработчикам также следует проверить журналы доступа и удалить конфиденциальные данные из истории репозитория.
