Communitygithub.com

auditoria-servidores-mcp-para-envenenamiento-de-herramientas

Audita servidores MCP para detectar envenenamiento de herramientas, sombreado de herramientas, rug pulls, SSRF y exposición no autenticada utilizando Invariant Labs.

¿Qué es auditoria-servidores-mcp-para-envenenamiento-de-herramientas?

Esta habilidad automatiza la auditoría de seguridad de servidores MCP (Model Context Protocol) contra ataques de envenenamiento de herramientas (OWASP MCP03:2025), sombreado de herramientas, rug pulls, flujos tóxicos, SSRF y exposición no autenticada. Utiliza la herramienta **mcp-scan** de Invariant Labs para análisis estático y en tiempo de ejecución, complementada con scripts Python personalizados para pruebas de SSRF y enumeración programática de herramientas. La habilidad es esencial para cualquier desarrollador o equipo de seguridad que integre servidores MCP en asistentes de IA como Claude Desktop, Cursor, VS Code o Windsurf. Incluye un flujo de trabajo completo de 8 pasos que abarca desde el escaneo estático de configuraciones hasta la fijación de hashes de herramientas y la verificación de autenticación, proporcionando un proceso reproducible y documentable para la revisión de seguridad en pipelines CI/CD o durante la respuesta a incidentes.

Compatible con✓Claude Code~Codex CLI✓Cursor✓Windsurf
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/auditing-mcp-servers-for-tool-poisoning

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Auditoría de Servidores MCP para Envenenamiento de Herramientas

Aviso de uso solo autorizado: Auditar servidores MCP puede conectar y sondear puntos finales de herramientas en vivo. Solo escanea servidores que poseas o estés autorizado a evaluar. Trata las descripciones de herramientas escaneadas como entrada no confiable: no cargues un servidor MCP no auditado en un agente privilegiado. Sondear puntos finales MCP de terceros en busca de SSRF o debilidades de autenticación sin permiso puede ser ilegal.

Resumen

El Protocolo de Contexto de Modelo (MCP) permite a los agentes de IA descubrir y llamar herramientas externas anunciadas por servidores MCP. Cada herramienta expone un nombre y una descripción en lenguaje natural que el LLM del agente lee antes de decidir llamarla. A principios de 2025, Invariant Labs reveló que este campo de descripción es una superficie de ataque: un servidor malicioso puede incrustar instrucciones ocultas en la descripción de una herramienta (un ataque de envenenamiento de herramientas, OWASP MCP03:2025), y un modelo capaz las seguirá silenciosamente —exfiltando archivos, filtrando secretos o redirigiendo llamadas a herramientas— mientras devuelve una respuesta de apariencia normal al usuario. Debido a que las descripciones de las herramientas se cargan en el contexto del agente, el envenenamiento de herramientas es efectivamente una inyección indirecta de indicaciones (prompt injection) entregada a través de la cadena de suministro (MITRE ATLAS AML.T0010 Compromiso de la Cadena de Suministro de ML).

Más allá del envenenamiento, los servidores MCP introducen riesgos clásicos de infraestructura: sombreado de herramientas (un servidor malicioso anula el comportamiento de una herramienta confiable), rug pulls (la descripción de una herramienta cambia después de que el usuario la aprueba), flujos tóxicos (una combinación de herramientas que permite la exfiltración de datos), SSRF en herramientas que obtienen URLs del lado del servidor, y exposición no autenticada de servidores MCP vinculados a interfaces de red. Esta habilidad audita servidores MCP de extremo a extremo utilizando mcp-scan de Invariant Labs para análisis estático y en tiempo de ejecución, además de verificaciones manuales para SSRF y autenticación, y fijación de herramientas para detectar rug pulls.

Cuándo Usarlo

  • Antes de agregar un nuevo servidor MCP a una pila de agentes (Claude Desktop, Cursor, VS Code, Windsurf, agentes personalizados).
  • Durante una revisión de seguridad de un servidor MCP desarrollado internamente.
  • Al validar que las herramientas aprobadas no hayan cambiado silenciosamente (detección de rug pulls).
  • Como una compuerta CI/CD que escanea configuraciones MCP y definiciones de SKILL/herramientas en cada cambio.
  • Durante la respuesta a incidentes cuando un agente tomó acciones inesperadas consistentes con una herramienta envenenada.

Prerrequisitos

  • Python 3.10+ y uv (para uvx), o pip.
  • Los archivos de configuración MCP que desees escanear (ej. ~/.cursor/mcp.json, ~/.vscode/mcp.json, configuración de Claude Desktop).
  • Instala las herramientas:
# uv proporciona uvx (ejecutor recomendado para mcp-scan)
curl -LsSf https://astral.sh/uv/install.sh | sh    # o: pipx install uv

# mcp-scan (Invariant Labs) — no se necesita instalación global con uvx
uvx mcp-scan@latest --help

# Para el modo proxy en tiempo de ejecución (extra separado)
uvx --with "mcp-scan[proxy]" mcp-scan@latest proxy --help

# Ayudantes de sondeo manual
pip install requests mcp

Objetivos

  • Escanear estáticamente todos los servidores MCP instalados en busca de envenenamiento de herramientas, sombreado, rug pulls y flujos tóxicos.
  • Inspeccionar las descripciones sin procesar de herramientas/indicaciones/recursos en busca de instrucciones ocultas u ofuscadas.
  • Fijar hashes de herramientas para detectar cambios de descripción posteriores a la aprobación (defensa contra rug pulls).
  • Probar herramientas que obtienen URLs en busca de falsificación de solicitudes del lado del servidor (SSRF).
  • Verificar que los servidores MCP estén autenticados y no expuestos en interfaces no confiables.
  • Opcionalmente, aplicar barreras de seguridad en tiempo de ejecución con el proxy mcp-scan.

Mapeo MITRE ATT&CK

IDNombre OficialRelevancia
AML.T0010Compromiso de la Cadena de Suministro de MLUn servidor MCP de terceros envenenado es un compromiso de la cadena de suministro del agente
AML.T0051.001Inyección de Indicaciones LLM: IndirectaLas descripciones de herramientas envenenadas son inyección indirecta en el contexto del agente
AML.T0053Compromiso de Plugin LLMLas herramientas MCP son los plugins del agente; el envenenamiento las compromete
AML.T0057Fuga de Datos LLMCarga útil común de una herramienta envenenada: exfiltrar archivos/secretos

Flujo de Trabajo

1. Escaneo estático de configuraciones MCP instaladas

mcp-scan descubre automáticamente ubicaciones de configuración conocidas; también puedes pasar una ruta explícitamente.

# Escanear todas las configuraciones MCP auto-descubiertas
uvx mcp-scan@latest

# Escanear un archivo de configuración específico
uvx mcp-scan@latest ~/.vscode/mcp.json

# Emitir JSON legible por máquina para CI
uvx mcp-scan@latest --json ~/.cursor/mcp.json > mcp_scan_report.json

mcp-scan marca envenenamiento de herramientas, sombreado de herramientas, escalada de origen cruzado, rug pulls y flujos tóxicos.

2. Inspeccionar descripciones sin procesar de herramientas

Imprime cada descripción de herramienta/indicación/recurso sin verificación, luego léelas en busca de instrucciones ocultas, bloques de tipo <important> o texto imperativo dirigido al modelo.

uvx mcp-scan@latest inspect ~/.cursor/mcp.json

Busca banderas rojas: instrucciones al asistente ("no le digas al usuario", "lee ~/.ssh/id_rsa"), documentación falsa anidada, texto de ancho cero/contrabando Unicode, o directivas para llamar a otras herramientas.

3. Fijar hashes de herramientas para detectar rug pulls

mcp-scan rastrea los hashes de las descripciones de herramientas para que un cambio silencioso posterior sea marcado. Ejecuta escaneos en un horario; una discrepancia de hash en una herramienta previamente aprobada indica un rug pull.

# Vuelve a ejecutar regularmente; mcp-scan reporta hashes de herramientas cambiados desde la última aprobación
uvx mcp-scan@latest ~/.cursor/mcp.json

4. Enumerar herramientas programáticamente y auditar metadatos

Conéctate al servidor con el SDK oficial de MCP e inspecciona el esquema anunciado directamente.

# enumerate_tools.py (ejemplo de servidor MCP stdio)
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    params = StdioServerParameters(command="node", args=["./suspect-mcp-server.js"])
    async with stdio_client(params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            for t in tools.tools:
                print(f"{t.name}: {len(t.description or '')} caracteres")
                print((t.description or "")[:400])

asyncio.run(main())

5. Probar herramientas que obtienen URLs para SSRF

Si una herramienta acepta una URL y la obtiene del lado del servidor, intenta alcanzar objetivos internos de metadatos/loopback (solo en sistemas que poseas).

# ssrf_probe.py
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

SSRF_TARGETS = [
    "http://169.254.169.254/latest/meta-data/",   # AWS IMDS
    "http://127.0.0.1:22/", "http://localhost:6379/", "file:///etc/passwd",
]

async def main():
    params = StdioServerParameters(command="node", args=["./suspect-mcp-server.js"])
    async with stdio_client(params) as (r, w):
        async with ClientSession(r, w) as s:
            await s.initialize()
            for url in SSRF_TARGETS:
                res = await s.call_tool("fetch_url", {"url": url})
                body = str(res.content)[:200]
                print(f"[SSRF?] {url} -> {body}")

asyncio.run(main())

6. Verificar autenticación y exposición de red

Comprueba que los servidores MCP remotos (transporte HTTP/SSE) requieran autenticación y no estén vinculados a 0.0.0.0 en redes no confiables.

# Confirmar si un punto final MCP SSE/HTTP responde sin credenciales
curl -s -i http://mcp-host:8000/sse | head -n 20

# Verificar interfaces de escucha de un servidor MCP en ejecución local
ss -tlnp | grep -E ':(8000|3000|6277)'

Un punto final MCP que devuelve listados de herramientas o acepta tools/call sin autenticación es exposición no autenticada: remedia con un token/OAuth y vincúlalo a localhost o a una puerta de enlace autenticada.

7. Aplicar barreras de seguridad en tiempo de ejecución (opcional)

Para protección continua, enruta el tráfico MCP del agente a través del proxy mcp-scan, que verifica llamadas a herramientas, restricciones de flujo de datos, PII e inyección indirecta en tiempo real.

uvx --with "mcp-scan[proxy]" mcp-scan@latest proxy

8. Informar hallazgos

Documenta cada hallazgo con servidor, herramienta, evidencia (la descripción envenenada / respuesta SSRF / listado no autenticado), severidad y mapeo ATLAS. Recomienda eliminar o poner en cuarentena servidores envenenados, agregar autenticación, fijar herramientas aprobadas y habilitar el proxy.

Herramientas y Recursos

HerramientaPropósitoFuente
mcp-scanEscáner de seguridad MCP estático + tiempo de ejecuciónhttps://github.com/invariantlabs-ai/mcp-scan
SDK Python MCPEnumeración/llamadas programáticas de herramientashttps://github.com/modelcontextprotocol/python-sdk
OWASP MCP Top 10Referencia de riesgos MCP (MCP03 Envenenamiento de Herramientas)https://owasp.org/www-project-mcp-top-10/
Blog de Invariant LabsDivulgación de envenenamiento de herramientashttps://invariantlabs.ai/blog/introducing-mcp-scan
MITRE ATLASTaxonomía de técnicas de amenazas de IAhttps://atlas.mitre.org/

Referencia de Amenazas MCP

AmenazaDescripciónDetección
Envenenamiento de herramientasInstrucciones ocultas en la descripción de la herramientaescaneo mcp-scan / inspección
Sombreado de herramientasServidor malicioso anula herramienta confiableverificaciones de origen cruzado mcp-scan
Rug pullDescripción cambia después de la aprobaciónfijación de herramientas mcp-scan (hash)
Flujo tóxicoCombinación de herramientas que permite exfiltraciónanálisis de flujo tóxico mcp-scan
SSRFHerramienta que obtiene URLs alcanza objetivos internosssrf_probe contra servidor propio
Exposición no autenticadaPunto final MCP sin autenticacióncurl/interfaz ss y verificación de autenticación

Criterios de Validación

  • Todas las configuraciones MCP instaladas escaneadas estáticamente con mcp-scan
  • Descripciones sin procesar de herramientas/indicaciones/recursos inspeccionadas en busca de instrucciones ocultas
  • Hashes de herramientas fijados y detección de rug pull habilitada
  • Herramientas enumeradas programáticamente mediante el SDK de MCP
  • Herramientas que obtienen URLs probadas para SSRF contra objetivos propios
  • Autenticación y exposición de red de servidores remotos verificadas
  • Barreras de seguridad del proxy en tiempo de ejecución evaluadas o implementadas donde corresponda
  • Hallazgos mapeados a MITRE ATLAS AML.T0010 y OWASP MCP03:2025
  • Severidad asignada y remediación documentada para cada hallazgo
  • Re-escaneo programado para detectar futuros rug pulls

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Skills relacionados