Что скрывается за кнопкой «Разрешить» в вашем ИИ-кодере?

Представьте: вы работаете в Cursor или Claude Code, ИИ предлагает отредактировать файл настроек, вы жмёте «Разрешить» — и всё, задача выполнена. Только вот на самом деле правка ушла совсем не в тот файл, который вы видели на экране. Звучит как сюжет для параноика, но именно это в начале июля обнаружили исследователи из компании Wiz, разобрав сразу шесть популярных ИИ-кодинг ассистентов. История получила имя GhostApproval, и она отлично объясняет, почему «одобрить действие ИИ» — это не всегда то, чем кажется.
Что нашли исследователи
Команда Wiz обнаружила систематическую проблему, затрагивающую 6 из ведущих ИИ-кодинг ассистентов: Amazon Q Developer, Anthropic Claude Code, Augment, Cursor, Google Antigravity и Windsurf. Суть в комбинации двух вещей. Первая — старый как Unix трюк с символическими ссылками (symlink): файл может выглядеть как один документ, а физически указывать совсем на другой. Вторая, более тревожная часть — в нескольких случаях внутренние рассуждения агента явно распознавали опасную цель, но диалог подтверждения, показанный пользователю, полностью скрывал эту информацию, и человек одобрял то, что казалось безобидной локальной правкой, тогда как агент писал в чувствительный файл за пределами рабочей папки проекта.
На практике это выглядело так: Wiz создали вредоносный репозиторий с симлинком под именем project_settings.json, который на самом деле указывал на файл SSH-ключей пользователя, а инструкция в README просила агента добавить «строку» в этот файл — на деле это была подсадка чужого SSH-ключа, маскирующаяся под обычную настройку. Диалог одобрения при этом честно спрашивал что-то вроде «Внести это изменение в project_settings.json?» — и ни слова о реальном адресате.
Кто отреагировал, а кто сказал «это не баг»
Реакция вендоров получилась показательно разной. Из шести компаний три быстро исправили проблему — AWS, Cursor и Google, две подтвердили получение отчёта и замолчали, а одна дала аргументированный отказ, назвав ситуацию «выходящей за рамки модели угроз». Речь про Anthropic: компания объяснила, что при первом запуске Claude Code в директории пользователь обязан подтвердить, что доверяет этой папке, и раз он затем сознательно подтвердил разрешение внутри директории с вредоносным симлинком, это выходит за пределы модели угроз Claude Code. Формально логично, но исследователи Wiz резонно замечают: согласие, данное на то, что видишь, — это не то же самое, что согласие на то, что реально произойдёт.
Позже ситуация чуть смягчилась: в текущих версиях Claude Code (2.1.173+) симлинки теперь резолвятся, и пользователей предупреждают перед записью в чувствительные файлы. При этом два вендора — Augment и Windsurf — на момент публикации так и не выпустили патч, а у Windsurf нашли особенно неприятный вариант: агент записывал изменения на диск ещё до того, как на экране появлялись кнопки «Принять» и «Отклонить».
Стоит ли паниковать
Тут важна честность: подтверждённых случаев эксплуатации этой уязвимости в реальных атаках публично не зафиксировано, находки Wiz основаны на рабочем прототипе, которым исследователи получили удалённое выполнение кода через перезапись файла SSH-ключей, а не на документированной атаке в дикой природе. Это исследование, а не эпидемия взломов. Но проблема системная и касается не одного продукта, а самого принципа «человек в контуре» — того самого экрана с кнопкой «Разрешить», на который сейчас опираются практически все агентные инструменты для кода.
А пользуются такими агентами сейчас действительно многие: по данным опроса CodeSignal, 91% инженеров уже применяют агентные ИИ-инструменты для кодинга вроде Claude Code и Cursor в своей работе, а 75% выпускали в продакшн код, частично или в основном сгенерированный ИИ, за последние полгода. Чем больше людей передоверяет агенту доступ к файловой системе, тем важнее понимать, где заканчивается реальный контроль.
Что делать, если вы работаете с ИИ-кодером
Хорошая новость — защититься несложно, и большинство советов не требуют ничего, кроме внимательности:
- Не открывайте незнакомые репозитории в агентном режиме, особенно если инструмент до сих пор не пофикшен — это касается любых чужих pull request'ов, клонов с GitHub и пакетов с непонятным происхождением.
- Отключайте авто-одобрение для правок файлов при работе с недоверенным кодом — общая рекомендация — не использовать ИИ-кодеры в режиме автоматического одобрения при работе с недоверенными репозиториями и не позволять агентам самостоятельно подтверждать запись файлов в непроверенных проектах.
- Обновляйте инструменты — патчи уже вышли у части вендоров, и откладывать обновление не имеет смысла.
- Проверяйте, что реально одобряете — если диалог называет один файл, а в логах или выводе агента мелькает другой путь, это красный флаг.
Как заметил один из исследователей Wiz: «любой раз, когда инструмент пишет в путь, контролируемый пользователем, без предварительного разрешения, символические ссылки становятся оружием». Звучит как техническая деталь, но именно из таких деталей складывается реальная безопасность при работе с автономными помощниками.
Вместо вывода
История с GhostApproval — хороший повод вспомнить: ИИ-агент, которому вы дали доступ к файлам, не обязан понимать границы вашего доверия так же, как понимаете их вы. Это не значит, что от агентных кодеров нужно отказываться — просто относиться к разрешениям чуть внимательнее, особенно с чужим кодом.
Если хочется спокойно разобраться с кодом, задать вопрос про безопасную настройку окружения или просто обсудить непонятный кусок логики без риска для файловой системы — в GEMERA AI можно пообщаться с GPT, Claude и Gemini прямо в Telegram-боте или веб-кабинете, без установки агентов с доступом к вашей системе. Иногда простой чат с моделью — самый безопасный способ получить совет по коду.