>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Python

Cómo verificar servidores MCP en busca de amenazas ocultas y puertas traseras

Conectar extensiones de terceros a asistentes de IA se ha convertido rápidamente en algo común. Añadimos sin dudar nuevos servidores MCP a Cursor, Windsurf o Claude Desktop para que el modelo pueda leer documentación, consultar bases de datos o ejecutar scripts. Sin embargo, pocas personas realmente leen el código fuente de estas utilidades antes de ejecutarlas. Gran error.

Cualquier herramienta externa obtiene acceso directo al contexto del modelo y a tu sistema. Si la descripción de una herramienta contiene una instrucción sutil (inyección de prompts), o un paquete envía silenciosamente variables de entorno a un servidor externo, detectar el truco manualmente es difícil. El equipo de Cisco AI Defense ha lanzado un proyecto de código abierto mcp-scanner — una utilidad de línea de comandos y biblioteca de Python diseñada específicamente para auditar servidores MCP.

MCP Scanner

Lo que puede hacer el escáner

La herramienta verifica cuatro entidades del protocolo MCP a la vez: descripciones de funciones (herramientas), prompts preconfigurados, recursos estáticos e instrucciones del sistema del servidor.

En su interior, ejecuta un sistema de análisis híbrido. El escáner no se limita a la coincidencia de firmas — combina varios enfoques:

  1. Análisis de firmas YARA. Verifica código y esquemas en busca de patrones de ataque típicos, llamadas a comandos de shell y intentos de escape del sandbox. Se ejecuta localmente y es rápido, no necesita claves API.
  2. Verificación semántica LLM-as-a-judge. Envía esquemas de herramientas y prompts del sistema a un modelo (soporta OpenAI, Bedrock, Azure u Ollama local) para detectar inyecciones ocultas y discrepancias entre la descripción de una función y su comportamiento real.
  3. Auditoría de comportamiento del código fuente. Un analizador estático compara docstrings con los cuerpos de funciones en Python, TypeScript, Go, Rust, Java y otros cinco lenguajes. Si una función dice ser una calculadora pero inicia solicitudes HTTP internamente, el escáner genera una alerta.
  4. Aislamiento de paquetes de PyPI y npm. La utilidad puede descargar paquetes y ejecutarlos en un contenedor Docker aislado, identificando código malicioso antes de que lo instales en tu sistema.

Un detalle interesante: el repositorio incluye un Readiness Analyzer. Contiene 20 heurísticas y busca problemas puramente de ingeniería: timeouts olvidados, lógica de reintento faltante para fallos de red y mal manejo de errores.

Inicio rápido en la terminal

La forma más sencilla de instalar la utilidad es mediante uv:

uv tool install --python 3.13 cisco-ai-mcp-scanner

Si solo quieres verificar lo que ya está configurado en tus editores, ejecuta un escaneo de configuraciones conocidas:

mcp-scanner --scan-known-configs --analyzers yara --format summary

El comando encontrará los archivos de configuración de Claude Desktop, Cursor y Windsurf en tu máquina, se conectará a los servidores configurados y ejecutará reglas YARA básicas.

Para verificar un servidor local que se ejecuta sobre stdio, pasa el comando de lanzamiento:

mcp-scanner --analyzers yara,prompt_defense --format table \
  stdio --stdio-command uvx --stdio-arg mcp-server-fetch

Si tienes un endpoint remoto ejecutándose, la verificación comienza de la misma manera:

mcp-scanner --server-url https://mcp.deepwiki.com/mcp --analyzers yara --format summary

La utilidad mostrará un resumen para cada herramienta con su estado de seguridad y una lista de amenazas 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

Uso en código y CI/CD

El proyecto está diseñado no solo como CLI, sino también como un SDK independiente. Es conveniente integrarlo en puertas de enlace de backend o tuberías de validación de herramientas antes de publicar en el registro interno de tu 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 tuberías de circuito cerrado, existe un modo static. Puedes exportar esquemas de herramientas a JSON de antemano y escanearlos sin conexión sin iniciar servidores y realizar solicitudes de red:

mcp-scanner --analyzers yara static --tools ./output/tools-list.json

Qué tener en cuenta

El proyecto es de código abierto bajo la licencia Apache 2.0. Los analizadores básicos (YARA, pip-audit, Prompt Defense y verificaciones de preparación) se ejecutan de forma totalmente autónoma y gratuita.

Para el análisis semántico profundo, necesitarás una clave API para cualquier LLM a través de LiteLLM, o un modelo ejecutándose localmente a través de Ollama. El motor de API de inspección de Cisco AI Defense se conecta opcionalmente si ya tienes una suscripción a sus servicios de seguridad empresarial.

La herramienta es útil para desarrolladores que construyen sus propios servidores MCP para auto-verificarse antes del lanzamiento, así como para equipos que integran agentes de IA en flujos de trabajo internos de la empresa.

Proyectos relacionados