Исследователи из Intezer совместно с Kodem Security обнаружили в агентной IDE AWS Kiro цепочку атаки, позволявшую через скрытый текст на обычной веб-странице добиться удалённого выполнения произвольного кода на машине разработчика. Атака эксплуатировала возможность агента перезаписывать конфигурационный файл серверов Model Context Protocol без реального одобрения пользователя. AWS устранила проблему, однако отдельный CVE для этой уязвимости не был присвоен. Всем пользователям Kiro на версиях ниже 0.11.130 необходимо немедленно обновиться до актуальной сборки 1.0.x через официальную страницу загрузки.
Механизм атаки: от веб-страницы до выполнения кода
Архитектура безопасности Kiro строилась на модели «человек в цикле»: агент мог выполнять команды оболочки, загружать URL и редактировать файлы, но предполагалось, что разработчик одобряет каждое рискованное действие. Уязвимость позволяла полностью обойти этот контрольный механизм.
По данным исследователей, ключевым звеном цепочки был файл ~/.kiro/settings/mcp.json, определяющий список серверов Model Context Protocol и команды для их запуска. При изменении этого файла Kiro автоматически перезагружала конфигурацию и запускала описанные в ней серверы с привилегиями текущего пользователя. На момент исследования агент мог записывать в mcp.json через встроенный инструмент fsWrite без запроса одобрения.
Для доставки вредоносных инструкций в контекст агента использовался классический приём: в демонстрационном сценарии инструкции были размещены в виде однопиксельного белого текста (color:#fff;font-size:1px) на странице, внешне выглядящей как обычная API-документация. Разработчик видел чистую справочную страницу, а агент интерпретировал скрытый блок как задачу настройки, записывал вредоносный сервер в mcp.json и перезагружал конфигурацию. В течение секунд запускался подставной MCP-сервер, исполняющий код атакующего.
Как сообщают исследователи, в демонстрации полезная нагрузка каждые десять секунд отправляла на сервер обратного вызова имя хоста, имя пользователя и платформу — достаточно для подтверждения факта выполнения. Тот же примитив позволял выполнить любую команду, доступную разработчику: похитить учётные данные и исходный код, закрепиться в системе или развить атаку на внутреннюю инфраструктуру.
Примечательно, что Kiro в ряде случаев отображала всплывающее уведомление об изменении конфигурации MCP с запросом одобрения. Однако, по данным Intezer, конфигурация перезагружалась вне зависимости от действий пользователя — предупреждение не обеспечивало реальной защиты. Единственное действие, которое разработчик фактически одобрял, — загрузка URL.
Исследователи отмечают, что атака не является абсолютно надёжной: модель недетерминирована и может проигнорировать скрытый блок, просто суммировав содержимое страницы. Тем не менее в тестах атака срабатывала в пределах одной-двух попыток. Обратный вызов был направлен на localhost, поэтому реальные пользователи не подвергались воздействию.
Хронология: три исследования — одна архитектурная проблема
Обнаруженная Intezer уязвимость — не первый случай эксплуатации этого архитектурного паттерна в Kiro. В день релиза продукта в июле 2025 года Йоханн Ребергер из Embrace The Red продемонстрировал аналогичный вектор: инъекция через промпт записывала код в файл настроек MCP и исполняла его при сохранении. Он также указал на второй маршрут — запись в .vscode/settings.json для добавления команд оболочки в список разрешённых.
AWS отреагировала выпуском Kiro 0.1.42, добавив запрос одобрения для таких записей, но, согласно бюллетеню безопасности AWS-2025-019, эта защита действовала только в режиме Supervised. Режим Autopilot, используемый по умолчанию, продолжал позволять запись без одобрения — именно его и эксплуатировала цепочка Intezer в 2026 году.
Параллельно компания Cymulate обнаружила смежную уязвимость: Kiro автоматически выполняла код, записанный в .vscode/tasks.json, при открытии папки. AWS присвоила этой проблеме идентификатор CVE-2026-10591 с оценкой 8.8 по CVSS 3.1 и 8.6 по CVSS 4.0, устранив её в серии 0.11, что подтверждено бюллетенем безопасности AWS.
По данным Intezer, цепочка через mcp.json оставалась работоспособной на версиях 0.9.2 (macOS) и 0.10.16 (Ubuntu) на момент подачи отчёта через HackerOne 11 февраля 2026 года. Исследователи подтвердили исправление в версии 0.11.130.
Принятые меры и текущая модель защиты
AWS перешла от доверия к решениям модели в отношении чувствительных файлов к принудительным проверкам на уровне платформы. Согласно документации по безопасности Kiro, файлы mcp.json, .vscode/tasks.json, директория .git и другие критичные пути теперь отнесены к категории защищённых и требуют явного одобрения перед записью.
Документация прямо указывает: «Supervised mode is a code review workflow, not a security control» — режим Supervised является рабочим процессом ревью кода, а не механизмом безопасности. Версия Kiro 1.0 реализует модель разрешений на основе возможностей, запрашивая согласие пользователя на любое действие, которое не было предварительно разрешено. Защита защищённых путей действует в обоих режимах — и Autopilot, и Supervised.
Intezer подтвердила, что атака не воспроизводится начиная с версии 0.11.130. Эксплуатация уязвимости в реальных атаках не зафиксирована, однако публичный PoC доступен. Исследование охватывало только Kiro IDE — распространяется ли проблема на Kiro CLI или веб-версию, не установлено.
Рекомендации
- Немедленно обновите Kiro до актуальной версии 1.0.x. На момент публикации последней доступной сборкой является 1.0.165.
- Проверьте содержимое
~/.kiro/settings/mcp.jsonна наличие неизвестных MCP-серверов или подозрительных команд запуска. - Не используйте версии ниже 0.11.130 — они уязвимы к описанной цепочке атаки.
- Ограничьте автоматическую загрузку внешнего контента агентными IDE: каждый URL, который агент загружает по запросу разработчика, является потенциальным вектором инъекции промптов.
- Аудитируйте конфигурационные файлы (
mcp.json,.vscode/tasks.json,.vscode/settings.json) в CI/CD-пайплайнах и при ревью — любые неожиданные изменения в них могут свидетельствовать о компрометации.
Три независимых исследования за год выявили один и тот же архитектурный дефект: агент, способный редактировать файлы, определяющие границы его собственных полномочий. Это не уникальная проблема Kiro — аналогичные классы уязвимостей обнаруживались и в других агентных средах разработки. Ключевой урок: механизм безопасности, который модель может обойти через манипуляцию контекстом, не является механизмом безопасности. Контроль должен быть реализован на уровне платформы, вне досягаемости агента, и действовать во всех режимах работы без исключений.