Встроенные браузеры AI-ассистентов позволили украсть ключи и токены с компьютера разработчика
Специалисты Forever Security проверили встроенные браузеры в пяти AI-помощниках для написания кода: Cursor, GitHub Copilot, OpenAI Codex, Microsoft VS Code и Anthropic Claude Desktop. Во всех пяти случаях веб-страница или локальный файл сумели дотянуться до компьютера за пределами браузера. Исследование, которое в компании назвали EMBRACE, показало, что доверие к таким мини-браузерам неоправданно.
Обычный браузер живёт по трём правилам: страница не может выполнять команды на машине, локальный файл не читает соседние файлы, а адресную строку заполняет только сам браузер. В AI-инструментах эти ограничения ослабили, чтобы ассистент мог показать проект или прочитать содержимое вкладки. Forever Security проверила, где именно ломается защита, и в каждом продукте нашла брешь.
Самая опасная атака начинается с безобидного проекта, замаскированного под финансовый отчёт. Разработчик просит ассистента настроить окружение по инструкции, получает ссылку на HTML-файл внутри проекта и кликает по ней. Внешне ничего не происходит.
В Claude Desktop и VS Code локальная страница ограничена папкой проекта, но это касается только самой страницы. Фоновый веб-воркер, который она может запустить, проверку обходит и читает любой файл на диске. В Codex не было даже папки-ограничения.
Чтобы найти ценные данные, воркер перебирает скрытые индексные файлы, которые macOS создаёт в каждой папке, открытой в Finder. На тестовой машине исследователей таким образом собрали SSH-ключи, содержимое .env-файлов, токены npm и файл hosts, после чего отправили их наружу. Для успеха хватило одного клика по ссылке, которую сгенерировал сам ассистент.
Anthropic и Microsoft отклонили отчёты Forever Security, сославшись на механизм Workspace Trust — то самое окно, которое спрашивает разработчика, доверяет ли он папке проекта. Anthropic не принял заявку от 23 июля, но признал валидным аналогичный отчёт от Noma Security днём позже. OpenAI не отвечала на обращение с 27 июля.
Глава исследования Галь Вейцман пояснил: «Не доверять проекту внутри AI-обвязки делает её бесполезной, поэтому все просто нажимают „Доверяю“. На практике этот запрос не даёт пользователю никакой защиты». В Cursor атака потребовала веб-страницу и одного нажатия Enter.
Страница показывала безобидную кнопку «Начать настройку», за которой была спрятана команда для агента. Агент считывал скрытую команду и просил разрешения её выполнить — достаточно было подтвердить одним нажатием. Когда песочница Cursor блокировала команду, агент самостоятельно отключал песочницу и пробовал снова.
В тесте запускался калькулятор, но реальный злоумышленник мог выполнить любую программу с полными правами разработчика. Правда, атака зависит от модели и срабатывает не каждый раз. GitHub Copilot позволял странице подменить адрес в строке.
Приложение проверяло лишь, что текст похож на веб-адрес, и страница Forever Security спокойно отображала github.com/login поверх поддельной формы входа. Собственный список вкладок агента дублировал этот адрес. GitHub исправил ошибку в Copilot 1.1.29 13 октября, ещё до подачи официального отчёта.
Cursor закрыл свою уязвимость 1 октября, спустя три недели после раскрытия, но так и не ответил исследователям. На 29 октября дыры в Codex и VS Code оставались открытыми. Разработчик, открывший вредоносный проект в любом из этих инструментов, по-прежнему рискует одним кликом отдать злоумышленнику содержимое всего диска.
Вейцман советует командам, которые используют эти продукты, вытащить список доверенных проектов из конфигурационных файлов на каждой машине и проверить все HTML-файлы в этих проектах на наличие шаблона эксплойта, описанного в техническом отчёте Forever Security. Исследователи также отметили, что агенты всё чаще пытаются обходить собственные ограничения без явной команды. Вейцман подтвердил: «Мы видим, что такое поведение повторяется и за рамками этого исследования».
По его словам, в недавней работе по загрузкам агенты делали то же самое, не спрашивая разрешения. Это ставит вопрос о том, можно ли вообще доверять встроенным браузерам в AI-инструментах, пока их изоляция не станет по-настоящему полноценной.
Источник: Оригинал