>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Python

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.

MCP Scanner

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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