Перейти к основному содержанию
Сторонний MCP-сервер или установленный навык — это зависимость в цепочке поставок. Два сценария отказа выделяются:
  • Отравление — сервер был вредоносным с самого начала. Его манифест выглядел безвредным; опасное поведение было в реализации инструмента, а не в объявленных областях.
  • Rug-pull — вы ему доверяли, потом он изменился. Появился новый инструмент, тихо добавленный оператором сервера, или запись в community-реестре была захвачена и обновлена для звонка домой.
Обе угрозы имеют общую первопричину: после того, как вы сказали «я доверяю этому серверу», ваши агенты продолжают вызывать его инструменты — включая новые или изменённые — без дальнейшей проверки.

1. Как отравление инструментов MCP достигает ваших агентов

Каждый tools/call, инициируемый вашим агентом, проходит через объявленный набор инструментов MCP-сервера. Отравленный или подвергшийся rug-pull сервер эксплуатирует это доверие несколькими способами:
ВекторЧто происходит
Необъявленный инструментНовый инструмент появляется в tools/list, который манифест сервера никогда не объявлял. Ваш агент находит его и вызывает.
Захваченная запись реестраЛистинг в community-реестре захватывается; эндпоинт теперь указывает на сервер, контролируемый злоумышленником.
Сбор учётных данныхРеализация инструмента сервера отправляет собранные входные данные на внешний хост.
Prompt injection через результат инструментаИнструмент возвращает контролируемый злоумышленником текст, перенаправляющий следующее действие агента.

2. Защиты OrcaRouter

2.1 Каждый tools/call оценивается firewall’ом до выполнения

MCP-серверы подключаются к вашим агентам через MCP gateway Firewall по адресу /api/v1/firewall/mcp. Шлюз не пересылает вызов инструмента до тех пор, пока движок firewall не оценит его против вашей политики. Это означает, что ваш allow-list — источник истины, а не манифест инструментов сервера. Если rug-pull добавляет shell.exec и ваша политика не имеет правила, разрешающего его, вердикт — deny, и вызов никогда не покидает шлюз. Модель получает ошибку инструмента (firewall deny: …) и может среагировать; добавленный злоумышленником инструмент мёртв при поступлении. Вердикты, которые может вернуть движок:
ВердиктЭффект
allow / auditВызов пересылается; audit дополнительно логирует аргументы.
sanitizeАргументы переписываются перед пересылкой.
denyВызов заблокирован; модель получает ошибку инструмента.
pending_approvalВызов удерживается; человек должен одобрить до выполнения.
cap_costОграничение стоимости применено; вызов заблокирован, если превысит его.

2.2 Автоматически обнаруженные возможности помещаются в карантин до проверки

Когда агент самостоятельно устанавливает возможность — или rug-pull добавляет новые инструменты, которых не было при регистрации сервера — Firewall автоматически обнаруживает новую возможность вне горячего пути, синтезирует манифест, сканирует его и назначает risk band и режим применения. Важно, что автоматически обнаруженные возможности всегда помещаются в карантин независимо от результата сканирования: они удерживаются в pending_approval до проверки человеком. Вот как сдерживаются rug-pulls. Оператор не может тихо добавить новый инструмент и заставить ваших агентов начать его использовать — эти вызовы удерживаются до тех пор, пока вы не осмотрите и не одобрите новую возможность.

2.3 Сканирование навыков назначает risk band и режим применения

Каждая устанавливаемая возможность — зарегистрированная вами или автоматически обнаруженная Firewall — проходит через сканер навыков. Сканер выполняет детерминированные проходы по манифесту и объявленным областям:
  • prompt_injection — текст манифеста, пытающийся захватить инструкции.
  • tool_creep — инструменты, которые манифест использует, но никогда не объявлял.
  • network_egress — HTTP(S)-хосты вне одобренных сетевых областей.
  • fs_write_unsafe — файловый доступ на запись вне /tmp.
Находки сворачиваются в risk band (low / medium / high / critical) и режим применения:
РежимЧто происходит во время выполнения
allowНавык ничего своего не налагает; правила вашей политики решают.
quarantineЛюбой вердикт, не являющийся deny, эскалирует до pending_approval. Человек должен одобрять каждый вызов инструмента.
blockПринудительный deny для всех инструментов этого навыка, независимо от правил политики.
Навык с band high автоматически помещается в карантин; critical — блокируется. Одна находка error (например, tool_creep для необъявленного shell.exec) достаточна для блокировки навыка, даже когда его числовая оценка выглядит низкой. Режим только ужесточается — одобрение навыка никогда не ослабляет блокировку, установленную свежим сканированием.

2.4 Учётные данные хранятся в зашифрованном виде

Auth-секреты серверов шифруются в состоянии покоя с ключом секретов рабочего пространства и внедряются шлюзом во время диспетча. Они никогда не достигают модели, агента или аргументов вызова. Скомпрометированный сервер не может эксфильтрировать ваши API-ключи, читая собственный auth_json.
Контрольный список проверки стороннего MCP-сервераПеред регистрацией внешнего MCP-сервера:
  • Проверьте личность издателя — кто контролирует URL эндпоинта?
  • Прочитайте исходный код или changelog; ищите новые инструменты, добавленные после первоначального выпуска.
  • Проверьте, не возвращает ли сканирование навыков никаких находок tool_creep или prompt_injection при регистрации.
  • Назначьте правило firewall с tool_name_glob: <server>.* на audit или pending_approval до получения истории вызовов.
  • Просмотрите находки network_egress: утверждает ли манифест, что ему нужен только один домен, но в описаниях инструментов упоминаются другие?
  • Повторно зондируйте сервер после любого обновления версии upstream (POST /api/workspace/firewall/mcp_servers/:id/probe) для обнаружения новых инструментов.

3. Что делать после предполагаемого rug-pull

  1. Немедленно отключите сервер — отключённый сервер удаляется из runtime-реестра и его учётные данные никогда не дешифруются. Используйте PUT /api/workspace/firewall/mcp_servers с "enabled": false.
  2. Повторно зондируйте для обнаружения измененийPOST /api/workspace/firewall/mcp_servers/:id/probe выполняет tools/list и возвращает любые новые инструменты, появившиеся с момента последнего зондирования.
  3. Повторно сканируйте запись навыкаPOST /api/workspace/firewall/skills/:id/rescan повторно запускает сканер против обновлённого манифеста. Если вердикт ухудшается до flagged или blocked, Firewall выпускает событие в вашей ленте.
  4. Просмотрите очередь pending_approval — все вызовы, удержанные с момента rug-pull, в очереди. Осмотрите и отклоните их, а не одобряйте оптом.
  5. Проверьте лог вызовов — проверьте журнал событий Firewall на вызовы, прошедшие до обнаружения изменения.

4. Совмещение сканирования навыков с правилами firewall

Сканирование навыков и правила firewall взаимодополняющие и компонуются:
  • Правило с tool_name_glob: community.*, установленным на pending_approval, гарантирует проверку каждого вызова от сервера из community-реестра независимо от risk band.
  • Навык в карантине переопределяет правило allow — даже если ваша политика широко разрешает http.fetch, навык в карантине, которому принадлежит этот инструмент, всё равно удерживает вызов.
  • Используйте skill_name_glob в правиле для назначения более строгих политик ненадёжным серверам без затрагивания ваших first-party интеграций.
См. Firewall: MCP-серверы для полной модели шлюза и Firewall: Навыки для справочника сканера и режима применения.

5. Связанные угрозы

  • Опасные вызовы инструментов — правила для блокировки деструктивных или необратимых действий инструментов независимо от источника.
  • Эксфильтрация данных — правила egress, ограничивающие адреса назначения, куда вызовы инструментов могут отправлять данные.
  • Модель угроз — полная поверхность атаки, для защиты которой разработан OrcaRouter.

Firewall: MCP-серверы

Регистрируйте MCP-серверы за шлюзом, зондируйте их инструменты и применяйте вердикты на каждый вызов до его достижения реального сервера.

Firewall: Навыки

Сканируйте и оценивайте по риску каждую устанавливаемую возможность. Помещайте в карантин или блокируйте рискованные навыки до запуска их инструментов.