Перейти к основному содержанию
«Rug pull» — это режим сбоя MCP, когда сервер ведёт себя хорошо, пока вы наблюдаете, и становится враждебным, как только ему доверились: инструмент, который вы одобрили при подключении, начинает протаскивать лишние аргументы, серверу сообщества, который вы внесли в список, тихо добавляется новая возможность, или навык, самостоятельно установленный агентом, переключается с безобидного на опасный в продакшене. Опасность в том, что никто не пересматривает подключение после того, как оно стало активным — решение о доверии было принято один раз, при рукопожатии, и больше никогда не пересматривалось. OrcaRouter не доверяет рукопожатию. Он защищается на трёх фронтах. MCP-шлюз Firewall оценивает каждый tools/call при диспетче по вашей живой политике. Рекламируемый набор инструментов каждого зарегистрированного сервера фиксируется как базовая линия при первом зондировании и перепроверяется на дрейф — если схема инструментов отклоняется от одобренной базовой линии, сервер закрывается (fail closed), пока администратор не переодобрит или не поместит его в карантин. А слой Навыки присваивает каждой установленной возможности банд риска и режим применения — помещая в карантин всё рискованное или непроверенное, пока человек не подпишет. Сервер не может заслужить свободный пропуск, хорошо ведя себя первые сто вызовов.

1. Почему защита от rug pull MCP требует оценки на каждый вызов

Проверка при подключении отвечает на один вопрос один раз: безопасен ли этот сервер для внесения в список? Она не может ответить на вопрос, который действительно важен в рантайме: безопасен ли именно этот вызов, с именно этими аргументами, прямо сейчас? OrcaRouter отвечает на второй вопрос. Каждый tools/call, пересекающий шлюз, оценивается на поверхности mcp перед тем, как его диспетчат на реальный сервер, с именем инструмента и аргументами на руках. Вердикт вычисляется заново каждый раз, так что в момент, когда инструмент начинает делать то, что ваша политика запрещает — эксфильтрировать секрет в аргументе, обращаться к запрещённому хосту, вызывать возможность, которую вы никогда не одобряли — вызов останавливается, независимо от того, как тот же инструмент вёл себя минуту назад.
Оценка на каждый вызов управляет поведением каждого вызова — содержимым аргументов, назначениями, риском владеющего навыка — так что она перехватывает rug pull, даже когда инструмент сохраняет идентичную сигнатуру и враждебным становится только его поведение. Обнаружение дрейфа схемы (§ ниже) — это дополняющий слой: оно перехватывает случай, когда меняется сам рекламируемый сервером набор инструментов. Оба работают.
Вердикты, которые движок может вернуть на поверхности mcp:

allow / audit

Переслано на сервер. audit логирует вызов; allow остаётся тихим.

sanitize

Переслано с предварительно отредактированными аргументами вызова инструмента (оно никогда не переписывает то, что возвращает сервер).

deny

Возвращено модели как ошибка инструмента (firewall deny: …), так что агент может адаптироваться вместо падения.

pending_approval

Вызов удерживается, пока человек не разрешит его, прежде чем он сможет запуститься.

2. Карантин навыков по банду риска

Вторая половина защиты от rug pull покрывает цепочку поставок: навыки, плагины и собственные (BYO) MCP-серверы, которые устанавливает агент. Каждый из них регистрируется как запись в рамках рабочего пространства, сканируется детерминированным движком риска и получает банд риска (low / medium / high / critical) плюс режим применения:
РежимЭффект в рантайме
allowРешают вердикты правил; навык ничего не добавляет.
quarantineВсё, что короче запрета, эскалируется до pending_approval — инструменты запускаются только после одобрения человеком.
blockИнструменты навыка отклоняются напрямую.
Именно здесь rug pull сдерживается. Возможность, которую агент устанавливает самостоятельно, получает auto_detected и помещается в карантин до проверки — даже если она просканировалась чисто, она не запускается по собственному праву. И режим навыка только когда-либо ужесточается при пересканировании: установленные вами block или quarantine никогда не ослабляются молча при повторном предъявлении манифеста.
Карантин применяется независимо от shadow-режима. Навык, установленный в quarantine или block, всё равно удерживается, даже пока окружающая политика находится в shadow-выкатке — так что рискованная возможность не может проскользнуть во время поэтапного развёртывания.
См. Firewall: Skills для полного сканера, весов оценки и сигналов доверия.

3. Обнаружение дрейфа схемы инструментов

Классический rug pull — это зарегистрированный сервер, который меняет то, что рекламирует: добавляет инструмент, изменяет входную схему инструмента, подменяет описание. OrcaRouter фиксирует рекламируемый набор инструментов каждого зарегистрированного сервера как базовую линию при успешном зондировании и следит за ним на предмет дрейфа.

Базовая линия при первом зондировании

Первое успешное зондирование записывает канонический хеш инструментов сервера (доверие при первом использовании при позиции обнаружения; при принуждающей позиции незафиксированный сервер удерживается как pending, пока администратор не одобрит его начальный набор инструментов).

Дрейф закрывается (fail closed)

При последующем зондировании, если канонический набор инструментов больше не совпадает с одобренной базовой линией, сервер помечается как changed и перестаёт обслуживаться — шлюз не будет диспетчить его инструменты, пока вы не решите.

Одобрить или поместить в карантин

Переодобрите, чтобы перефиксировать базовую линию на новую схему, или поместите сервер в карантин. Сервер в карантине также отключён, и только явное одобрение восстанавливает обслуживание — обычное редактирование не может его переактивировать.

Аудируется

Первое обнаружение дрейфа от одобренной базовой линии записывает запись аудита рабочего пространства, так что изменение зафиксировано.
Статус схемы сервера — это один из unknown (никогда не фиксировался), verified (совпадает с базовой линией), changed (дрейфовал, удержан), pending (незафиксирован при принуждении) или quarantined. Этот слой перехватывает rug pull, который сдвигает схему; оценка на каждый вызов (§1) перехватывает тот, что сохраняет идентичную сигнатуру и меняет только поведение.

4. Один конкретный пример

Предположим, серверу сообщества MCP notes рекламируется безобидный инструмент notes.search. Вы вносите его в список, проверяете, и он работает. Через неделю сервер скомпрометирован, и notes.search начинает прикреплять аргумент эксфильтрации, который POST-ит ваш контекст на хост злоумышленника. Шлюз, проверяющий только при подключении, переслал бы его — имя инструмента и схема выглядят неизменными. OrcaRouter оценивает вызов:
# Настройте deny-правило в консоли (Developer+), не через relay-ключ.
# Правило: на поверхности mcp деньте notes.search всякий раз, когда он несёт
#       аргумент в форме эксфильтрации.
#   tool_name_glob: notes.search
#   args_match:     { "path": "$.callback_url", "op": "regex",
#                     "value": "^https?://(?!notes\\.example/)" }  → deny
(Операторы args_match — это eq, contains, regex, in, cidr_match, gt, lt; cidr_match проверяет аргумент со значением IP против CIDR. Чтобы ограничить, куда инструмент может обращаться по хосту/CIDR, используйте список назначений egress вместо клаузы аргумента.) При диспетче движок возвращает deny, и вместо пересылки вызова шлюз передаёт агенту ошибку результата инструмента MCP — обычный результат, помеченный как ошибка, а не сбой транспорта — так что модель может адаптироваться:
firewall deny: <your rule's reason>
Тот же вызов, который сработал на прошлой неделе, теперь заблокирован — потому что решение принимается по вызову, а не по подключению.
sanitize редактирует аргументы, которые отправляет ваш агент, никогда не контент, который возвращает инструмент. Если вам нужно ограничить, куда инструмент может обращаться, сочетайте deny-правило со списком назначений egress — не полагайтесь на sanitize для очистки ответов.

5. Как это складывается вместе

Оценка на каждый вызов перехватывает доверенный инструмент, ставший вредоносным — то же имя, новое поведение в аргументах или назначении. Карантин навыка перехватывает новую или непроверенную возможность, появляющуюся вообще — автообнаруженную установку, пересканированный манифест, который заново деградирует. Rug pull может принять любую форму, так что работают оба: режим навыка накладывается поверх вердикта правила на каждый вызов.
Да — см. §3. Рекламируемый набор инструментов каждого зарегистрированного сервера фиксируется при первом зондировании и перепроверяется на дрейф; дрейфовавший сервер закрывается, пока вы не переодобрите или не поместите его в карантин. Это дополняет оценку на каждый вызов, которая также перехватывает инструмент, сохраняющий идентичную сигнатуру и меняющий только поведение.
Вердикт pending_approval удерживает вызов, чтобы человек разрешил его в консоли (Developer+) или через HMAC-callback одобрения. См. режимы применения о том, как удержания и одобрения показываются агенту.

6. Настройка

Каждый шаг ниже — это действие консоли / управления, аутентифицированное вашей сессией или access-токеном, — не relay-ключом sk-orca-…. Только relay-трафик /v1/* использует relay-ключ.
1

Зарегистрируйте свои MCP-серверы за шлюзом

Подключите каждый сервер, чтобы его инструменты рекламировались под одним аудируемым эндпоинтом. Регистрация — Developer+.
2

Задайте вердикт по умолчанию и правила на поверхности mcp

Напишите правила с tool_name_glob и args_match, чтобы рискованные вызовы разрешались в deny, sanitize или pending_approval. См. справочник правил Firewall.
3

Проверьте навыки в карантине

Всё автообнаруженное находится в quarantine, пока проверяющий (Developer+) не одобрит. Сначала прочитайте банд и находки.
4

Выкатите в shadow, затем применяйте

Используйте режимы применения, чтобы прогонять новые правила в shadow, наблюдайте события аудита и переключайтесь на применение, как только вердикты выглядят правильно.
Чтение (настройки, политики, обнаруженные инструменты, аномалии) открыто любому Member; каждая запись — Developer+. Чтение открытого текста ключа firewall-gateway — Developer+.

Связанное

Firewall: MCP Servers

Полный справочник MCP-шлюза — регистрация, зондирование, диспетч.

Firewall: Skills

Проходы сканера, оценка риска и вывод карантина.

Отравление MCP-инструментов

Модель угроз, против которой существует защита от rug pull.

Лимиты egress

Напишите deny-правила по хосту/CIDR, чтобы ограничить, куда могут обращаться инструменты.

Чек-лист доверия

Сквозной чек-лист для доверия MCP-серверу.

Guardrails vs. Firewall

Когда применяется контентная политика, а когда firewall.