Масштабная утечка секретов через настройки Claude Code
Инструменты для автоматизации разработки призваны упрощать жизнь программистам, но иногда их стандартные настройки приводят к серьезным инцидентам безопасности. Исследовательская группа Apiiro обнаружила тревожную тенденцию: инструмент командной строки Claude Code от Anthropic по умолчанию сохраняет историю команд, включая пароли и токены, в локальный конфигурационный файл. Более того, этот файл часто попадает в публичные репозитории на GitHub.
Как происходит утечка
Проблема кроется в механизме работы Claude Code. Когда разработчик одобряет выполнение команды, содержащей конфиденциальные данные (например, пароль для базы данных или API-ключ), инструмент записывает эту команду в файл .claude/settings.local.json. Этот файл предназначен для хранения пользовательских настроек и истории команд для удобства повторного использования.
Основная опасность возникает, когда разработчики по неосторожности или незнанию коммитят (отправляют в репозиторий) не только исходный код, но и конфигурационные файлы, включая .claude/settings.local.json. Поскольку файл находится в директории проекта, он легко может быть добавлен в индекс Git. В результате одобренные команды с паролями в открытом виде оказываются в публичном доступе.
Статистика и риски
Согласно отчету Apiiro, на данный момент обнаружено 2539 уникальных секретов (паролей, ключей, токенов), распределенных по 1994 репозиториям. Из них 1122 репозитория содержат подтвержденные утечки, связанные именно с файлом настроек Claude Code. Это создает огромную поверхность для атак:
- Компрометация инфраструктуры: Злоумышленники могут использовать найденные учетные данные для доступа к серверам, базам данных и облачным сервисам.
- Кража данных: Доступ к API-ключам позволяет выгружать пользовательские данные или интеллектуальную собственность.
- Финансовые потери: Утечка ключей от платежных систем или облачных провайдеров может привести к прямому хищению средств или запуску дорогостоящих вычислительных ресурсов за счет жертвы.
Как проверить свой проект
Если вы используете Claude Code, необходимо немедленно проверить историю ваших репозиториев. Даже если вы уже удалили файл .claude/settings.local.json из текущей версии проекта, он мог остаться в истории коммитов (git history).
Для проверки выполните следующие действия:
- Используйте специализированные сканеры секретов, такие как TruffleHog или Gitleaks. Эти утилиты анализируют весь коммит-хэш, находя строки, похожие на пароли и токены.
- Выполните поиск по истории вручную. Команда
git log -Sпозволяет найти коммиты, в которых добавлялись или удалялись определенные строки. Ищите по ключевым словам вродеpassword,api_key,secret. - Проверьте файл
.claude/settings.local.jsonв вашем локальном профиле. Убедитесь, что он добавлен в.gitignore, чтобы предотвратить случайную публикацию в будущем.
Как предотвратить проблему
Главное правило работы с конфиденциальными данными — никогда не хранить их в коде или конфигурационных файлах репозитория. Используйте менеджеры секретов (HashiCorp Vault, AWS Secrets Manager) или переменные окружения.
Для Claude Code рекомендуется:
- Всегда добавлять
.claude/в файл.gitignoreна уровне глобальных настроек или конкретного проекта. - Внимательно проверять дифф (список изменений) перед каждым коммитом.
- В случае обнаружения утечки немедленно отозвать скомпрометированные токены и сменить пароли, даже если репозиторий был сделан приватным. Публичный коммит остается в кэше GitHub навсегда.