tools/call
при диспетче по вашей живой политике. Рекламируемый набор инструментов
каждого зарегистрированного сервера фиксируется как базовая линия при
первом зондировании и перепроверяется на дрейф — если схема инструментов
отклоняется от одобренной базовой линии, сервер закрывается (fail closed),
пока администратор не переодобрит или не поместит его в карантин. А слой
Навыки присваивает каждой установленной
возможности банд риска и режим применения — помещая в карантин всё рискованное
или непроверенное, пока человек не подпишет. Сервер не может заслужить
свободный пропуск, хорошо ведя себя первые сто вызовов.
1. Почему защита от rug pull MCP требует оценки на каждый вызов
Проверка при подключении отвечает на один вопрос один раз: безопасен ли этот сервер для внесения в список? Она не может ответить на вопрос, который действительно важен в рантайме: безопасен ли именно этот вызов, с именно этими аргументами, прямо сейчас? OrcaRouter отвечает на второй вопрос. Каждыйtools/call, пересекающий
шлюз, оценивается на поверхности mcp перед тем, как его диспетчат на
реальный сервер, с именем инструмента и аргументами на руках. Вердикт
вычисляется заново каждый раз, так что в момент, когда инструмент начинает
делать то, что ваша политика запрещает — эксфильтрировать секрет в
аргументе, обращаться к запрещённому хосту, вызывать возможность, которую
вы никогда не одобряли — вызов останавливается, независимо от того, как тот
же инструмент вёл себя минуту назад.
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 | Инструменты навыка отклоняются напрямую. |
auto_detected и помещается в
карантин до проверки — даже если она просканировалась чисто, она не
запускается по собственному праву. И режим навыка только когда-либо
ужесточается при пересканировании: установленные вами block или
quarantine никогда не ослабляются молча при повторном предъявлении
манифеста.
См. Firewall: Skills для полного сканера,
весов оценки и сигналов доверия.
3. Обнаружение дрейфа схемы инструментов
Классический rug pull — это зарегистрированный сервер, который меняет то, что рекламирует: добавляет инструмент, изменяет входную схему инструмента, подменяет описание. OrcaRouter фиксирует рекламируемый набор инструментов каждого зарегистрированного сервера как базовую линию при успешном зондировании и следит за ним на предмет дрейфа.Базовая линия при первом зондировании
pending, пока администратор не одобрит его начальный набор
инструментов).Дрейф закрывается (fail closed)
changed и перестаёт обслуживаться — шлюз не будет диспетчить его
инструменты, пока вы не решите.Одобрить или поместить в карантин
Аудируется
unknown (никогда не фиксировался),
verified (совпадает с базовой линией), changed (дрейфовал, удержан),
pending (незафиксирован при принуждении) или quarantined. Этот слой
перехватывает rug pull, который сдвигает схему; оценка на каждый вызов
(§1) перехватывает тот, что сохраняет идентичную сигнатуру и меняет только
поведение.
4. Один конкретный пример
Предположим, серверу сообщества MCPnotes рекламируется безобидный
инструмент notes.search. Вы вносите его в список, проверяете, и он
работает. Через неделю сервер скомпрометирован, и notes.search начинает
прикреплять аргумент эксфильтрации, который POST-ит ваш контекст на хост
злоумышленника.
Шлюз, проверяющий только при подключении, переслал бы его — имя инструмента
и схема выглядят неизменными. OrcaRouter оценивает вызов:
args_match — это eq, contains, regex, in,
cidr_match, gt, lt; cidr_match проверяет аргумент со значением IP
против CIDR. Чтобы ограничить, куда инструмент может обращаться по
хосту/CIDR, используйте список назначений egress
вместо клаузы аргумента.)
При диспетче движок возвращает deny, и вместо пересылки вызова шлюз
передаёт агенту ошибку результата инструмента MCP — обычный результат,
помеченный как ошибка, а не сбой транспорта — так что модель может
адаптироваться:
5. Как это складывается вместе
Оценка на каждый вызов vs. карантин навыка — что что перехватывает?
Оценка на каждый вызов vs. карантин навыка — что что перехватывает?
Фиксирует ли это базовую линию схемы сервера?
Фиксирует ли это базовую линию схемы сервера?
Куда деваются удержанные вызовы?
Куда деваются удержанные вызовы?
pending_approval удерживает вызов, чтобы человек разрешил его
в консоли (Developer+) или через HMAC-callback одобрения. См.
режимы применения о том, как
удержания и одобрения показываются агенту.6. Настройка
Каждый шаг ниже — это действие консоли / управления, аутентифицированное вашей сессией или access-токеном, — не relay-ключомsk-orca-…. Только
relay-трафик /v1/* использует relay-ключ.
Зарегистрируйте свои MCP-серверы за шлюзом
Задайте вердикт по умолчанию и правила на поверхности mcp
tool_name_glob и args_match, чтобы рискованные
вызовы разрешались в deny, sanitize или pending_approval. См.
справочник правил Firewall.Проверьте навыки в карантине
quarantine, пока проверяющий
(Developer+) не одобрит. Сначала прочитайте банд и находки.Выкатите в shadow, затем применяйте
