Anthropic представила Model Context Protocol (MCP) 25 ноября 2024 года как «открытый стандарт, который позволяет разработчикам создавать безопасные, двусторонние соединения между своими источниками данных и инструментами на основе ИИ». На практике MCP позволяет ИИ-ассистенту вызывать локальные программы, называемые MCP-серверами, которые читают файлы, обращаются к базам данных или выходят в веб от его имени. Это по-настоящему полезно, и одновременно — новый вид поверхности атаки: модель решает, какой инструмент вызвать, на основе прочитанного текста, а она не всегда может отличить ваши инструкции от чьих-то ещё.
Как MCP-сервер на самом деле работает
Спецификация MCP определяет два транспорта. Через stdio «клиент запускает MCP-сервер как подпроцесс», и они общаются через стандартный ввод и вывод. Через Streamable HTTP (заменивший исходный транспорт HTTP+SSE из спецификации ноября 2024 года) сервер работает как отдельный локальный процесс, а клиент отправляет ему HTTP-запросы, опционально получая обратно поток Server-Sent Events (спецификация MCP, транспорты). В любом случае локальный MCP-сервер обычно работает с теми же правами на файлы и сеть, что и запустивший его человек, потому что ничто в протоколе не требует иного.
Сама спецификация прямо указывает на риск HTTP-варианта: она требует от серверов проверять заголовок Origin, рекомендует привязку к 127.0.0.1, а не к 0.0.0.0 при локальном запуске, и требует аутентификации на каждом соединении, предупреждая, что без этого «злоумышленники могли бы использовать DNS rebinding, чтобы взаимодействовать с локальными MCP-серверами с удалённых сайтов».
Механизм: сбитый с толку депутат (confused deputy)
Классическое название этого сбоя — проблема confused deputy: «компьютерная программа, которую обманом заставляет злоупотребить своими полномочиями другая программа (с меньшими привилегиями или правами)». ИИ-агент с доступом к инструментам MCP — это «депутат» с реальными полномочиями: читать ваши файлы, делать сетевые запросы, — действующий на основе инструкций, которые могут прийти из контента, который его просто попросили суммировать или проанализировать. Когда этот контент содержит собственные инструкции, агент может последовать им вместо ваших или вместе с ними. Именно эту категорию рисков OWASP Top 10 for LLM Applications называет инъекцией промпта и избыточной агентностью: OWASP: Top 10 for LLM Applications; OWASP LLM01:2025, Prompt Injection.
Продемонстрированный случай: MCP-сервер GitHub
Это не теория. 26 мая 2025 года Invariant Labs сообщила о доказательстве концепции против официального MCP-сервера GitHub, у которого на тот момент было около 14 000 звёзд на GitHub. Их постановка: агенту с доступом к публичному и приватному репозиторию поручили просмотреть открытые issue в публичном. Сфабрикованный issue в публичном репозитории нёс скрытые инструкции; агент, читая его в рамках обычной задачи, последовал им и в ходе демонстрации в итоге раскрыл детали из приватного репозитория, включая, по описанию исследователей, персональную информацию, в тред issue, контролируемый атакующим. Invariant Labs прямо заявила, что это была продемонстрированная концепция на тестовых репозиториях, а не атака, замеченная в реальных условиях, и что «это не изъян в самом коде MCP-сервера GitHub, а фундаментальная архитектурная проблема, которую нужно решать на уровне системы агента». В демонстрации использовалась модель Claude 4 Opus.
Смертельное трио (lethal trifecta)
16 июня 2025 года Саймон Уиллисон назвал паттерн, стоящий за подобными случаями, «смертельным трио»: агент, у которого есть (1) доступ к приватным данным, (2) контакт с недоверенным контентом и (3) способ связаться с внешним миром. «Если ваш агент сочетает эти три свойства, атакующий может легко обманом заставить его получить доступ к вашим приватным данным и отправить их этому атакующему». Он прямо называет MCP одним из факторов: «Проблема с Model Context Protocol — MCP — в том, что он побуждает пользователей смешивать инструменты из разных источников, которые умеют делать разные вещи», из-за чего легко получить все три свойства активными в одной сессии, даже не решив этого делать.
Почему это трудно увидеть инструментам конечных точек
С точки зрения операционной системы, в случае с GitHub MCP не произошло ничего необычного: подписанное, доверенное приложение прочитало какой-то текст и сделало сетевой запрос через настроенный локальный вспомогательный процесс. Нет исполняемого файла, который стоило бы пометить, нет эксплуатации ошибки безопасности памяти. Запрос, который имеет значение — тот, что уносит данные наружу, — по форме не отличается от любого другого вызова инструмента, который агент правильно выполняет сто раз в день.
Что реально снижает риск
- Давайте каждому MCP-серверу максимально узкий набор инструментов и доступ к файлам, а не широкий доступ к файловой системе или shell — чтобы перехваченному вызову инструмента было нечего делать.
- Относитесь к любому контенту, который агент читает извне вашего контроля (issue, веб-страницы, скачанные файлы), как к недоверенному вводу — с той же дисциплиной, которую вы применяете к пользовательскому вводу в любой другой системе.
- Следуйте рекомендациям на уровне транспорта из самой спецификации MCP: привязывайте локальные серверы к localhost, требуйте аутентификацию, проверяйте заголовок Origin.
- Наблюдайте за исходящим соединением — или контролируйте его: это единственный шаг, общий для всех вариантов этой атаки — соединение, которое унесло бы данные атакующему. Этот шаг наступает уже после того, как модель была обманута, поэтому он и есть самое надёжное место, чтобы поймать атаку.
Какое место здесь занимают FireAI и HisnLabs
The step an injected agent cannot skip is the outbound connection that carries your data out, which is exactly what a per-app firewall like FireAI is built to see and stop, whether the process asking to connect is a familiar app or an MCP server it has never seen before.
FireAI — это собственный продукт HisnLabs: ИИ-файрвол, работающий прямо на вашем Mac. Он показывает простым языком каждое соединение, которое устанавливают ваши приложения, и позволяет вам решать, что покидает ваш Mac, — его ИИ работает локально, поэтому ваш трафик никогда не отправляется ни нам, ни кому-либо ещё. Команда исследователей безопасности HisnLabs — это те, кто поддерживает точность этих решений: они каталогизируют, какие домены являются обычной телеметрией, а какие — реальным сервисом, отслеживают страну и сеть, стоящие за соединением, и обучают локальную модель (функцию Autopilot) на реальных шаблонах трафика — и ничего из этого не покидает ваш Mac.
Вы можете прочитать о технических решениях, лежащих в его основе, или попробовать FireAI в течение 17 дней на странице FireAI от HisnLabs.
