Damn Vulnerable MCP Server

Un servidor diseñado para ser intencionalmente vulnerable con fines de pruebas de seguridad y educativos.

Documentación

Damn Vulnerable Model Context Protocol (DVMCP)

Una implementación deliberadamente vulnerable del Protocolo de Contexto de Modelo (MCP) con fines educativos.

Descripción general

El Protocolo de Contexto de Modelo Damn Vulnerable (DVMCP) es un proyecto educativo diseñado para demostrar vulnerabilidades de seguridad en implementaciones de MCP. Contiene 10 desafíos de dificultad creciente que muestran diferentes tipos de vulnerabilidades y vectores de ataque.

Este proyecto está destinado a investigadores de seguridad, desarrolladores y profesionales de seguridad de IA para aprender sobre posibles problemas de seguridad en implementaciones de MCP y cómo mitigarlos.

¿Qué es MCP?

El Protocolo de Contexto de Modelo (MCP) es un protocolo estandarizado que permite a las aplicaciones proporcionar contexto para Modelos de Lenguaje de Gran Escala (LLMs) de manera estructurada. Separa las preocupaciones de proporcionar contexto de la interacción real con el LLM, permitiendo que las aplicaciones expongan recursos, herramientas y avisos a los LLMs.

Clientes MCP recomendados

CLINE - Extensión de VSCode
Consulte esta Conexión a un servidor remoto - Cline para conectar Cline con el servidor MCP

Inicio rápido

Una vez que haya clonado el repositorio, ejecute los siguientes comandos:

docker build -t dvmcp .
docker run -p 9001-9010:9001-9010 dvmcp

Aviso legal

No es estable en un entorno Windows. Si no desea usar Docker, utilice un entorno Linux. Recomiendo Docker para ejecutar el LAB y estoy 100% seguro de que funciona bien en el entorno Docker

Riesgos de seguridad

Si bien MCP proporciona muchos beneficios, también introduce nuevas consideraciones de seguridad. Este proyecto demuestra varias vulnerabilidades que pueden ocurrir en implementaciones de MCP, incluyendo:

  1. Inyección de avisos: Manipulación del comportamiento del LLM mediante entradas maliciosas
  2. Envenenamiento de herramientas: Ocultar instrucciones maliciosas en descripciones de herramientas
  3. Permisos excesivos: Explotar el acceso excesivamente permisivo a herramientas
  4. Ataques de tirón de alfombra: Explotar mutaciones en la definición de herramientas
  5. Sombreado de herramientas: Sobrescribir herramientas legítimas con otras maliciosas
  6. Inyección indirecta de avisos: Inyectar instrucciones a través de fuentes de datos
  7. Robo de tokens: Explotar el almacenamiento inseguro de tokens
  8. Ejecución de código malicioso: Ejecutar código arbitrario a través de herramientas vulnerables
  9. Control de acceso remoto: Obtener acceso no autorizado al sistema
  10. Ataques de múltiples vectores: Combinar múltiples vulnerabilidades

Estructura del proyecto

damn-vulnerable-MCP-server/
├── README.md                 # Project overview
├── requirements.txt          # Python dependencies
├── challenges/               # Challenge implementations
│   ├── easy/                 # Easy difficulty challenges (1-3)
│   │   ├── challenge1/       # Basic Prompt Injection
│   │   ├── challenge2/       # Tool Poisoning
│   │   └── challenge3/       # Excessive Permission Scope
│   ├── medium/               # Medium difficulty challenges (4-7)
│   │   ├── challenge4/       # Rug Pull Attack
│   │   ├── challenge5/       # Tool Shadowing
│   │   ├── challenge6/       # Indirect Prompt Injection
│   │   └── challenge7/       # Token Theft
│   └── hard/                 # Hard difficulty challenges (8-10)
│       ├── challenge8/       # Malicious Code Execution
│       ├── challenge9/       # Remote Access Control
│       └── challenge10/      # Multi-Vector Attack
├── docs/                     # Documentation
│   ├── setup.md              # Setup instructions
│   ├── challenges.md         # Challenge descriptions
│   └── mcp_overview.md       # MCP protocol overview
├── solutions/                # Solution guides
└── common/                   # Shared code and utilities

Primeros pasos

Consulte la Guía de configuración para obtener instrucciones detalladas sobre cómo instalar y ejecutar los desafíos.

Desafíos

El proyecto incluye 10 desafíos en tres niveles de dificultad:

Desafíos fáciles

  1. Inyección básica de avisos: Explotar la entrada de usuario sin sanitizar para manipular el comportamiento del LLM
  2. Envenenamiento de herramientas: Explotar instrucciones ocultas en descripciones de herramientas
  3. Alcance excesivo de permisos: Explotar herramientas demasiado permisivas para acceder a recursos no autorizados

Desafíos medios

  1. Ataque de tirón de alfombra: Explotar herramientas que cambian su comportamiento después de la instalación
  2. Sombreado de herramientas: Explotar conflictos de nombres de herramientas para sobrescribir herramientas legítimas
  3. Inyección indirecta de avisos: Inyectar instrucciones maliciosas a través de fuentes de datos
  4. Robo de tokens: Extraer tokens de autenticación de almacenamiento inseguro

Desafíos difíciles

  1. Ejecución de código malicioso: Ejecutar código arbitrario a través de herramientas vulnerables
  2. Control de acceso remoto: Obtener acceso remoto al sistema mediante inyección de comandos
  3. Ataque de múltiples vectores: Encadenar múltiples vulnerabilidades para un ataque sofisticado

Consulte la Guía de desafíos para obtener descripciones detalladas de cada desafío.

Soluciones

Se proporcionan guías de solución con fines educativos. Se recomienda intentar los desafíos por su cuenta antes de consultar las soluciones.

Consulte la Guía de soluciones para obtener soluciones detalladas de cada desafío.

Aviso legal

Este proyecto es solo para fines educativos. Las vulnerabilidades demostradas en este proyecto nunca deben implementarse en sistemas de producción. Siempre siga las mejores prácticas de seguridad al implementar servidores MCP.

Licencia

Este proyecto está licenciado bajo la Licencia MIT; consulte el archivo LICENSE para más detalles.

Autor

Este proyecto fue creado por Harish Santhanalakshmi Ganesan utilizando el IDE cursor y Manus AI.