Исследователь безопасности обнаружил в ИИ-инструменте Claude Code от Anthropic уязвимость, связанную с обработкой конфигурационных файлов. Вредоносный запрос на включение изменений может привести к автоматическому выполнению команд на компьютере разработчика сразу после открытия Claude Code. При этом ревьюер не успевает проверить код, а активная учётная запись не требуется. Несмотря на это, компания считает такое поведение задуманным и не видит оснований менять модель безопасности.
Детали уязвимости
Суть проблемы кроется в технологии Model Context Protocol (MCP) - протоколе, который даёт ИИ-ассистенту доступ к внешним инструментам и данным. MCP-серверы бывают двух видов: удалённые, вызываемые через HTTP-запросы, и локальные, запускаемые как процессы на машине пользователя. Подключение локального сервера требует указать команду для его запуска. Эта команда хранится в проектном конфигурационном файле и исполняется с правами пользователя, запустившего Claude Code.
Исследователь из ImmersiveLabs показал, что таким файлом можно управлять удалённо. Если разработчик доверяет папке проекта и переключается на ветку чужого запроса на включение изменений, то при запуске Claude Code программа считывает конфигурацию и автоматически инициализирует описанные в ней MCP-серверы. Никакого дополнительного подтверждения при этом не появляется. В доказательстве концепции он использовал репозиторий Bootstrap, но подчёркивает, что атака возможна на любом проекте, где применяется такой агент.
Вредоносная запись может выглядеть как безобидное инструментальное подключение, например, для автоматизации браузера или работы с базой данных. Вместо реального сервера команда запускает полезную нагрузку, которая собирает учётные данные из переменных окружения, SSH-ключей, облачных токенов и конфигураций агента. Более изощрённый вариант позволяет загрузить код из внешнего источника или использовать пакетный менеджер для установки вредоносного пакета. Для ревьюера такая запись неотличима от легитимной, поскольку вредоносная логика скрыта в опубликованной зависимости.
Характерно, что запуск локального MCP-сервера происходит до аутентификации. Достаточно открыть Claude Code в запущенной среде разработки, даже не нажимая ни на какие команды. Это делает атаку особенно коварной: разработчик, привыкший доверять репозиторию, не ожидает, что простой переключатель ветки приведёт к выполнению кода.
Anthropic в официальном ответе исследователю заявила, что модель доверия рабочей области устанавливает границу безопасности в момент первого решения пользователя довериться папке. Доверие автоматически распространяется на все конфигурационные файлы в этой папке, а также на любое содержимое, которое будет извлечено в неё в будущем, включая другие ветки. Аналогичный механизм используется в VS Code Workspace Trust, где обновлённое содержимое также не запрашивает повторного подтверждения. Поэтому выполнение проектной конфигурации после переключения ветки, по мнению компании, не пересекает новую границу безопасности.
С такой позицией согласны не все. Исследователь отмечает, что "я доверяю этой папке" и "я доверяю каждому запросу на изменения, который будет открыт в этой папке" - это принципиально разные решения. В обычной среде просмотр файла, полученного от другого разработчика, безопасен: редактор не выполняет его код автоматически. ИИ-агент в этом смысле ведёт себя иначе, потому что чтение конфигурации сразу приводит к запуску процессов. Это создаёт сценарий, схожий с атакой на цепочку поставок, когда вредоносное изменение приходит через легитимный канал совместной работы.
Разработчикам, использующим Claude Code, исследователь советует относиться к конфигурациям агентов как к исполняемому коду. Он рекомендует ввести обязательное ревью для изменений в таких файлах, блокировать появление новых MCP-серверов в запросах на включение изменений и просматривать конфигурацию до переключения на недоверенную ветку. Дополнительно стоит использовать изолированные виртуальные машины или песочницы для проверки чужих изменений, ограничивать исходящий сетевой трафик и не хранить в окружении разработчика долгоживущие облачные токены и ключи доступа.
В качестве альтернативного подхода исследователь предлагает привязывать доверие к хэшам исполняемых конфигурационных файлов. В этом случае при каждом изменении файла, например, после переключения ветки, Claude Code запрашивал бы подтверждение и показывал пользователю, что именно поменялось. Такой механизм не является абсолютной защитой, но он превращает невидимое выполнение кода в осознанное решение. Сейчас же разработчик может не знать, что доверие, однажды выданное папке, распространяется на ещё не просмотренные ветки.
Несмотря на возражения, Anthropic сохраняет текущую модель поведения. Поэтому ответственность за безопасность ложится на пользователей. Им следует проверять изменения в конфигурационных файлах агентов до того, как запускать инструмент, особенно если работа идёт с чужими ветками. Уязвимость затрагивает все сценарии, где Claude Code используется в репозиториях с внешним доступом, и пока не требует дополнительных действий со стороны разработчиков для исправления.
Ссылки