Пароли и ключи API, которые разработчики вводили в команды, одобренные в Claude Code, оказались в общедоступных репозиториях GitHub, где их может прочитать кто угодно. Когда пользователь выбирает опцию «Да, и больше не спрашивать», ИИ-ассистент для написания кода от Anthropic может сохранить команду дословно, включая секретные данные, в файле настроек проекта.
По данным компании Apiiro, специализирующейся на безопасности программного обеспечения, 1122 общедоступных копии такого файла содержат как минимум один секрет, хотя компания не проверяла, работают ли они до сих пор. Одна из компаний, уведомленных исследователями на этой неделе, подтвердила, что ее ключ был активен.
Файл называется .claude/settings.local.json. Его удаление из проекта не устраняет утечку, поскольку старые версии остаются в истории git и в форках репозитория. Исследователи советуют сначала сменить все пароли, токены и ключи, которые когда-либо хранились в этом файле, а затем провести очистку.
По умолчанию Claude Code запрашивает подтверждение перед выполнением большинства команд оболочки. Если пользователь выбирает опцию «Да, и больше не спрашивать», он сохраняет правило разрешения в файле .claude/settings.json внутри проекта, согласно документации по разрешениям. Соответствующие команды затем выполняются без запроса в последующих сессиях. Правило распространяется только на то, что было предложено в запросе. Иногда это шаблон, например npm test *, а иногда — одна точная команда. Если это точная команда, любой введенный в нее пароль или токен также сохраняется в открытом виде.
В общедоступных файлах исследователи обнаружили сохраненные команды с секретами внутри и воспроизвели это поведение с последними моделями, Opus 5.5 и Fable 5.1. Claude Code пытается не допустить попадания файла в git. При первой записи файла в репозитории git он добавляет файл в глобальные исключения git пользователя, согласно документации по настройкам. Git на этом компьютере затем игнорирует файл во всех репозиториях. Эта защита действует только в настройках git одного пользователя на одном компьютере. Она ничего не делает с файлом, который уже был закоммичен, говорят исследователи. Claude Code никогда не добавляет файл в собственный .gitignore проекта, поэтому защита не распространяется на проект.
В 539 из 1105 отслеженных исследователями репозиториев коммит, в котором Claude указан как соавтор, изменил файл. Это означает, что Claude часто сам коммитит файл. Поиск Apiiro в общедоступном GitHub выявил 104 185 копий файла в 103 617 репозиториях. Примерно 1,1% из них, или 1122 копии, содержат как минимум один секрет. Всего они содержат 1379 различных секретов. Значение считалось секретом, если оно соответствовало известному формату ключа или если пароль или токен находились рядом с адресом общедоступного сервера. ИИ-рецензент также должен был согласиться. Исследователи не сообщают, использовали ли эти секреты.
Более трети секретов открывают прямой доступ к базе данных, включая 379 паролей баз данных. Среди других — 43 SSH-логина для общедоступных серверов, 42 токена для GitHub, GitLab и npm, а также 23 ключа AWS. Среди владельцев этих файлов — 63 организации, в основном компании-разработчики программного обеспечения всех размеров. Наиболее серьезные случаи включают собственный облачный ключ администратора поставщика базы данных и пароль владельца базы данных медицинских записей, говорят исследователи. По состоянию на понедельник каждый файл с секретом все еще находился в ветке по умолчанию своего репозитория, а в половине этих репозиториев он находился там не менее 217 дней.
Старые версии файла содержат еще 734 секрета в 509 репозиториях, которых нет ни в одной текущей копии, обычно потому, что файл был удален. Форки распространяют файлы дальше: 211 форков 74 репозиториев содержат те же секреты, что и оригиналы. Секреты также содержатся в 298 из 76 011 копий общего файла .claude/settings.json, который команды коммитят намеренно, в основном внутри правил разрешения. Включая эти, старые версии и сохраненные журналы чатов агентов, общее количество составляет 2539 секретов в 1994 репозиториях. Из 16 агентов для написания кода, документацию которых сравнили исследователи, Claude Code является единственным, который по умолчанию сохраняет полную одобренную команду в файле проекта.
Разработчикам исследователи рекомендуют следующие шаги: Копии, которые никогда не попадают на GitHub, все равно имеют значение, говорят исследователи. Файл представляет собой обычный JSON в папке проекта, и он также может оставаться внутри пакета npm, образа Docker, zip-архива или синхронизированной папки. Вредоносное ПО ранее искало секреты на машинах разработчиков. В сентябре 2025 года червь Shai-Hulud просканировал зараженные компьютеры с помощью сканера секретов TruffleHog, и сканер отметил более половины файлов как содержащие секреты.
Обычные сканеры секретов пропускают многие из этих файлов. Исследователи запустили gitleaks и TruffleHog на каждой копии без этапа проверки инструментов. Из 1122 файлов с секретом gitleaks обнаружил 564, а TruffleHog — 643, при этом ни один из них не обнаружил 215. Большинство пропущенных — это пароли, введенные внутри команд. Сканеры ищут известные форматы ключей, а пароль после PGPASSWORD=, sshpass -p или mysql -p выглядит как обычное слово в обычной командной строке.
Для команд безопасности исследователи рекомендуют: Пользователи Claude Code ранее сообщали об этом поведении. В более раннем отчете об ошибке, поданном 11 августа 2025 года, говорилось, что одобренные команды с ключами API и токенами сохраняются дословно в settings.local.json. Автоматизированный бот закрыл этот отчет как «не запланированный» 3 января после 60 дней бездействия. По состоянию на сегодняшний день все четыре связанных отчета, на которые ссылаются исследователи, были закрыты тем же ботом, последний — вчера. По их словам, ни один из них не получил ответа от Anthropic.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Swati Khandelwal