Независимый исследователь Бен Циммерманн проверил 7,25 млн публичных репозиториев китайского сервиса Gitee и обнаружил 26 400 действующих учётных данных для облачных и ИИ-сервисов. Результаты он опубликовал 28 октября; год в сообщении не указан. Крупнейшая группа — 9 473 пары Alibaba Cloud AccessKey. Любой, кто успел скопировать ключ из открытого кода, потенциально мог воспользоваться им.

Для поиска Циммерманн запустил два сканера секретов: TruffleHog и Kingfisher. По его словам, оба инструмента проверяли найденные данные непосредственно в сервисах, которым они принадлежали, и учитывали только работающие учётные данные. Сканирование заняло около месяца, но точные даты начала и окончания не названы. Поэтому неизвестно, насколько давно ключи проверялись и могли ли они перестать действовать после проверки.
Сканеры просматривали полную историю коммитов. Удалённый из актуальной версии кода ключ мог сохраниться в более раннем коммите. Общее число 26 400 учитывает каждое уникальное учётное данное один раз, даже если оно встречалось в нескольких репозиториях. По датам коммитов 12 242 ключа относятся к 2025 году — почти половина обнаруженного массива; некоторые записи уходят в конец 2000-х.
После Alibaba Cloud чаще всего встречались ключи YouTube API — 3 805, DeepSeek — 3 170, платформы BigModel компании Zhipu — 1 489 и OpenAI — 1 348. В меньшем количестве обнаружились данные GitHub, AWS, Google Cloud и Gemini от Google; точные числа для них не приводятся. Один из найденных ключей Циммерманн назвал «действующим учётным данным администратора организации в крупной корпоративной ИИ-платформе». Название платформы и доступные через ключ ресурсы он не раскрыл.
Циммерманн передал списки ключей поставщикам, у которых нашли больше всего утечек, но разработчикам, разместившим их, не сообщил. Он также не уточнил, пользовался ли кто-нибудь этими данными. На момент публикации он не подтвердил отзыв ни одного из найденных ключей. Поэтому разработчикам, когда-либо публиковавшим секреты в открытом репозитории Gitee, не следует считать их автоматически отключёнными.
Последствия зависят от сервиса и прав, привязанных к ключу. OpenAI предупреждает: чужой человек может расходовать квоту аккаунта без согласия владельца, вызвать неожиданные списания, исчерпать месячный лимит или прервать доступ к API; возможна и потеря данных. Google поясняет, что ключ YouTube API — это ключ Google Cloud, идентифицирующий проект. Если ограничения не заданы, его можно использовать со всеми API, которые принимают ключи Google Cloud.
Если ключ хотя бы раз попал в публичный репозиторий, его нужно считать раскрытым и отозвать либо заменить у поставщика. Удаление строки из кода и переписывание истории репозитория этого не делают, отмечает Truffle Security, создатель TruffleHog. Для Alibaba Cloud следует создать новую пару AccessKey, перевести приложения на неё, затем отключить и удалить старую. По плану реагирования Alibaba Cloud нужно проверить неожиданные расходы и ресурсы, которые могли создать или удалить без необходимости. ActionTrail показывает вызовы API за последние 90 дней; операции с данными в OSS и SLS необходимо проверять в журналах самих сервисов.
Для ключа Google или YouTube API нужно выпустить замену с теми же ограничениями, обновить приложения, удалить старый ключ и задать ограничения по API, оставив только необходимые. В OpenAI ключ следует немедленно заменить на странице API Keys; лимиты расходов помогут сдержать списания, если утечка уже произошла.
Сканеры дали разные результаты: TruffleHog обнаружил 12 737 действующих учётных данных, Kingfisher — 14 664; оба нашли 1 001 общий ключ. Каждый инструмент отдельно выявил примерно половину общего массива. TruffleHog нашёл почти все ключи Alibaba Cloud, а Kingfisher — все 1 489 ключей BigModel: у TruffleHog, как писал Циммерманн, нет детектора для ключей Zhipu. Командам, полагающимся на один сканер, стоит проверить, распознаёт ли он секреты используемых ими сервисов. Kingfisher разработан MongoDB; публикация Циммерманна готовилась совместно с командой Kingfisher.
В 2020 году Министерство промышленности и информатизации Китая выбрало Gitee основой национальной платформы для размещения открытого исходного кода. Публичный API сервиса ограничен: в 2021 году исследователи уже пытались изучить утечки ключей на Gitee, но отказались от работы из-за этих ограничений. В нынешнем сканировании на тысячу репозиториев пришлось 3,64 действующих учётных данных. Для сравнения, более ранние проверки сообщали о 3,11 на тысячу репозиториев GitLab и 2,39 на тысячу Bitbucket; по словам Циммерманна, там использовался только TruffleHog. Если учитывать лишь его результаты для Gitee, показатель составит 1,76 ключа на тысячу репозиториев и не включит сервисы вроде Zhipu, которые сканер не распознаёт. Различия в инструментах и охвате не позволяют заключить, на какой платформе утечек больше.

Изображение носит иллюстративный характер
Для поиска Циммерманн запустил два сканера секретов: TruffleHog и Kingfisher. По его словам, оба инструмента проверяли найденные данные непосредственно в сервисах, которым они принадлежали, и учитывали только работающие учётные данные. Сканирование заняло около месяца, но точные даты начала и окончания не названы. Поэтому неизвестно, насколько давно ключи проверялись и могли ли они перестать действовать после проверки.
Сканеры просматривали полную историю коммитов. Удалённый из актуальной версии кода ключ мог сохраниться в более раннем коммите. Общее число 26 400 учитывает каждое уникальное учётное данное один раз, даже если оно встречалось в нескольких репозиториях. По датам коммитов 12 242 ключа относятся к 2025 году — почти половина обнаруженного массива; некоторые записи уходят в конец 2000-х.
После Alibaba Cloud чаще всего встречались ключи YouTube API — 3 805, DeepSeek — 3 170, платформы BigModel компании Zhipu — 1 489 и OpenAI — 1 348. В меньшем количестве обнаружились данные GitHub, AWS, Google Cloud и Gemini от Google; точные числа для них не приводятся. Один из найденных ключей Циммерманн назвал «действующим учётным данным администратора организации в крупной корпоративной ИИ-платформе». Название платформы и доступные через ключ ресурсы он не раскрыл.
Циммерманн передал списки ключей поставщикам, у которых нашли больше всего утечек, но разработчикам, разместившим их, не сообщил. Он также не уточнил, пользовался ли кто-нибудь этими данными. На момент публикации он не подтвердил отзыв ни одного из найденных ключей. Поэтому разработчикам, когда-либо публиковавшим секреты в открытом репозитории Gitee, не следует считать их автоматически отключёнными.
Последствия зависят от сервиса и прав, привязанных к ключу. OpenAI предупреждает: чужой человек может расходовать квоту аккаунта без согласия владельца, вызвать неожиданные списания, исчерпать месячный лимит или прервать доступ к API; возможна и потеря данных. Google поясняет, что ключ YouTube API — это ключ Google Cloud, идентифицирующий проект. Если ограничения не заданы, его можно использовать со всеми API, которые принимают ключи Google Cloud.
Если ключ хотя бы раз попал в публичный репозиторий, его нужно считать раскрытым и отозвать либо заменить у поставщика. Удаление строки из кода и переписывание истории репозитория этого не делают, отмечает Truffle Security, создатель TruffleHog. Для Alibaba Cloud следует создать новую пару AccessKey, перевести приложения на неё, затем отключить и удалить старую. По плану реагирования Alibaba Cloud нужно проверить неожиданные расходы и ресурсы, которые могли создать или удалить без необходимости. ActionTrail показывает вызовы API за последние 90 дней; операции с данными в OSS и SLS необходимо проверять в журналах самих сервисов.
Для ключа Google или YouTube API нужно выпустить замену с теми же ограничениями, обновить приложения, удалить старый ключ и задать ограничения по API, оставив только необходимые. В OpenAI ключ следует немедленно заменить на странице API Keys; лимиты расходов помогут сдержать списания, если утечка уже произошла.
Сканеры дали разные результаты: TruffleHog обнаружил 12 737 действующих учётных данных, Kingfisher — 14 664; оба нашли 1 001 общий ключ. Каждый инструмент отдельно выявил примерно половину общего массива. TruffleHog нашёл почти все ключи Alibaba Cloud, а Kingfisher — все 1 489 ключей BigModel: у TruffleHog, как писал Циммерманн, нет детектора для ключей Zhipu. Командам, полагающимся на один сканер, стоит проверить, распознаёт ли он секреты используемых ими сервисов. Kingfisher разработан MongoDB; публикация Циммерманна готовилась совместно с командой Kingfisher.
В 2020 году Министерство промышленности и информатизации Китая выбрало Gitee основой национальной платформы для размещения открытого исходного кода. Публичный API сервиса ограничен: в 2021 году исследователи уже пытались изучить утечки ключей на Gitee, но отказались от работы из-за этих ограничений. В нынешнем сканировании на тысячу репозиториев пришлось 3,64 действующих учётных данных. Для сравнения, более ранние проверки сообщали о 3,11 на тысячу репозиториев GitLab и 2,39 на тысячу Bitbucket; по словам Циммерманна, там использовался только TruffleHog. Если учитывать лишь его результаты для Gitee, показатель составит 1,76 ключа на тысячу репозиториев и не включит сервисы вроде Zhipu, которые сканер не распознаёт. Различия в инструментах и охвате не позволяют заключить, на какой платформе утечек больше.