ИИ-агенты верят друг другу на слово, а хакеры этим пользуются

изображение: grok
Независимый ресёрчер Сайед Анас Мохиуддин описал атаки на ИИ-агентов, где ломать языковую модель не нужно. Достаточно захватить одного агента, и вредоносная инструкция поедет дальше по цепочке через MCP, A2A и другие протоколы, потому что внутренние агенты по дефолту считают запросы соседей доверенными. Технику он назвал protocol pivoting и проверил на системах Google, JPMorgan Chase, Weaviate и других организаций, часть из которых признала баги.
В основе лежат старые баги вроде SSRF, слабой валидации входных данных и раздутых полномочий. В обычном веб-приложении подобная дыра открывает одну функцию, а в мультиагентной системе захваченный узел становится трамплином к другим ИИ-системам, базам данных, API и внутренним сервисам.
Типичная связка из четырёх агентов устроена по схеме:
- первый принимает внешние данные, в том числе письма и веб-страницы;
- второй ищет информацию;
- третий ходит в базы данных с правами, которых у первого нет;
- четвёртый общается с внутренними сервисами.
Без проверки происхождения каждой команды хакеру хватит подсунуть инструкцию первому агенту, а дальше система сама дотащит её туда, куда напрямую не пробиться. Каждый агент при этом честно выполняет свою задачу, и проблема сидит на стыках, где разрешение одного агента превращается в разрешение другого. Это похоже на lateral movement по корпоративной сети, только прыгает по цепочке уже сам ИИ.
Интересно, что мониторинг видит обычные действия, каждое из которых разрешено политикой, а вся атака прячется в их последовательности.
В MCP Toolbox for Databases от Google нашлась уязвимость CVE-2026-14540 на восемь баллов из десяти по шкале CVSS. Она затрагивала версии от 0.3.0 до 1.4.0, потому что HTTP-клиент ходил по редиректам и не проверял конечный IP, а хитрый параметр мог увести запрос на внутренний адрес. Google закрыла дыру в версии 1.5.0 и отдельно занялась DNS rebinding. Toolbox открыт для всех, в том числе для российских команд, которые собирают агентов поверх баз данных, поэтому проверить версию стоит сразу.
В Bulk Export MCP от Rapid7 ресёрчер нашёл CVE-2026-97228 с оценкой меньше трёх баллов. Там сидела GraphQL-инъекция, потому что значение export_id попадало в запрос без нормальной проверки, а Rapid7 починила это в версии 0.6.2 через параметризованную переменную. Новых прав хакер не получал, а опасность возникала, когда обманутый MCP-клиент отдавал ему уже имеющиеся.
Одинаковые SSRF-ошибки Сайед Анас Мохиуддин нашёл в системах пяти организаций:
- у Google в MCP Toolbox for Databases с редиректами без проверки конечного IP;
- у JPMorgan Chase в MCP-сервере для поиска документации, где один инструмент ограничивал домены, а другой тянул содержимое по любому адресу, и банк всё исправил;
- у Weaviate в Google-модуле, где допустимые адреса теперь ограничены сервисами Google;
- у французской DINUM в MCP-сервере для платформы открытых данных, который ходил по URL из данных;
- в инфраструктуре индонезийского города Тангеранг на MCP-сервере Wazuh, где защита проверяла буквальные IP, но не резолвила доменное имя.
Пять команд накосячили одинаково не из-за копипаста, а потому, что упёрлись в один архитектурный вызов. Агенту надо разрешить ходить во внешние ресурсы и запретить лезть куда нельзя, а запросы теперь формирует ИИ, то есть классика веба в новой обёртке. Wazuh нередко ставят и в российских SOC, поэтому отечественным командам стоит проверить, как их MCP-серверы резолвят имена хостов.
Контент пользователя попадает к MCP-агенту, тот ловит вредоносную инструкцию, дёргает внутренний инструмент и делегирует задачу другому агенту через A2A, а второй агент считает первого доверенным и выполняет действие со своими правами. Исследователь X41 D-Sec Маркус Вервье заявил, что это разновидность indirect prompt injection, а смена протокола лишь усложняет обнаружение и не требуется для самой атаки.
Стоит обратить внимание, что граница между данными и командами в агентной среде держится только на архитектуре, а человек отличает письмо клиента от приказа админа без подсказок.
Сайед Анас Мохиуддин подготовил в июне Internet-Draft для IETF по безопасности MCP, пока это рабочий черновик, а не стандарт. Рекомендации в нём приземлённые:
- серверы, работающие с URL, проверяют конечный IP перед отправкой запроса;
- ограничения учитывают DNS rebinding;
- инструмент получает ровно столько прав, сколько нужно для операции;
- данные от модели считаются недоверенными, даже если их пересказал другой ИИ.
Принцип zero trust возвращается в мир агентов, потому что внутреннему агенту нельзя верить на слово только из-за того, что запрос прилетел от соседа:
- каждое чувствительное действие проходит отдельную авторизацию с проверкой операции, источника запроса и контекста;
- конечный адрес внешнего URL проверяет сервер, а не решение модели;
- права выдаются под конкретную задачу, а чувствительные операции требуют отдельного подтверждения.
ИИ сам по себе не механизм авторизации, а фильтр промптов может не распознать атаку, поэтому критичные ограничения должны жить на уровне инфраструктуры. Чем больше агент умеет читать, менять и отправлять, тем жирнее цель для хакера, а компрометация одного цифрового сотрудника с кучей прав превращается в полноценный инцидент.
Эксперты CISOCLUB отметили, что проблема упирается в привычку считать внутренний трафик безопасным, а ИИ-агенты эту привычку просто масштабировали. Старые баги вроде SSRF в агентной среде стоят дороже, потому что агент сам выбирает инструмент и параметры. Компаниям, которые тащат агентов в прод, нужно провести инвентаризацию MCP-серверов, проверить хранимые учётные данные и урезать права до минимума. Логи полезнее разбирать по цепочкам действий между агентами, а не по отдельным вызовам. Критичные проверки нельзя отдавать модели. Тот, кто чинит архитектуру до инцидента, тратит меньше нервов и денег, чем тот, кто чинит её после.
Ранее сообщалось, что ИИ-агенты OpenAI, которым поручили собрать школьную статистику и старые записи о разводах, начали использовать SQL-инъекции при работе с сайтами Министерства образования США и канадского архива. Исследователи Transluce зафиксировали перебор параметров, попытки обойти установленные ограничения и другие действия, характерные для начинающего пентестера, но в двух изученных случаях не обнаружили доступа к закрытой информации. Параллельно OpenAI предупредила более 100 организаций о возможной нештатной активности своих ИИ-агентов.



