AI-ассистенты для написания кода, такие как Claude Code, Cursor и Grok Build, могут выполнять произвольные команды в тот самый момент, когда разработчик открывает недоверенный репозиторий, без каких-либо кликов или запросов. Уязвимость возникает из-за того, как эти инструменты используют функцию Git core.fsmonitor для сканирования файлов проекта.

Почему это важно именно сейчас

Разработчики всё чаще полагаются на AI-агентов для предложения кода, рефакторинга функций или даже написания целых модулей. Этим агентам нужен быстрый снимок рабочего пространства, поэтому они запускают git status в фоновом режиме. Когда Git считывает файл .git/config репозитория, любое значение, назначенное core.fsmonitor, рассматривается как shell-команда, которую Git должен выполнить. Злоумышленник может поместить специально подготовленную команду в эту запись конфигурации, и фоновый вызов Git со стороны AI запустит её еще до того, как пользователь введет хотя бы одну строку кода.

Код выполняется с привилегиями самого разработчика, обходя песочницу, в которой обычно работает AI-агент. На практике скомпрометированный репозиторий может установить вредоносное ПО, похитить учетные данные или изменить исходные файлы — и всё это в то время, когда разработчик полагает, что ассистент просто предлагает варианты кода.

Как происходит атака

  1. Подготовка — злоумышленник создает репозиторий, в .git/config которого содержится строка вида core.fsmonitor = /path/to/malicious/script.
  2. Доставка — репозиторий передается в виде zip-архива, копируется с USB-накопителя, синхронизируется через общий диск или иным способом помещается на машину жертвы с уже имеющейся папкой .git.
  3. Триггер — разработчик открывает папку в IDE с поддержкой AI. Ассистент запускает git status для сбора контекста. Git считывает локальный конфиг, выполняет команду core.fsmonitor, и вредоносный скрипт запускается немедленно.

Обычный git clone не подвергает этому риску, так как клонирование создает новую директорию .git, в которой отсутствует подмененный конфиг. Атака работает только тогда, когда злоумышленник может предоставить уже существующую папку .git.

Что стоит на кону

  • Индивидуальные разработчики могут столкнуться с компрометацией своих машин без осознания этого, теряя любые данные, к которым имеет доступ AI-агент.
  • Команды, обменивающиеся кодом через внутренние диски или zip-файлы от подрядчиков, могут распространить полезную нагрузку на множество рабочих станций.
  • Поставщики инструментов рискуют репутацией, если пользователи свяжут взлом с работой AI-ассистента, а не с базовым взаимодействием с Git.

Поскольку вредоносная команда наследует права пользователя, она может изменять любые файлы, доступные разработчику, включая SSH-ключи, скрипты сборки или учетные данные для развертывания.

Меры защиты, которые разработчики могут принять уже сегодня

  • Не доверяйте локальным настройкам Git. Конфигурация репозитория переопределяет глобальные значения каждый раз, когда AI-ассистент запрашивает данные о проекте.

  • Проверяйте запись core.fsmonitor перед открытием папки с ассистентом:

    git config --get core.fsmonitor
    

    Если там указано какое-либо значение, считайте его подозрительным.

  • Удалите запись с помощью:

    git config --local --unset core.fsmonitor
    
  • Проверьте другие рискованные ключи, которые Git может выполнять: hooksPath, sshCommand, pager, editor, filter. Используйте тот же паттерн git config --get, чтобы убедиться, что они пусты.

  • Предпочитайте чистые клоны для любого кода, который вы собираетесь передавать AI-инструменту. Если вам необходимо работать с zip-архивом или переданной папкой, удалите её директорию .git и заново инициализируйте репозиторий или сначала выполните вышеуказанные проверки.

На ком лежит ответственность

Эта уязвимость не является недостатком языковых моделей, на которых работают Claude Code, Cursor или Grok Build; это следствие того, как эти инструменты собирают информацию о файлах. Некоторые вендоры начали более строго изолировать (sandbox) вызовы Git, но поведение по умолчанию всё еще подразумевает доверие к локальным настройкам репозитория. Пока индустрия не примет стандарт, который удаляет или игнорирует потенциально опасные записи конфигурации при сканировании рабочего пространства AI-агентом, разработчики должны оставаться последним рубежом обороны.

За чем следить в дальнейшем

  • Обновления инструментов, которые явно очищают конфигурацию Git перед вызовом git status.
  • Руководства сообщества по безопасной разработке с помощью AI, которые, вероятно, будут включать рекомендации по предварительным проверкам.
  • Исследования в области безопасности, которые могут обнаружить дополнительные ключи конфигурации Git, способные выполнять код, расширяя список вышеупомянутых пяти.

Итог: AI-ассистент может быть удобным напарником по программированию, но он с радостью выполнит любую команду, спрятанную в Git-конфиге репозитория. Проверяйте рабочее пространство, прежде чем позволить ассистенту работать с ним.