tools/call au moment du dispatch contre votre politique en direct. L’ensemble
d’outils annoncé de chaque serveur enregistré est baseliné au premier sondage
et re-vérifié pour détecter la dérive — si le schéma d’outils change par
rapport au baseline approuvé, le serveur échoue fermé jusqu’à ce qu’un admin le
ré-approuve ou le mette en quarantaine. Et la couche
Skills attribue à chaque capacité installée une
bande de risque et un mode d’application — mettant en quarantaine tout ce qui
est risqué ou non revu jusqu’à validation par un humain. Un serveur ne peut pas
gagner un laissez-passer en se comportant bien pendant les cent premiers appels.
1. Pourquoi la protection contre le rug pull MCP a besoin d’une évaluation par appel
Une revue au moment de la connexion répond une fois à une question : ce serveur est-il sûr à lister ? Elle ne peut pas répondre à la question qui compte réellement à l’exécution : cet appel-ci précisément, avec ces arguments-ci, est-il sûr en ce moment ? OrcaRouter répond à la seconde question. Chaquetools/call qui traverse la
passerelle est évalué sur la surface mcp avant d’être dispatché au vrai
serveur, avec le nom de l’outil et les arguments en main. Le verdict est
calculé à neuf à chaque fois, de sorte qu’à l’instant où un outil se met à
faire quelque chose que votre politique interdit — exfiltrer un secret dans un
argument, atteindre un hôte refusé, appeler une capacité que vous n’avez jamais
approuvée — l’appel est stoppé, peu importe comment le même outil s’est comporté
une minute auparavant.
mcp :
allow / audit
audit journalise l’appel ; allow reste silencieux.sanitize
deny
firewall deny: …) de sorte
que l’agent peut s’adapter au lieu de planter.pending_approval
2. Quarantaine par bande de risque des skills
La seconde moitié de la défense contre le rug pull couvre la chaîne d’approvisionnement : les skills, plugins et serveurs MCP bring-your-own qu’un agent installe. Chacun est enregistré comme un enregistrement à portée d’espace de travail, scanné par un moteur de risque déterministe, et doté d’une bande de risque (low / medium / high / critical) plus un mode
d’application :
| Mode | Effet à l’exécution |
|---|---|
allow | Les verdicts de règle décident ; le skill n’ajoute rien. |
quarantine | Tout ce qui n’est pas un deny est escaladé en pending_approval — les outils ne s’exécutent qu’après l’approbation d’un humain. |
block | Les outils du skill sont refusés d’emblée. |
auto_detected et mise en quarantaine jusqu’à revue —
même si elle a scanné propre, elle ne s’exécute pas de sa propre autorité. Et le
mode d’un skill ne se resserre que à la re-scan : un block ou quarantine
que vous définissez n’est jamais silencieusement relâché quand un manifeste est
re-présenté.
Voir Firewall : Skills pour le scanner complet,
les pondérations de scoring, et les signaux de confiance.
3. Détection de dérive du schéma d’outils
Le rug pull classique est un serveur enregistré qui change ce qu’il annonce — ajoute un outil, altère le schéma d’entrée d’un outil, échange une description. OrcaRouter baselinise l’ensemble d’outils annoncé de chaque serveur enregistré à un sondage réussi et le surveille pour détecter la dérive.Baseline au premier sondage
pending jusqu’à ce qu’un
admin approuve son ensemble d’outils initial).La dérive échoue fermé
changed et cesse d’être
servi — la passerelle ne dispatchera pas ses outils jusqu’à ce que vous
décidiez.Approuver ou mettre en quarantaine
Audité
unknown (jamais baseliné),
verified (correspond au baseline), changed (a dérivé, retenu), pending
(non baseliné sous enforcing), ou quarantined. Cette couche attrape le rug
pull qui déplace le schéma ; l’évaluation par appel (§1) attrape celui qui
garde une signature identique et ne change que le comportement.
4. Un exemple concret
Supposons qu’un serveur MCP communautairenotes annonce un outil inoffensif
notes.search. Vous le listez, le revoyez, et il fonctionne. Une semaine plus
tard le serveur est compromis et notes.search se met à attacher un argument
d’exfiltration qui POST votre contexte vers un hôte attaquant.
Une passerelle qui ne contrôle qu’au moment de la connexion le transmettrait —
le nom de l’outil et le schéma semblent inchangés. OrcaRouter évalue l’appel :
args_match sont eq, contains, regex, in,
cidr_match, gt, lt ; cidr_match teste un argument valant une IP contre
un CIDR. Pour borner où un outil peut atteindre par host/CIDR, utilisez la
liste de destinations d’egress plutôt qu’une
clause d’argument.)
Au dispatch le moteur renvoie deny, et au lieu de transmettre l’appel la
passerelle remet à l’agent une erreur de résultat d’outil MCP — un résultat
normal signalé comme une erreur, pas un échec de transport — de sorte que le
modèle peut s’adapter :
5. Comment cela s’imbrique
Évaluation par appel vs. quarantaine de skill — qui attrape quoi ?
Évaluation par appel vs. quarantaine de skill — qui attrape quoi ?
Cela baselinise-t-il le schéma du serveur ?
Cela baselinise-t-il le schéma du serveur ?
Où vont les appels retenus ?
Où vont les appels retenus ?
pending_approval retient l’appel qu’un humain le résolve dans la
console (Developer+) ou via un callback d’approbation HMAC. Voir
modes d’application pour la façon
dont les attentes et les approbations sont présentées à un agent.6. Le configurer
Chaque étape ci-dessous est une action console / de gestion authentifiée avec votre token de session ou d’accès — pas la clé relaissk-orca-…. Seul le
trafic relais /v1/* utilise la clé relais.
Enregistrez vos serveurs MCP derrière la passerelle
Définissez un verdict par défaut et des règles sur la surface mcp
tool_name_glob et args_match pour que les appels
risqués se résolvent en deny, sanitize, ou pending_approval. Voir la
référence des règles du Firewall.Revoyez les skills en quarantaine
quarantine jusqu’à ce qu’un
relecteur (Developer+) l’approuve. Lisez d’abord la bande et les
constatations.Déployez en shadow, puis appliquez
