В публичных репозиториях GitHub нашли 1122 файла Claude Code с секретами

Исследователи Apiiro обнаружили в настройках Claude Code пароли, API-ключи и токены, попавшие туда вместе с одобренными командами. Удаление файла из рабочей ветки не устраняет утечку из истории Git и форков.

В публичных репозиториях GitHub нашли 1122 файла Claude Code с секретами

В публичных репозиториях GitHub обнаружили 1122 копии файла .claude/settings.local.json, содержащие как минимум один пароль, токен или ключ доступа. По данным компании Apiiro, всего в этих файлах насчитывается 1379 различных секретов; исследователи не проверяли, остаются ли они действительными.

Проблема связана с механизмом разрешений Claude Code. Обычно ассистент запрашивает подтверждение перед запуском команд оболочки. Если разработчик выбирает вариант «Да, и больше не спрашивать», инструмент сохраняет правило для последующих запусков в .claude/settings.local.json. Когда подтверждается конкретная команда, а не её шаблон, в файл может целиком попасть и переданный в команде секрет — например пароль или API-токен.

Apiiro нашла 104 185 копий этого файла в 103 617 публичных репозиториях. Более трети обнаруженных секретов дают прямой доступ к базам данных, включая 379 паролей к БД. Также исследователи насчитали 43 SSH-учётные данные для публичных серверов, 42 токена GitHub, GitLab и npm, а также 23 ключа AWS. Среди владельцев затронутых файлов названы 63 организации.

Claude Code при первом создании файла в Git-репозитории добавляет его в глобальный список исключений Git на конкретном компьютере пользователя. Однако это не меняет .gitignore самого проекта и не помогает, если файл уже был закоммичен. По состоянию на понедельник, указанный в исследовании, все файлы с секретами всё ещё находились в основных ветках репозиториев; примерно в половине случаев они оставались там не менее 217 дней.

Даже удалённый из текущей версии проекта файл может сохраниться в истории Git и форках. Apiiro обнаружила ещё 734 секрета в старых версиях .claude/settings.local.json в 509 репозиториях, а 211 форков 74 репозиториев содержали те же секреты, что и оригиналы. С учётом общего файла .claude/settings.json, старых версий и сохранённых журналов общения с агентом исследователи оценили общий объём утечек в 2539 секретов из 1994 репозиториев.

Исследователи рекомендуют разработчикам проверить в организации GitHub файлы .claude/settings.local.json и .claude/settings.json, в том числе в истории репозиториев. Прежде чем удалять следы файлов, следует отозвать и заменить все пароли, ключи и токены, которые когда-либо в них попадали. Для дальнейшей работы секреты предлагают передавать через переменные и менеджеры секретов, а при настройке разрешений одобрять шаблоны команд вместо единичных команд с учётными данными.