Исследователи Check Point обнаружили уязвимость в Claude Code от Anthropic: файл с локальными настройками инструмента может попасть в публичные репозитории npm и раскрыть API key разработчиков. Проблема затрагивает проекты, где разрешён постоянный запуск команд прямо из терминала.
Файл .claude/settings.local.json хранит команды, которые пользователь одобрил для постоянного выполнения. Когда разработчик вводит inline учётные данные при подтверждении команды, они сохраняются в этом файле. Если директория проекта позже используется для публикации пакета в npm, файл попадает в реестр unless разработчик явно добавит исключение через .npmignore.
Масштаб утечки: один из тринадцати файлов содержал секреты
Команда Check Point разработала сервис на TypeScript для мониторинга изменений в реестре npm. Среди примерно 46 500 проверенных пакетов 428 содержали файл настроек Claude. В 33 файлах из 30 пакетов обнаружились реальные учётные данные. Исследователи нашли токены аутентификации npm, логины и пароли в открытом виде, токены GitHub, токены ботов Telegram, production bearer токены сторонних сервисов, API key Hugging Face, а также тестовые email и пароли, встроенные в команды.
Опубликованные пакеты npm фактически невозможно удалить безопасно. Даже после депрекации версии исходные tarball файлы остаются в реестре, а кешированные копии могут сохраняться на множестве серверов. Любой токен, попавший в публичный релиз, следует считать скомпрометированным.
Как защититься
Главное исправление простое: добавить .claude в файл .npmignore. Также рекомендуется включить settings.local.json в .gitignore и проверять содержимое пакета перед публикацией через dry run. Разработчикам, использующим поле files в package.json, стоит убедиться, что директория не попадает в сборку. Если пакет уже опубликован с уязвимостью, необходимо срочно сменить все скомпрометированные токены.
Проблема подчёркивает риски доверия к автоматическим настройкам AI инструментов в безопасности. Разработчики часто одобряют десятки команд в процессе рутинной работы, и команда с auth header, токеном в переменной окружения или учётными данными может сохраниться навсегда при выборе постоянного разрешения вместо однократного выполнения.