Специалисты по безопасности разобрали по косточкам два протокола, на которых сегодня строится взаимодействие ИИ-агентов с внешним миром — Model Context Protocol (MCP) от Anthropic и Agent2Agent (A2A) от Google. Выяснилось, что уязвимости к prompt injection в обоих случаях можно использовать не только во вред, но и во благо: специалисты Tenable показали, как та же техника ложится в основу защитных инструментов.
Что не так с MCP
MCP запустили в ноябре 2024 года как открытый стандарт для связи больших языковых моделей с внешними источниками данных и сервисами через управляемые моделью инструменты. Архитектура клиент-серверная: хосты с MCP-клиентами — например, Claude Desktop или Cursor — общаются с разными MCP-серверами, каждый из которых предоставляет свой набор инструментов.
Удобство унифицированного интерфейса оборачивается новыми рисками — от избыточных прав доступа до непрямых атак через prompt injection. Классический пример: MCP для Gmail. Атакующий отправляет письмо со скрытыми инструкциями, которые при разборе LLM запускают нежелательные действия — скажем, пересылку конфиденциальной почты на подконтрольный адрес.
Исследователи также описывают «отравление инструментов» (tool poisoning), когда вредоносные команды прячут прямо в описаниях инструментов, видимых модели, и атаки rug pull — инструмент ведёт себя безобидно, а затем меняет поведение через отложенное вредоносное обновление. В SentinelOne отмечают: пользователь одобряет доступ инструмента один раз, но выданные права могут переиспользоваться без повторного запроса подтверждения. Есть и риск «перекрёстного заражения» между инструментами и серверами, когда один MCP-сервер незаметно подменяет или искажает работу другого — это открывает новые пути утечки данных.
Prompt injection как инструмент защиты
Новое исследование Tenable демонстрирует обратную сторону той же техники. Можно создать инструмент со специально составленным описанием, которое заставляет LLM вставлять его перед вызовом любых других инструментов — по сути, журналировать все обращения. Такой инструмент фиксирует, «какой инструмент попросили запустить, включая имя и описание MCP-сервера и MCP-инструмента, а также запрос пользователя, который спровоцировал попытку запуска».
Второй сценарий — превращение инструмента в подобие файрвола, блокирующего неавторизованные вызовы. Как отмечает исследователь Бен Смит, в большинстве MCP-хостов инструменты требуют явного одобрения перед запуском, но многие методы работы с ними опираются на промптинг LLM через описания и возвращаемые значения самих инструментов — а поскольку языковые модели недетерминированы, недетерминированы и результаты.
A2A тоже под ударом
Одновременно Trustwave SpiderLabs раскрыла атаку на протокол Agent2Agent (A2A), который Google представила в апреле для взаимодействия ИИ-агентов между разными вендорами и фреймворками. Если MCP связывает LLM с данными, то A2A связывает одного ИИ-агента с другим — протоколы дополняют друг друга.
Суть атаки, по словам исследователя Тома Нивза: если агент уже скомпрометирован через другую уязвимость (например, на уровне ОС), злоумышленник может составить для него «карточку агента» (Agent Card) с сильно завышенными заявленными возможностями. Хост-агент начнёт выбирать скомпрометированный узел для каждой задачи и передавать ему все чувствительные данные пользователя на обработку. Атака не ограничивается перехватом данных — скомпрометированный агент может активно возвращать ложные результаты, которые затем будут использованы LLM или пользователем ниже по цепочке.
Источник: The Hacker News.