AIDive

Pack de vídeo

Servidores MCP, o elo fraco: números do GhostSplice, caminhos de vazamento e checklist

11 min de leitura

TL;DR

  • Um servidor MCP não é um plugin, é um detentor de credenciais que conversa com o seu agente a cada chamada: as descrições das ferramentas e os resultados delas entram no contexto do modelo com o mesmo peso que as suas próprias instruções.
  • O GhostSplice mostra que o alinhamento do modelo não é uma defesa: uma ordem de roubo dada em um único bloco é recusada 100% das vezes por GPT-4o, Gemini 2.0 Flash e Llama 3.3; a mesma ordem dividida entre a descrição de uma ferramenta e o resultado de uma ferramenta é obedecida 100% das vezes.
  • O cliente importa tanto quanto o modelo: o Claude Haiku 4.5 recusa tudo pela API e cede em 100% no teste de três fragmentos rodado dentro do Cursor.
  • A cadeia de suprimentos já é um fio energizado: a CVE-2025-6514 atingiu o mcp-remote, um proxy OAuth baixado mais de 400,000 vezes, com uma injeção de comando disparada por um servidor malicioso.
  • A detecção em nível de protocolo da Cloudflare e o WriteGuard são os primeiros controles corporativos de verdade, mas exigem Zero Trust com inspeção TLS, e um servidor stdio local nunca aparece neles.
  • Para um desenvolvedor solo ou uma equipe pequena, a defesa é manual: inventário, procedência, tokens com escopo restrito, uma aprovação humana em toda escrita e tratar a saída das ferramentas como dado.

O que dizem as fontes

Um servidor MCP faz a ponte entre o seu agente e um serviço externo, então guarda no seu lugar o que precisa para se conectar: tokens, chaves de API, credenciais de conta de serviço. A análise de vazamentos publicada em 17 de agosto parte de uma constatação direta: os tokens são colados direto em strings de configuração e ficam legíveis em disco, a um commit apressado de um repositório Git s2. A mesma análise lista o excesso de permissões como o segundo buraco: permissões amplas concedidas durante o desenvolvimento vão para produção sem mudança, de modo que um único comprometimento expõe muito mais do que o uso real justificava s2. O quarto buraco é a prompt injection: um agente lê tudo o que suas ferramentas trazem de volta, uma página web, um ticket, um documento interno, e uma instrução escondida nesse conteúdo é seguida como se viesse de você, usando ferramentas legítimas para expor justamente o que deveriam proteger s2.

O terceiro buraco é a cadeia de suprimentos. A CVE-2025-6514 afetava o mcp-remote, um proxy OAuth baixado mais de 400,000 vezes: um servidor malicioso podia disparar uma injeção de comando na máquina do desenvolvedor, executar código e sair com as credenciais. Um pacote npm popular, instalado em uma linha, e a porta estava aberta s3.

O ecossistema cresceu mais rápido que suas proteções. O registro oficial passa de 9,600 servidores publicados, as implantações de servidores remotos se multiplicaram por cinco desde maio de 2025, qualquer pessoa pode publicar e não há validação central; o seu agente trata uma entrada qualquer com a mesma confiança de uma ferramenta oficial s4. A NSA publicou em maio um guia de segurança dedicado ao MCP, afirmando que a adoção do protocolo superou a construção de suas proteções s5.

O GhostSplice, batizado pelo grupo de pesquisa ASSET, faz o próprio agente executar a exfiltração. Em vez de escrever a ordem de roubo completa, o servidor malicioso a divide: um fragmento na descrição de uma ferramenta, o outro no resultado que essa ferramenta devolve. Cada pedaço parece inofensivo sozinho; o agente recompõe tudo o que entra no seu contexto e executa a instrução inteira de boa-fé s1. Os números são o ponto central. Com a instrução dada em um único bloco, GPT-4o, Gemini 2.0 Flash e Llama 3.3 recusam 100% das vezes. Com a instrução fragmentada, os três obedecem 100% das vezes s1. Os modelos Claude resistem melhor na superfície, mas o Claude Haiku 4.5 recusa tudo pela API e cede em 100% no teste de três fragmentos rodado dentro do Cursor: o mesmo modelo recusa em um cliente e exfiltra em outro, conforme as proteções que o cliente adiciona ou não s1. O que os testes roubaram: chaves SSH, segredos de ambiente, código-fonte, dados de clientes, em projetos isolados com chaves falsas, com um método publicado e reproduzível s1. O mesmo laboratório publicou o Ghostcommit em junho, que escondia as instruções em arquivos PNG referenciados pelas convenções do projeto e depois codificava os segredos roubados no código-fonte como inteiros; a fragmentação de instruções é uma família de ataques, não um caso isolado s1. Dois pré-requisitos se mantêm: o servidor malicioso já precisa estar conectado ao seu agente, e o agente precisa ter direito de ler os arquivos visados s1.

No lado corporativo, a Cloudflare chama de "shadow MCP" os servidores não aprovados que os desenvolvedores ligam aos seus agentes. Desde a atualização da especificação, todo cliente MCP em conformidade envia um cabeçalho MCP-Protocol-Version, e o Gateway inspeciona esse cabeçalho em todo o tráfego TLS analisado, dando a uma equipe de segurança um painel de servidores únicos, usuários e volume de requisições s6. A versão mais recente da especificação adiciona os cabeçalhos Mcp-Method e Mcp-Name, que expõem a operação solicitada e o nome da ferramenta sem abrir o corpo da requisição, de modo que a rede consegue distinguir um agente lendo um ticket de um agente apagando cinquenta. As regras da Cloudflare cobrem dois casos, o shadow MCP puro (um servidor nunca aprovado) e o desvio do portal (um servidor aprovado acessado diretamente), e ambos são bloqueados pela mesma regra base s6.

O WriteGuard, aberto em beta privado, classifica cada ferramenta de cada servidor MCP em um nível de risco e aplica uma política diferente por nível: uma leitura passa sem atrito; uma escrita contida, como postar um comentário, passa mas é assinada como feita por um agente em nome de um humano identificado, com um evento de auditoria enviado a um log central; uma ação crítica, como fazer merge de código, implantar em produção ou apagar em massa, é bloqueada antes que o servidor a processe s7. O exemplo do GitLab no post: ler uma merge request passa, comentar passa com atribuição, fazer o merge é recusado até que um humano o faça. O agente mantém as permissões do funcionário que ele atende, mas cada escrita carrega duas assinaturas, a da pessoa e a da sessão do agente. A Cloudflare descreve o próprio uso interno: o portal dela conecta 27 servidores MCP, contra 13 em abril s7.

Os limites são reais. O WriteGuard está em beta privado mediante inscrição, e a detecção do Gateway exige uma implantação do Cloudflare Zero Trust com inspeção TLS ativada s7. A detecção só enxerga o tráfego de rede que ela decifra: um servidor MCP local rodando por stdio como um processo comum na sua máquina continua invisível para o Gateway, e é assim que rodam a maioria dos servidores instalados por desenvolvedores s6. Nenhuma dessas ferramentas corrige o mecanismo que o GhostSplice expõe. Os pesquisadores do ASSET dizem que a correção é tratar a saída das ferramentas como dado, nunca como instrução, e que essa separação ainda não existe nativamente nos agentes. As três recomendações deles: impedir que um valor produzido por uma ferramenta alimente sem checagem os argumentos de outra, manter a capacidade de recusar manualmente cada invocação de ferramenta e tratar qualquer anotação de um servidor não verificado como hostil por padrão s1.

Veredito: o que protege você e o que não protege

Controle A quem serve Veredito
Recusas do modelo Todos Descartar como defesa: 100% de recusa em um bloco, 100% de obediência quando fragmentado [s1]
Proteções no lado do cliente Todos Manter: o mesmo modelo recusou na API e cedeu no Cursor [s1]
Inventário e procedência dos servidores Solo e equipes Manter: o GhostSplice precisa que o servidor já esteja conectado [s1]
Tokens dedicados com escopo restrito e rotacionados Solo e equipes Manter: tokens em texto puro e excesso de permissões são os dois primeiros caminhos de vazamento [s2]
Fixar versões e auditar dependências MCP Solo e equipes Manter: o mcp-remote entregou uma injeção de comando a mais de 400,000 downloads [s3]
Detecção por cabeçalhos no Gateway (MCP-Protocol-Version, Mcp-Method, Mcp-Name) Empresas com Zero Trust Testar se você já faz inspeção TLS; cega para servidores stdio [s6]
Níveis de risco do WriteGuard Empresas Testar pela lista de espera; só beta privado [s7]
Aprovação humana em toda escrita, merge e exclusão Todos Manter: a versão artesanal do que o WriteGuard industrializa [s7]

Faça isto na segunda-feira

  • Liste os servidores MCP realmente conectados a cada um dos seus agentes e remova todos os que você não usou no último mês.
  • Para cada servidor restante, anote quem o publica e leia o que ele faz com os seus dados antes de mantê-lo; descarte qualquer servidor que veio de uma thread e não do fornecedor.
  • Troque cada credencial compartilhada ou mestra em uma config MCP por um token dedicado, com o escopo mínimo de que aquele servidor precisa, e defina uma data de rotação.
  • Confira que nenhum dos seus arquivos de config MCP está versionado no Git, e adicione-os ao .gitignore onde não estiverem.
  • Fixe a versão de cada pacote MCP que você instala e procure no seu lockfile versões do mcp-remote cobertas pela CVE-2025-6514.
  • Ative a aprovação manual para toda ferramenta que escreve, faz merge, implanta ou apaga, e mantenha-a ligada em todos os clientes que você usa.
  • Revise uma vez as descrições de ferramentas de cada servidor de terceiros, procurando instruções dirigidas ao modelo e não a você.
  • Se você usa Cloudflare Zero Trust, ative a inspeção TLS e monte o painel de shadow MCP a partir do cabeçalho MCP-Protocol-Version.

Para ir além

  • Leia a análise completa do GhostSplice para ver a matriz de testes por modelo e por cliente, e as três mitigações propostas pelos pesquisadores s1.
  • Procure o Ghostcommit, o ataque de junho do mesmo laboratório, para ver como as instruções se escondiam em arquivos PNG e como os segredos roubados eram codificados como inteiros no código-fonte s1.
  • Passe os quatro caminhos de vazamento da análise de 17 de agosto pelas suas próprias configs: armazenamento em texto puro, excesso de permissões, cadeia de suprimentos, prompt injection s2.
  • Leia a entrada do NVD da CVE-2025-6514 e confira quais versões do mcp-remote são afetadas antes de confiar em qualquer proxy OAuth na sua stack s3.
  • Leia as considerações de design da NSA para MCP: é a única checklist neutra em relação a fornecedores escrita para equipes que implantam automação com agentes s5.
  • Estude os cabeçalhos MCP-Protocol-Version, Mcp-Method e Mcp-Name no post da Cloudflare mesmo que você não use Cloudflare: qualquer proxy que você controla pode registrá-los em log s6.
  • Pegue emprestados os quatro níveis de risco do WriteGuard (somente leitura, impacto mínimo, escrita contida, crítico) como grade de revisão das ferramentas que os seus próprios servidores expõem s7.
  • Explore o README do registro oficial para entender o que a publicação exige e o que ela não verifica s4.

Fontes

FAQ

Usar um modelo mais seguro me protege do GhostSplice?

Não. O ataque nunca pede nada proibido em uma peça só, então o treinamento de recusa não é acionado. O mesmo Claude Haiku 4.5 recusou tudo pela API e obedeceu 100% dentro do Cursor; as proteções do cliente decidiram o resultado, não o modelo.

Sou desenvolvedor solo, alguma ferramenta da Cloudflare serve para mim?

Hoje não. A detecção do Gateway exige uma implantação Zero Trust com inspeção TLS, o WriteGuard é um beta privado, e ambos são cegos para servidores stdio locais. A checklist acima é a versão solo dos mesmos controles.

Um servidor listado no registro oficial é seguro?

Estar listado não é estar validado. O registro passa de 9,600 servidores sem revisão central, e o seu agente confia numa entrada do registro tanto quanto numa ferramenta de fornecedor. Avalie a procedência e leia o código, não a listagem.

Qual é a mudança de maior valor?

Tokens dedicados, com escopo mínimo, por servidor, rotacionados como segredos de produção. Credenciais mestras em texto puro nos arquivos de config são o primeiro caminho de vazamento, e deixam qualquer outra falha, da CVE-2025-6514 à prompt injection, muito mais cara.