Como Verificar Servidores MCP em Busca de Ameaças Ocultas e Backdoors
Conectar extensões de terceiros a assistentes de IA rapidamente se tornou algo comum. Adicionamos novos servidores MCP ao Cursor, Windsurf ou Claude Desktop sem hesitação, para que o modelo possa ler documentação, consultar bancos de dados ou executar scripts. Porém, poucas pessoas realmente leem o código-fonte desses utilitários antes de executá-los. Grande erro.
Qualquer ferramenta externa obtém acesso direto ao contexto do modelo e ao seu sistema. Se a descrição de uma ferramenta contém uma instrução sutil (injeção de prompt), ou um pacote envia silenciosamente variáveis de ambiente para um servidor externo, detectar o truque manualmente é difícil. A equipe da Cisco AI Defense lançou um projeto de código aberto mcp-scanner — um utilitário de linha de comando e biblioteca Python projetado especificamente para auditar servidores MCP.

O que o scanner pode fazer
A ferramenta verifica quatro entidades do protocolo MCP de uma vez: descrições de funções (ferramentas), prompts pré-configurados, recursos estáticos e instruções do sistema do servidor.
Internamente, ele executa um sistema de análise híbrido. O scanner não se limita à correspondência de assinaturas — ele combina várias abordagens:
- Análise de assinaturas YARA. Verifica código e schemas em busca de padrões típicos de ataque, chamadas de comandos shell e tentativas de escape de sandbox. Executa localmente e rapidamente, sem necessidade de chaves de API.
- Verificação semântica LLM-as-a-judge. Envia schemas de ferramentas e prompts de sistema para um modelo (suporta OpenAI, Bedrock, Azure ou Ollama local) para detectar injeções ocultas e discrepâncias entre a descrição de uma função e seu comportamento real.
- Auditoria comportamental de código-fonte. Um analisador estático compara docstrings com corpos de funções em Python, TypeScript, Go, Rust, Java e outras cinco linguagens. Se uma função afirma ser uma calculadora mas inicia solicitações HTTP internamente, o scanner emite um alerta.
- Sandbox de pacotes PyPI e npm. O utilitário pode baixar pacotes e executá-los em um contêiner Docker isolado, identificando código malicioso antes de você instalá-lo em seu sistema.
Um detalhe interessante: o repositório inclui um Readiness Analyzer. Ele contém 20 heurísticas e busca problemas puramente de engenharia: timeouts esquecidos, lógica de retry ausente para falhas de rede e tratamento de erros precário.
Início rápido no terminal
A forma mais fácil de instalar o utilitário é via uv:
uv tool install --python 3.13 cisco-ai-mcp-scanner
Se você apenas quer verificar o que já está configurado em seus editores, execute uma varredura de configs conhecidas:
mcp-scanner --scan-known-configs --analyzers yara --format summary
O comando encontrará arquivos de configuração do Claude Desktop, Cursor e Windsurf em sua máquina, conectará aos servidores configurados e executará regras YARA básicas.
Para verificar um servidor local executando sobre stdio, passe o comando de inicialização:
mcp-scanner --analyzers yara,prompt_defense --format table \
stdio --stdio-command uvx --stdio-arg mcp-server-fetch
Se você tiver um endpoint remoto em execução, a verificação começa da mesma forma:
mcp-scanner --server-url https://mcp.deepwiki.com/mcp --analyzers yara --format summary
O utilitário emitirá um resumo para cada ferramenta com seu status de segurança e uma lista de ameaças detectadas.
=== MCP Scanner Results Table ===
Scan Target: http://127.0.0.1:8002/sse
Scan Target Tool Name Status API YARA LLM Severity
-----------------------------------------------------------------------------------------
http://127.0.0.1:8002/sse exec_secrets UNSAFE HIGH HIGH HIGH HIGH
http://127.0.0.1:8002/sse safe_command SAFE SAFE SAFE SAFE SAFE
Usando em código e CI/CD
O projeto é projetado não apenas como CLI, mas também como um SDK independente. É conveniente incorporá-lo em gateways de backend ou pipelines de validação de ferramentas antes de publicar no registro interno da sua empresa.
import asyncio
import logging
from mcpscanner import Config, Scanner, set_log_level
from mcpscanner.core.models import AnalyzerEnum
async def main():
set_log_level(logging.ERROR)
config = Config(
llm_provider_api_key="your_llm_api_key"
)
scanner = Scanner(config)
# Проверяем удаленный сервер
results = await scanner.scan_remote_server_tools(
"http://127.0.0.1:8000/mcp",
analyzers=[AnalyzerEnum.YARA, AnalyzerEnum.LLM]
)
for res in results:
status = "OK" if res.is_safe else "ВНИМАНИЕ"
print(f"Инструмент: {res.tool_name} -> {status}")
asyncio.run(main())
Para pipelines de loop fechado, existe um modo static. Você pode exportar schemas de ferramentas para JSON antecipadamente e escaneá-los offline sem iniciar servidores e fazer solicitações de rede:
mcp-scanner --analyzers yara static --tools ./output/tools-list.json
O que ter em mente
O projeto é de código aberto sob a licença Apache 2.0. Analisadores básicos (YARA, pip-audit, Prompt Defense e verificações de prontidão) são executados totalmente de forma autônoma e gratuita.
Para análise semântica profunda, você precisará de uma chave de API para qualquer LLM via LiteLLM, ou um modelo em execução local via Ollama. O mecanismo de API do Cisco AI Defense Inspect conecta opcionalmente se você já tiver uma assinatura dos serviços de segurança empresarial deles.
A ferramenta é útil para desenvolvedores que criam seus próprios servidores MCP para auto-verificação antes do lançamento, assim como para equipes que integram agentes de IA em fluxos de trabalho internos da empresa.
Projetos relacionados