- Envenenamento — o servidor foi malicioso desde o início. Seu manifesto pareceu benigno; o comportamento perigoso estava na implementação da ferramenta, não nos escopos declarados.
- Rug-pull — você confiou nele, depois ele mudou. Uma nova ferramenta apareceu que o operador do servidor adicionou silenciosamente, ou uma entrada de registro da comunidade foi sequestrada e atualizada para ligar para casa.
1. Como o envenenamento de ferramenta MCP alcança seus agentes
Cadatools/call que seu agente emite viaja pelo conjunto de ferramentas
declarado do servidor MCP. Um servidor envenenado ou com rug-pull explora essa
confiança de algumas maneiras:
| Vetor | O que acontece |
|---|---|
| Ferramenta não declarada | Uma nova ferramenta aparece em tools/list que o manifesto do servidor nunca declarou. Seu agente a encontra e a chama. |
| Entrada de registro sequestrada | Uma listagem de registro da comunidade é tomada; o endpoint agora aponta para um servidor controlado pelo atacante. |
| Coleta de credenciais | A implementação de ferramenta do servidor envia entradas coletadas para um host externo. |
| Injeção de prompt via resultado de ferramenta | Uma ferramenta retorna texto controlado pelo atacante que redireciona a próxima ação do agente. |
2. As defesas do OrcaRouter
2.1 Cada tools/call é avaliado pelo firewall antes de executar
Servidores MCP se conectam aos seus agentes pelo gateway MCP do Firewall em
/api/v1/firewall/mcp. O gateway não encaminha uma chamada de ferramenta até
que o motor de firewall a tenha avaliado contra sua
política.
Isso significa que sua lista de permissão é a fonte da verdade — não o manifesto
de ferramentas do servidor. Se um rug-pull adiciona shell.exec e sua política
não tem nenhuma regra permitindo-o, o veredito é deny e a chamada nunca sai
do gateway. O modelo recebe um erro de ferramenta (firewall deny: …) e pode
reagir; a ferramenta adicionada pelo atacante está morta na chegada.
Vereditos que o motor pode retornar:
| Veredito | Efeito |
|---|---|
allow / audit | Chamada encaminhada; audit adicionalmente registra argumentos. |
sanitize | Argumentos reescritos antes do encaminhamento. |
deny | Chamada bloqueada; modelo recebe um erro de ferramenta. |
pending_approval | Chamada retida; um humano deve aprovar antes que prossiga. |
cap_cost | Limite de custo aplicado; chamada bloqueada se excederia. |
2.2 Capacidades auto-detectadas são colocadas em quarentena até revisão
Quando um agente auto-instala uma capacidade — ou um rug-pull adiciona novas ferramentas que não estavam presentes quando você registrou o servidor — o Firewall auto-detecta a nova capacidade fora do caminho quente, sintetiza um manifesto, escaneia-o e atribui uma banda de risco e modo de enforcement. Crucialmente, capacidades auto-detectadas são sempre colocadas em quarentena independentemente do resultado do scan: elas são retidas empending_approval até que um humano
as revise.
É assim que os rug-pulls são contidos. Um operador não pode adicionar
silenciosamente uma nova ferramenta e fazer seus agentes começar a usá-la —
essas chamadas são retidas até que você inspecione e aprove a nova capacidade.
2.3 O escaneamento de skill atribui uma banda de risco e modo de enforcement
Cada capacidade instalável — seja registrada por você ou auto-detectada pelo Firewall — passa pelo scanner de skill. O scanner executa passes determinísticos sobre o manifesto e escopos declarados:- prompt_injection — texto de manifesto que tenta sequestrar instruções.
- tool_creep — ferramentas que o manifesto usa mas nunca declarou.
- network_egress — hosts HTTP(S) fora dos escopos de rede aprovados.
- fs_write_unsafe — acesso ao sistema de arquivos em modo de escrita fora de
/tmp.
low / medium / high /
critical) e um modo de enforcement:
| Modo | O que acontece em tempo de execução |
|---|---|
allow | A skill não impõe nada por conta própria; suas regras de política decidem. |
quarantine | Qualquer veredito non-deny escala para pending_approval. Um humano deve aprovar cada chamada de ferramenta. |
block | Força deny em todas as ferramentas desta skill, independentemente das regras de política. |
high é colocada em quarentena automaticamente; critical
é bloqueada. Um único achado de error (ex.: tool_creep para um shell.exec
não declarado) é suficiente para bloquear uma skill mesmo quando sua pontuação
numérica parece baixa. O modo só aumenta a restrição — aprovar uma skill nunca
relaxa um bloqueio definido por um scan novo.
2.4 Credenciais são armazenadas criptografadas
Segredos de autenticação do servidor são criptografados em repouso com uma chave de segredos do workspace e injetados pelo gateway no tempo de dispatch. Eles nunca alcançam o modelo, o agente ou os argumentos da chamada. Um servidor comprometido não pode exfiltrar suas chaves de API lendo seu próprioauth_json.
Checklist de vetting de servidor MCP de terceirosAntes de registrar um servidor MCP externo:
- Verifique a identidade do publicador — quem controla a URL do endpoint?
- Leia o código-fonte ou changelog; procure por novas ferramentas adicionadas após o lançamento inicial.
- Verifique se o scan de skill retorna algum achado de
tool_creepouprompt_injectionno registro. - Escreva uma regra de firewall com
tool_name_glob: <server>.*paraauditoupending_approvalaté que você tenha um histórico de chamadas. - Revise os achados de
network_egress: o manifesto alega que precisa apenas de um domínio mas as descrições das ferramentas mencionam outros? - Re-sonde o servidor após qualquer bump de versão upstream (
POST /api/workspace/firewall/mcp_servers/:id/probe) para exibir novas ferramentas.
3. O que fazer após um rug-pull suspeito
- Desabilite o servidor imediatamente — um servidor desabilitado é removido
do registro de runtime e suas credenciais nunca são descriptografadas. Use
PUT /api/workspace/firewall/mcp_serverscom"enabled": false. - Re-sonde para exibir mudanças —
POST /api/workspace/firewall/mcp_servers/:id/probeexecutatools/liste retorna quaisquer novas ferramentas que apareceram desde sua última sondagem. - Rescancie o registro de skill —
POST /api/workspace/firewall/skills/:id/rescanre-executa o scanner contra o manifesto atualizado. Se o veredito piora paraflaggedoublocked, o Firewall emite um evento no seu feed. - Revise a fila de
pending_approval— quaisquer chamadas retidas desde o rug-pull estão na fila. Inspecione e negue-as em vez de aprovar em massa. - Audite o log de chamadas — verifique a trilha de eventos do Firewall para chamadas que passaram antes que você detectasse a mudança.
4. Combinando escaneamento de skill com regras de firewall
O escaneamento de skill e as regras de firewall são complementares e se compõem:- Uma regra com
tool_name_glob: community.*definida comopending_approvalgarante que você revise cada chamada de um servidor fornecido pela comunidade, independentemente da banda de risco. - Uma skill em quarentena substitui uma regra
allow— mesmo que sua política permitahttp.fetchamplamente, uma skill em quarentena que a possui ainda retém a chamada. - Use
skill_name_globem uma regra para aplicar políticas mais restritivas a servidores não confiáveis sem afetar suas integrações próprias.
5. Ameaças relacionadas
- Chamadas de ferramenta perigosas — regras para bloquear ações de ferramenta destrutivas ou irreversíveis independentemente da fonte.
- Exfiltração de dados — regras de egress que restringem para onde chamadas de ferramenta podem enviar dados.
- Modelo de ameaças — a superfície de ataque completa que o OrcaRouter foi projetado para defender.
Firewall: Servidores MCP
Registre servidores MCP atrás do gateway, sonde suas ferramentas e aplique
vereditos por chamada antes que qualquer chamada alcance o servidor real.
Firewall: Skills
Escaneie e pontue o risco de cada capacidade instalável. Coloque em
quarentena ou bloqueie skills arriscadas antes que suas ferramentas possam
executar.
