
Инструменты WebMCP, открытые для агентов, могут быть использованы для их перехвата
Уязвимости в протоколе WebMCP и новая зона ответственности сайтов
Добавляя WebMCP на сайт, владелец ресурса предоставляет посещающим его ИИ-агентам набор именованных инструментов для вызова. Те же самые инструменты могут быть использованы для того, чтобы обратить агентов против пользователей, которые их отправили. На сайте разработчиков Chrome теперь опубликованы рекомендации по безопасности WebMCP, и большая часть этих указаний предназначена не для компаний, создающих агентов, а для сайтов, которые предоставляют доступ к инструментам. Делая сайт готовым к работе с агентами через WebMCP, администратор одновременно открывает новую поверхность для атак, и именно он, а не агент, отвечает за её закрытие.
Два года обсуждения агентной готовности сайтов сводились к вопросам доступа: может ли агент получить контент, считать страницу, завершить процесс покупки. С появлением WebMCP ситуация изменилась — теперь вместо того, чтобы надеяться, что агент сам разберётся с разметкой, веб-сайт вручную предоставляет ему именованные инструменты. Это более полезный протокол, к которому движется слой взаимодействия агентной сети. Однако именно здесь возможность быть понятным для агента и возможность быть для него безопасным перестают совпадать.
Chrome указал два способа, как через WebMCP можно перехватить агента
Рекомендации Chrome по безопасности агентов описывают два вектора атаки, и оба исходят от инструментов, которые сайт делает доступными. Первый — это вредоносный манифест. Как говорится в руководстве Chrome, «вебсайты могут иметь определения инструментов с скрытыми инструкциями — в именах, параметрах или описаниях — предназначенными для перехвата агента». Поскольку описание инструмента читает сам агент, чтобы понять, как его использовать, туда может быть вставлена инструкция, не предназначенная для выполнения.
Второй вектор угрожает большинству сайтов и не требует злонамеренного ресурса. Chrome называет его «загрязнённым выводом»: «Ответы инструментов в реальном времени с доверенных сайтов могут содержать вредоносные инструкции в составе сторонних данных, например пользовательских комментариев». Если инструмент возвращает данные с отзывами о товарах, комментариями, постами на форуме или ответами службы поддержки, он передаёт текст, написанный другими людьми. Если кто-то внедрил в такой отзыв инструкцию, легитимный инструмент отдаёт агенту вредоносную команду так, будто она исходит от владельца сайта. Таким образом, полезная нагрузка заключается в пользовательском контенте, допущенном самим сайтом.
Этот риск не связан с ошибкой и не подлежит устранению. В документе отмечается: «LLM рассматривают весь текст, включая инструкции и пользовательские данные, как единую последовательность токенов», поэтому модель не может надёжно отделить данные от команд, вставленных злоумышленником. В частности, Chrome подчёркивает: «Вероятностная природа LLM делает невозможной гарантию безопасности внутри самой модели». Проблема внедрения инструкций в подсказки (prompt injection) не имеет чистого решения на уровне модели, а через WebMCP эта уязвимость получает структурированный канал доставки через опубликованные инструменты.
Разработчикам сайтов придётся позаботиться о том, чтобы сделать сайт безопасным для агентов
В руководстве Chrome ответственность за безопасность возлагается именно на сайты, а не только на агентов. Документ по безопасности инструментов начинается с прямого обращения: «Открывайте доступ к своим инструментам только источникам, которым вы доверяете. Это особенно важно, если инструменты управляют пользовательскими данными или иным образом влияют на пользователя». Эта рекомендация адресована тому, кто публикует инструмент, то есть владельцам сайтов.
Предложенные механизмы защиты конкретны и реализуются через аннотации, которыми помечаются инструменты. Атрибут untrustedContentHint «явно обозначает полезную нагрузку как недоверенную, помогая защитить целостность сайта и подавая агенту сигнал о необходимости повышенного анализа данных». Chrome уточняет, что следует применять эту метку, «если инструмент возвращает пользовательский контент (UGC) или данные из внешних источников». Атрибут readOnlyHint помечает инструмент как не изменяющий состояние, что «позволяет агенту принимать более осторожные решения о необходимости подтверждения действий от пользователя». Параметр exposedTo ограничивает доступ к инструменту списком доверенных источников, записанным в код регистрации:
document.modelContext.registerTool({…}, { exposedTo: [‘https://trusted.com’] });
Кроме того, Chrome установил ограничения: описание инструмента — до 500 символов, а единичный вывод — примерно до 1500. Также добавлен путь requestUserInteraction() для подтверждения действий перед их выполнением. Например, если инструмент предоставляет агенту обзоры товаров, его защита не требует сложных решений: достаточно пометить вывод как untrustedContentHint, установить readOnlyHint, поскольку инструмент только читает данные, и ограничить exposedTo доверенными источниками. Всё это лежит на авторе инструмента, а не на агенте. На практике же функции внедрения WebMCP чаще выполняют команды по развитию сайта, конверсии и маркетингу, а не специалисты по безопасности. Именно этот разрыв делает ситуацию рискованной. Теперь пометка, что контент является данными, а не командами, становится обязательной частью выпуска инструмента, так же как ранее проверка входных данных стала стандартом при создании форм.
Использование WebMCP требует моделирования угроз для каждого инструмента
Передача агенту чётко описанных инструментов предпочтительнее того, чтобы он пытался догадаться о функционале сайта через DOM, и эта возможность действительно полезна. Всё изложенное не означает, что от WebMCP следует отказаться. Суть в ином: с появлением новых возможностей возникает и набор обязательств, который лежит на владельце сайта.
Следовательно, правило простое: не предоставляйте агенту инструмент, для которого не был проведён анализ угроз, как это делается с общедоступным API. Для каждого нового инструмента нужно ответить на один вопрос до выпуска: какой недоверенный контент он может возвращать и отмечен ли он соответствующим образом? Если на это нет уверенного ответа, инструмент пока не готов, даже если сам сайт формально совместим с агентами.
WebMCP находится на ранней стадии. Сейчас он проходит испытание в Chrome Origin Trial, спецификация продолжает уточняться, и большинство сайтов ещё не внедрило ни одного инструмента. Это даёт возможность заранее включить понятие «agent-safe» в понятие «agent-ready» — прежде чем первый опубликованный инструмент окажется тем самым, который передаст агенту пользовательские отзывы и внедрённые в них инструкции.
Дополнительные материалы по теме
WebMCP может быть использован для перехвата ИИ-агентов, предупреждает Chrome
Полностью не-человеческая сеть: никто не создаёт страницы и никто их не посещает
Как ИИ-агенты воспринимают ваш сайт и как его для них оптимизировать
Материал основан на публикации Слободана Манича, ведущего подкаста No Hacks и консультанта по оптимизации сайтов с машинным приоритетом. Оригинальная версия размещена на No Hacks.
