Вредоносный .git превращает ИИ-агентов в исполнителей чужого кода

· Безопасность
Manifold Security раскрыла восемь уязвимостей в семи консольных ИИ-агентах для программирования: репозиторий сам подсовывает команду, которую агент запускает на машине разработчика — вне песочницы и без запроса подтверждения.

cover.svg

Компания Manifold Security опубликовала исследование под названием GitSpawn, описывающее восемь уязвимостей в семи консольных ИИ-агентах для написания кода. Суть у всех одна: репозиторий с помощью собственной конфигурации Git указывает команду, которую агент послушно выполняет на компьютере разработчика. Команда запускается с правами пользователя, за пределами песочницы агента и без всякого запроса на подтверждение — то есть может читать, изменять и удалять файлы жертвы.

Где прячется дыра

По словам исследователей, проблема не в модели и не в чём-то новом, а «в обыкновенной сантехнике под капотом» — в том подпроцессе, который агент запускает при старте сессии, чтобы понять, где он находится. Ключ core.fsmonitor — это настройка производительности Git, значением которой служит команда для определения изменённых файлов. Git читает её прямо из .git/config репозитория, и любая операция, обновляющая индекс (в том числе git status и git diff), эту команду выполняет. Агенты вызывают такие команды в фоне, чтобы узнать текущую ветку и список изменений, — и не трогают конфигурацию репозитория.

Важная оговорка: обычное клонирование настройку не переносит. Атака срабатывает, только если репозиторий приходит уже готовыми файлами с сохранённым каталогом .git — через общий архив, сетевой диск, папку синхронизации или USB-накопитель.

Кто уже исправился, а кто нет

Заплатки вышли для goose, Claude Code и Cursor. На момент повторной проверки 1 сентября код из репозитория по-прежнему выполняли Hermes Agent, Qwen Code, Grok Build и второй путь в Claude Code, доступный через claude ultrareview. При этом у ряда агентов вредоносная нагрузка срабатывает ещё до принятия диалога доверия к рабочей области (Claude Code, Hermes), до аутентификации пользователя (Qwen Code) или на первом же нажатии клавиши (Grok Build).

OpenAI в тот же день выпустила три собственных CVE для Codex, связанных с тем же классом проблем. Показательна и повторяемость: Sonar сообщала о том же ещё в апреле, отмечая, что Anthropic однажды уже переставляла последовательность запуска, чтобы закрыть брешь, — а в версии 2.1.193 старое поведение вернулось. Тот же приём обхода диалога доверия ранее находили в Visual Studio Code и в IDE от JetBrains.

Случаев эксплуатации в реальных атаках пока не зафиксировано, и ни один из CVE не попал в каталог активно эксплуатируемых уязвимостей CISA.

Что делать

Перед тем как открывать полученную извне папку в агенте, стоит заглянуть в .git/config и проверить core.fsmonitor, core.hooksPath и attr.tree. Команда git config --get core.fsmonitor покажет значение внутри пришедшего репозитория, а git config --global core.fsmonitor false отключит настройку по умолчанию. Разработчикам агентов исследователи советуют глушить конфигурацию при фоновых вызовах — например, через git -c core.fsmonitor=false status.


Источник: The Hacker News

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.