AI-ассистенты для написания кода, такие как Claude Code, Cursor и Grok Build, могут выполнять произвольные команды в тот самый момент, когда разработчик открывает недоверенный репозиторий, без каких-либо кликов или запросов. Уязвимость возникает из-за того, как эти инструменты используют функцию Git core.fsmonitor для сканирования файлов проекта.
Почему это важно именно сейчас
Разработчики всё чаще полагаются на AI-агентов для предложения кода, рефакторинга функций или даже написания целых модулей. Этим агентам нужен быстрый снимок рабочего пространства, поэтому они запускают git status в фоновом режиме. Когда Git считывает файл .git/config репозитория, любое значение, назначенное core.fsmonitor, рассматривается как shell-команда, которую Git должен выполнить. Злоумышленник может поместить специально подготовленную команду в эту запись конфигурации, и фоновый вызов Git со стороны AI запустит её еще до того, как пользователь введет хотя бы одну строку кода.
Код выполняется с привилегиями самого разработчика, обходя песочницу, в которой обычно работает AI-агент. На практике скомпрометированный репозиторий может установить вредоносное ПО, похитить учетные данные или изменить исходные файлы — и всё это в то время, когда разработчик полагает, что ассистент просто предлагает варианты кода.
Как происходит атака
- Подготовка — злоумышленник создает репозиторий, в
.git/configкоторого содержится строка видаcore.fsmonitor = /path/to/malicious/script. - Доставка — репозиторий передается в виде zip-архива, копируется с USB-накопителя, синхронизируется через общий диск или иным способом помещается на машину жертвы с уже имеющейся папкой
.git. - Триггер — разработчик открывает папку в 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-конфиге репозитория. Проверяйте рабочее пространство, прежде чем позволить ассистенту работать с ним.
