Compatibility at a Cost: Systematic Discovery and Exploitation of MCP Clause-Compliance Vulnerabilities

Este artigo apresenta o primeiro framework sistemático para analisar e explorar vulnerabilidades de conformidade com cláusulas no Protocolo de Contexto de Modelo (MCP), identificando ataques que abusam da compatibilidade em SDKs multilíngues por meio de uma representação intermediária unificada e análise estática guiada por LLMs.

Nanzi Yang, Weiheng Bai, Kangjie Lu

Publicado Thu, 12 Ma
📖 5 min de leitura🧠 Leitura aprofundada

Each language version is independently generated for its own context, not a direct translation.

Imagine que o MCP (Model Context Protocol) é como o USB-C do mundo da Inteligência Artificial. Assim como o USB-C permite que você conecte qualquer fone de ouvido, carregador ou disco rígido a qualquer laptop, o MCP permite que qualquer "agente de IA" (um assistente inteligente) se conecte a qualquer ferramenta ou banco de dados externo, sem precisar de cabos especiais para cada um.

A ideia é genial: padronizar tudo para que funcione "plug-and-play". Mas, como acontece com qualquer padrão universal, há um problema: para funcionar com todo mundo, o padrão precisa ser flexível demais.

Aqui está a história do que os pesquisadores descobriram, explicada de forma simples:

1. O Problema: A Flexibilidade que vira uma Brecha

O protocolo MCP foi desenhado para ser compatível com milhões de cenários diferentes. Para não "quebrar" nada, a regra diz: "Você deveria fazer isso, mas se tiver um motivo bom, pode não fazer".

  • A Analogia: Pense em um manual de instruções de um brinquedo complexo. O manual diz: "Você deve colocar as pilhas (obrigatório), mas você deveria apertar o botão de teste antes de ligar (recomendado, mas opcional)."
  • O Erro: Como a regra é "opcional", alguns fabricantes (os desenvolvedores dos "SDKs", que são as caixas de ferramentas para criar IAs) decidem: "Ah, esse botão de teste é chato, vou ignorar e não colocar no meu brinquedo."
  • O Perigo: Para o fabricante, ignorar o botão é apenas uma escolha de design. Mas para um vilão, isso é uma oportunidade. Se o botão de teste não existe, o vilão pode trocar as pilhas por algo perigoso sem que ninguém perceba.

2. A Descoberta: "Abuso de Compatibilidade"

Os pesquisadores (Nanzi, Weiheng e Kangjie) perceberam que essa "flexibilidade" criou uma nova forma de ataque, que eles chamaram de "Abuso de Compatibilidade".

  • O Cenário: Existem 10 versões diferentes desse "manual de instruções" (em Python, JavaScript, Go, etc.). Cada versão foi feita por uma equipe diferente.
  • A Falha: Como o padrão diz que muitas coisas são opcionais, cada equipe ignorou partes diferentes.
    • A equipe do Python esqueceu de colocar um "alerta" quando uma ferramenta muda.
    • A equipe do TypeScript esqueceu de verificar se o token de acesso era válido.
    • A equipe do Go esqueceu de limitar a velocidade de certos comandos.

Isso significa que, dependendo de qual "versão" do assistente você usa, você pode estar exposto a riscos diferentes, mesmo usando o mesmo protocolo.

3. A Investigação: O Detetive Robô

Como eles descobriram isso em 10 linguagens de programação diferentes? Eles criaram um sistema automatizado (um "detetive robô") com três passos mágicos:

  1. O Tradutor Universal (IR): Eles criaram um tradutor que pega o código de Python, JavaScript, Rust, etc., e o transforma em um "esqueleto" comum. É como se eles tirassem fotos de 10 carros diferentes (um Ferrari, um Fusca, um Caminhão) e os transformassem todos em desenhos técnicos simples mostrando apenas: "Tem motor?", "Tem freio?", "Tem alerta de colisão?".
  2. O Detetive com Cérebro (IA + Análise Estática): Eles usaram uma Inteligência Artificial para ler esses desenhos técnicos. A IA compara o "esqueleto" do código com o "manual oficial" (o protocolo).
    • Pergunta da IA: "O manual diz que o carro deve ter um alerta de colisão. O desenho do carro de Python mostra o alerta? Não? Então, é uma falha!"
  3. O Teste de Perigo (Análise de Modalidade): Nem toda falha é grave. O sistema pergunta: "Se essa peça falta, o vilão pode controlar o que é dito (conteúdo) ou quando é dito (tempo)?"
    • Se a resposta for "Sim", é um risco de segurança real. Se for "Não", é apenas um bug chato.

4. O Resultado: Uma Tempestade de Falhas

O resultado foi chocante. Ao analisar 10 versões diferentes do protocolo, eles encontraram 1.265 riscos potenciais.

  • Exemplo Real: Em uma versão, o sistema não avisava quando uma ferramenta era alterada. Um vilão poderia trocar uma ferramenta segura por uma maliciosa, e o assistente de IA usaria a ferramenta maliciosa sem avisar o usuário. É como se um ladrão trocasse a fechadura da sua casa por uma que abre com qualquer chave, e ninguém percebesse porque o alarme (o alerta) não foi instalado.
  • Reação da Comunidade: Eles relataram 26 desses problemas. 20 foram confirmados como reais, e 5 foram classificados como "alta prioridade" (perigosos).
  • O Fim Feliz: A comunidade do MCP ficou tão impressionada que decidiu incorporar a ferramenta deles nos testes oficiais do protocolo. Agora, antes de lançar uma nova versão, eles vão usar esse "detetive robô" para garantir que ninguém esqueceu de instalar os alarmes.

Resumo em uma Frase

O protocolo MCP tentou ser tão flexível para agradar a todos que acabou criando muitas portas traseiras não intencionais; os pesquisadores criaram um scanner inteligente que encontrou mais de mil dessas portas, ajudou a fechá-las e garantiu que o sistema seja mais seguro no futuro.

A lição: Às vezes, tentar agradar a todos (compatibilidade total) sem impor regras rígidas (segurança obrigatória) é a receita para o desastre. A segurança precisa ser um "MUST" (obrigatório), não um "SHOULD" (recomendado).