Скрит текст на уеб страница е бил достатъчен, за да накара Kiro – AI средата за разработка (IDE) на AWS – да пренапише собствения си конфигурационен файл и да изпълни код на атакуващия върху машината на разработчика, без да има стъпка за одобрение, която да го спре.
Компанията Intezer, съвместно с Kodem Security, откри при проучване, че обикновена заявка като подканване на Kiro да направи резюме на страница може да завърши с отдалечено изпълнение на код. AWS отстрани уязвимостта и за нея не е определен CVE идентификатор.
Моделът за сигурност на Kiro се основава на това човек да кликне върху бутона „позволи“. Асистентът може да изпълнява конзолни команди, да извлича URL адреси и да редактира файлове, като дизайнът предполага разработчикът да преглежда всичко рисково, преди то да се случи. Тази стъпка на одобрение е границата на сигурността, а откритият дефект е позволила на атакуващия да я заобиколи, без на разработчика изобщо да му бъде предоставен избор.
Слабото място е бил файлът, който указва на Kiro кои външни инструменти да зареди. Kiro чете своя списък с Model Context Protocol (MCP) сървъри и точната команда, използвана за стартиране на всеки от тях, от файла ~/.kiro/settings/mcp.json.
Когато този файл се промени, Kiro го презарежда и стартира всичко, което е описано в него, на хост машината с правата на разработчика. По време на изследването Kiro е можел сам да пише в mcp.json чрез своя инструмент fsWrite без изискване за одобрение и да го презарежда автоматично.
Всеки, който е можел да повлияе на съдържанието на този файл, е можел да регистрира сървър, чиято стартираща команда е произволен код, и той се е изпълнявал в момента, в който Kiro се презареди.
Вкарването на текст в контекста на Kiro е лесната част. Асистентът извлича външно съдържание всеки път, когато разработчикът го помоли да зареди URL адрес, да прочете документация или да потърси в мрежата. Демонстрацията на концепцията (PoC) на Intezer е заложила своите инструкции в бял текст с размер един пиксел (color:#fff;font-size:1px) в иначе стандартна страница с API документация.
Разработчикът вижда чиста справочна информация за API. Kiro обаче прочита скрития блок като задача за настройка, записва зловредния сървър в mcp.json и се презарежда. В рамките на секунди компрометираният сървър се стартира и кодът на атакуващия се изпълнява.
В демото на Intezer инжектираният код само е изпращал обратно към сървъра името на хоста на машината, потребителското име и платформата на всеки десет секунди – колкото да докаже изпълнението. Същият примитив би могъл да изпълни всяка команда, достъпна за разработчика, което е достатъчно за кражба на идентификационни данни и изходен код, установяване на постоянно присъствие или проникване във вътрешните системи, до които разработчикът има достъп.
Изследователите са насочили обратната връзка към localhost, за да не бъдат изложени на риск реални потребители на Kiro, и отбелязват, че атаката не е напълно надеждна: моделът е недетерминиран и може да обобщи страницата, като игнорира скрития блок. При техните тестове тя е проработила в рамките на един или два опита. Един успешен опит обаче е напълно достатъчен.
В някои случаи Kiro е показвал изскачащ прозорец с предупреждение, че MCP конфигурацията се е променила, и е искал одобрение. Това не е оказвало никакво влияние. Конфигурацията се е презареждала независимо от това какво е кликнал разработчикът, така че предупреждението не е предлагало реална защита. Единственото действие, което разработчикът всъщност е одобрил, е било зареждането на URL адреса.
Възможността асистентът да пише във файла, който определя какво му е позволено да изпълнява, е излизала наяве в Kiro и преди. В деня на пускането на Kiro през юли 2025 г. Йохан Ребергер от „Embrace The Red“ показа същия трик с преминаване от запис в mcp.json към изпълнение на код: инжектиране на подкана е вкарало персонализиран код в MCP конфигурационен файл и го е стартирало в момента на записването на файла.
Той отбеляза и втори път – чрез писане в .vscode/settings.json за разрешаване на конзолни команди. Реакцията на AWS тогава – версия Kiro 0.1.42 – добави подкана за одобрение на тези записвания, но само в режим „Supervised“. По подразбиране режимът „Autopilot“ продължи да пише във файла самостоятелно и именно този режим беше използван при атаката на Intezer през 2026 г. Тогава също не беше издаден CVE идентификатор.
Други откриха подобни варианти от същия клас. Cymulate съобщи, че Kiro автоматично ще изпълни код, записан в .vscode/tasks.json, при отваряне на папка. AWS присвои на това CVE-2026-10591 (оценка 8.8 по CVSS 3.1, 8.6 по CVSS 4.0) и го коригира в серията 0.11.
Атаката на Intezer през mcp.json все още е била активна във версии 0.9.2 (за macOS) и 0.10.16 (за Ubuntu), когато компанията я е докладвала през февруари 2026 г., и е потвърдено, че е отстранена във v0.11.130.
Решението на AWS беше да спре да се доверява на преценката на модела за тези файлове и да премести проверката в самата платформа. Сега Kiro маркира mcp.json, .vscode/tasks.json, директорията .git и други чувствителни файлове като защитени пътища, като всеки от тях изисква изрично одобрение преди запис.
Собствената му документация директно посочва: „Режимът Supervised е работен процес за преглед на код, а не мярка за сигурност.“ Версия 1.0, която последва, залага още по-сериозно на този принцип, с модел на разрешения, базиран на възможности, който изисква съгласие за всичко, което разработчикът не е разрешил предварително.
Тази комбинация затваря пътя, използван от Intezer: от компанията потвърдиха, че атаката е неуспешна във версия 0.11.130 и за разлика от корекцията от 2025 г., проверката на защитените пътища е в сила както в режим Autopilot, така и в Supervised.
Intezer докладва уязвимостта чрез платформата HackerOne на 11 февруари 2026 г., а до 3 април от AWS съобщиха, че корекцията е внедрена в последната им версия, макар че така и не назоваха номера ѝ; изследователите сами я потвърдиха във v0.11.130.