Наскоро разкрита уязвимост в AWS Kiro – интегрирана среда за разработка (IDE), захранвана от изкуствен интелект – показва как скрит ред текст на уебстраница може да бъде експлоатиран за отдалечено изпълнение на код (RCE) върху машината на разработчика, заобикаляйки модела за сигурност на платформата.

Kiro работи на принципа „човек в цикъла“ (human-in-the-loop), изискващ одобрение от потребителя за потенциално опасни действия като изпълнение на конзолни команди или промяна на чувствителни файлове. Това одобрение има за цел да запази човешкия контрол над действията на изкуствения интелект.

Изследователите обаче показаха, че тази граница на сигурност може да бъде тихомълком заобиколена чрез атака за инжектиране на подкани (prompt injection) от външно съдържание. Уязвимостта произтича от начина, по който големите езикови модели (LLM) обработват въвежданите данни.

За разлика от традиционните системи, които ясно разделят данните от изпълнимите инструкции, големите езикови модели разглеждат цялата входяща информация като потенциални команди, което прави инжектирането на подкани сериозен риск.

Скрит текст в уебсайт задейства отдалечено изпълнение на код в AWS Kiro

В случая с Kiro този риск се засилва от прекомерните права и слабата защита на критични конфигурационни файлове. В центъра на тази уязвимост е конфигурационният файл на Model Context Protocol, намиращ се на адрес ~/.kiro/settings/mcp.json, който дефинира външните инструменти и техните команди.

Kiro автоматично презарежда и изпълнява всички команди в този файл при всяка негова промяна. Изследователите установиха, че този файл е незащитен и може да бъде променян от ИИ агента с помощта на вътрешни инструменти без одобрение от потребителя.

Атакуващият може да експлоатира това, като вгради скрити инструкции в наглед безобидно уеб съдържание. Например, когато разработчик поиска от Kiro да обобщи документация или да извлече уебстраница, ако тази страница съдържа скрит злонамерен код за инжектиране на подкани, Kiro все пак ще изпълни тези инструкции.

В демонстрираната последователност на атака потребителят извлича външно съдържание, а Kiro обработва както видимия, така че и скрития текст. Инжектираните инструкции насочват Kiro да презапише конфигурационния файл на MCP със злонамерено съдържание.

Това регистрира сървър, който изпълнява произволен код на хост системата. След като бъде променен, Kiro автоматично презарежда и стартира злонамерения код, без потребителят изобщо да разбере.

Демонстрацията на концепцията (PoC) показа как атакуващите могат да внедрят олекотен злонамерен код на Node.js, за да извлекат системна информация като име на хоста, потребителско име и подробности за платформата към отдалечен сървър.

Въпреки че демонстрацията беше ограничена до безобидно събиране на данни, същият метод би могъл да се използва за кражба на идентификационни данни или за достъп до изходния код.

Важно е да се отбележи, че потребителят остава в неведение за компрометирането, вярвайки, че е одобрил единствено рутинна уеб заявка. Не се показват предупреждения за промени във файловете или за изпълнение на код, а подканите за сигурност относно промени в конфигурацията не успяват да предотвратят злонамерената дейност.

Според Никол Фишбайн от Intezer Research уязвимостта подчертава слабостта на това да се разглежда потребителското одобрение като граница на сигурност в инструменти, захранвани от ИИ. Ако един ИИ агент може да променя средата си на изпълнение без адекватни предпазни мерки, базовият модел на доверие се срива.

Този риск е особено тревожен, когато средата за разработка има достъп до чувствителни идентификационни данни или производствена инфраструктура. AWS е отстранила този проблем в по-късните версии на Kiro, като корекциите за сигурност са потвърдени във версия 0.11.130. Въпреки това не е назначен CVE идентификатор.

Този инцидент подчертава спешната нужда от по-силни предпазни мерки, особено около критичните конфигурационни файлове и контрола върху високорисковите действия.

Тъй като ИИ агентите се интегрират все по-дълбоко в работните процеси за разработка, този случай служи като напомняне, че контролите за сигурност трябва да се прилагат на системно ниво, а не единствено чрез поведението на модела. Дори един невидим ред текст може да превърне полезния асистент за кодиране в тих вектор за изпълнение на злонамерен код.