Как файл проекта заставляет ИИ украсть данные?

Исследователи Mindgard обнаружили в агентной среде разработки Amazon Kiro уязвимость, позволявшую содержимому чужого репозитория управлять ИИ-агентом и отправлять локальные данные на сервер злоумышленника. Проверка проводилась в Kiro IDE 0.7.45 для Windows; последней указанной версией была 1.0.337. CVE для ошибки не присвоили, сложность эксплуатации оценили как низкую. Директор по маркетингу Mindgard Фергал Глинн пояснил: «Контролируемое атакующим содержимое репозитория могло повлиять на агента Kiro и в итоге привести к передаче конфиденциальной локальной информации наружу». Подробности передали изданию The Hacker News. После публикации материал дополнили ответом Amazon; перед ним по неизвестной причине стояла отдельная отметка «8.140.».
Механизм Kiro Powers объединяет конфигурации серверов Model Context Protocol (MCP), хуки, контекстные знания и управляющие файлы . Такой файл служит постоянной инструкцией для агента: сообщает, какие MCP-инструменты доступны и в каких случаях ими пользоваться. Получается своеобразная памятка для нового сотрудника, только читает её модель, способная обращаться к файлам и инструментам. Если или связанный с ним проект подготовил злоумышленник, граница между справочным материалом и командой становится почти незаметной.
Для запуска атаки требовались два действия. Сначала пользователь должен был открыть вредоносный проект именно через файл рабочей области, выбрав File → Open Workspace From File. Обычное открытие папки нужного условия не создавало. Затем достаточно было отправить агенту Kiro любое сообщение. Атака воспроизводилась и в доверенных, и в недоверенных рабочих областях. Пользователю не требовалось вводить вредоносный запрос, упоминать подложенный текст, просить прочитать секретный файл либо отправить его в сеть. После загрузки подготовленной рабочей области уязвимую цепочку могло запустить совершенно рядовое обращение к агенту.
Сценарий проходил через несколько функций IDE. Репозиторий передавал модели инструкции; агент читал локальную или рабочую информацию; затем помещал её в настройки, связанные с безопасностью; другая возможность Kiro превращала изменённую конфигурацию в сетевой запрос, уходивший на внешний адрес атакующего. В одной цепочке соединялись косвенная инъекция промпта, несанкционированное чтение файлов, изменение конфигурации IDE и утечка по сети. Причина лежала не в одном неудачном разрешении: Kiro одновременно интерпретировал текст проекта и выполнял действия с повышенными последствиями.
Amazon сообщила The Hacker News: «Проблема была устранена в обновлении Kiro IDE от 15 января, вскоре после получения сообщения об уязвимости. Пользователям следует установить последнюю версию Kiro, чтобы получить соответствующие исправления безопасности». Установка обновления закрывает именно известный путь эксплуатации, однако устройство атаки полезно учитывать при работе с любыми агентными IDE: файлы репозитория могут выглядеть как обычный контекст и при этом задавать поведение инструментов, имеющих доступ к машине.
Новая находка развивала предыдущий сценарий Mindgard с управляющим файлом. Скрытая инструкция заставляла агента прочитать локальный файл, встроить его содержимое в запрос Markdown-изображения и обратиться к серверу злоумышленника. Секрет становился частью адреса изображения и покидал компьютер при попытке его отобразить. Пользователь видел работу с Markdown, а фактическим результатом оказывалась передача данных. Этот приём показал, что даже функция отображения контента превращается в канал утечки, если модель сама формирует сетевой запрос.
У Kiro уже была и более тяжёлая ошибка: CVE-2026-10591 с оценкой 8,8 по CVSS, устранённая в июне 2026 года. Из-за недостаточного контроля доступа удалённый неаутентифицированный атакующий мог навязать инструкции на запись в пути .vscode/tasks.json и ~/.kiro/settings/mcp.json, связанные с выполнением команд. Вредоносные изменения могли сработать автоматически при открытии папки. По объяснению Intezer, скрытый текст размещался даже на веб-странице, которую читал Kiro: агент переписывал собственную конфигурацию MCP-сервера, после чего атакующий получал возможность выполнять произвольный код. Подозрительного запроса на подтверждение не возникало, хотя разработчик мог попросить лишь о вполне законной операции.
Схожие цепочки нашли и в других инструментах. В OpenAI Codex CLI для Windows инъекция через превращала обычный веб-поиск в скрытый запуск команд, включая выполнение на уровне хоста за пределами встроенной песочницы. У Cursor CLI обнаружили zero-click RCE: непрямая инструкция записывала в рабочую область вредоносный исполняемый файл и запускала его без прямой команды пользователя. Cursor, GitHub Copilot CLI, Google Gemini CLI и приложение Codex для Windows также оказались подвержены перехвату порядка поиска. Если положить в текущий каталог поддельный git.exe или which.exe, система могла выбрать его раньше доверенной системной программы.
Отдельный класс ошибок связан с каталогами C:\ProgramData\<application>, которым доверяют Anthropic Claude Code, Cursor, Codex CLI и Google Gemini CLI. Пользователь с низкими привилегиями мог разместить там managed-settings.json, hooks.json, system-defaults.json либо config.toml. Команды из этих файлов затем исполнялись в сеансе другого пользователя без предупреждения, подтверждения и административных прав. Для Claude Code проблема получила номер CVE-2026-35603. Другая ошибка Claude Code, CVE-2026-25725 с оценкой 7,7, позволяла выйти из песочницы: уже находившийся внутри неё атакующий создавал .claude/settings.json с хуком, а произвольная команда запускалась на хосте при следующем сеансе Claude Code.
Набор уязвимостей Google Gemini CLI позволял атакующему из песочницы пересечь границу контейнера, выполнить код в основной системе и украсть пользовательский OAuth-токен Google. В песочнице Codex CLI слабым местом стал вызов инструмента apply_patch. Ему разрешалось создавать и менять файлы в каталоге .codex внутри рабочей папки; прямая либо косвенная инъекция использовала это разрешение для последующего запуска команд на хосте. В обоих случаях опасность возникала из вполне штатных возможностей, которым приложение доверяло чуть больше, чем следовало.
Уязвимость NVIDIA NemoClaw CVE-2026-65105 с оценкой 8,1 давала атакующему контроль над локальным сервером моделей Ollama после единственного посещения вредоносной страницы. Скрытые инструкции записывались в шаблон чата модели и применялись ко всем следующим разговорам. В OpenClaw любой сайт мог полностью захватить агент без плагинов, расширений и действий пользователя: шлюз принимал соединения с localhost, а браузерная страница открывала локальный WebSocket и напрямую управляла агентом.
В диалоге установки MCP для Microsoft Visual Studio Code нашли ошибку CVE-2026-41613, также известную как Envade, с оценкой 8,8. Один щелчок по подготовленной deep-ссылке позволял выполнить код на компьютере разработчика либо направить вызовы MCP-инструментов через учётную запись атакующего. Уязвимость PromptFiction в Claude Desktop тоже требовала одного перехода по специально созданной ссылке: агент мог собрать конфиденциальные сведения или запустить произвольный код.
Mindgard связывает такие ошибки не с одним поставщиком или IDE, а с сочетанием интерпретации модели, логики приложения, агентных инструментов, конфигурационных файлов, внешних ресурсов, локального состояния и сетевых функций. Обычные программы раскрытия уязвимостей часто рассматривают отдельный дефект, тогда как здесь приходится проверять весь путь исполнения. Чем больше агент знает о системе и чем большим числом инструментов распоряжается, тем опаснее смешивать недоверенный текст с доверенными инструкциями. В случае Kiro для перехода от чужого репозитория к чтению файлов, правке настроек и отправке данных хватало открытия workspace-файла и одного обычного сообщения.


Новое на сайте

Ссылка