Damn Vulnerable MCP Server

Um servidor projetado para ser intencionalmente vulnerável para fins de teste de segurança e educacionais.

Documentação

Damn Vulnerable Model Context Protocol (DVMCP)

Uma implementação deliberadamente vulnerável do Model Context Protocol (MCP) para fins educacionais.

Visão Geral

O Damn Vulnerable Model Context Protocol (DVMCP) é um projeto educacional projetado para demonstrar vulnerabilidades de segurança em implementações MCP. Ele contém 10 desafios de dificuldade crescente que mostram diferentes tipos de vulnerabilidades e vetores de ataque.

Este projeto é destinado a pesquisadores de segurança, desenvolvedores e profissionais de segurança de IA para aprender sobre possíveis problemas de segurança em implementações MCP e como mitigá-los.

O que é MCP?

O Model Context Protocol (MCP) é um protocolo padronizado que permite que aplicações forneçam contexto para Modelos de Linguagem de Grande Escala (LLMs) de forma estruturada. Ele separa as preocupações de fornecer contexto da interação real com o LLM, permitindo que aplicações exponham recursos, ferramentas e prompts aos LLMs.

Clientes MCP Recomendados

CLINE - Extensão do VSCode
Consulte este Conectando a um Servidor Remoto - Cline para conectar o Cline ao servidor MCP

Início Rápido

Depois de clonar o repositório, execute os seguintes comandos:

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

Aviso Legal

Não é estável em ambiente Windows. Se você não quiser usar Docker, use um ambiente Linux. Recomendo usar Docker para executar o laboratório e tenho 100% de certeza de que funciona bem no ambiente Docker

Riscos de Segurança

Embora o MCP ofereça muitos benefícios, ele também introduz novas considerações de segurança. Este projeto demonstra várias vulnerabilidades que podem ocorrer em implementações MCP, incluindo:

  1. Injeção de Prompt: Manipular o comportamento do LLM por meio de entradas maliciosas
  2. Envenenamento de Ferramentas: Ocultar instruções maliciosas em descrições de ferramentas
  3. Permissões Excessivas: Explorar acesso excessivamente permissivo a ferramentas
  4. Ataques de Puxar o Tapete: Explorar mutações na definição de ferramentas
  5. Sombra de Ferramentas: Substituir ferramentas legítimas por maliciosas
  6. Injeção Indireta de Prompt: Injetar instruções por meio de fontes de dados
  7. Roubo de Tokens: Explorar armazenamento inseguro de tokens
  8. Execução de Código Malicioso: Executar código arbitrário por meio de ferramentas vulneráveis
  9. Controle de Acesso Remoto: Obter acesso não autorizado ao sistema
  10. Ataques Multi-Vetor: Combinar múltiplas vulnerabilidades

Estrutura do Projeto

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

Começando

Consulte o Guia de Configuração para instruções detalhadas sobre como instalar e executar os desafios.

Desafios

O projeto inclui 10 desafios em três níveis de dificuldade:

Desafios Fáceis

  1. Injeção Básica de Prompt: Explorar entrada de usuário não sanitizada para manipular o comportamento do LLM
  2. Envenenamento de Ferramentas: Explorar instruções ocultas em descrições de ferramentas
  3. Escopo de Permissão Excessivo: Explorar ferramentas excessivamente permissivas para acessar recursos não autorizados

Desafios Médios

  1. Ataque de Puxar o Tapete: Explorar ferramentas que mudam seu comportamento após a instalação
  2. Sombra de Ferramentas: Explorar conflitos de nomes de ferramentas para substituir ferramentas legítimas
  3. Injeção Indireta de Prompt: Injetar instruções maliciosas por meio de fontes de dados
  4. Roubo de Tokens: Extrair tokens de autenticação de armazenamento inseguro

Desafios Difíceis

  1. Execução de Código Malicioso: Executar código arbitrário por meio de ferramentas vulneráveis
  2. Controle de Acesso Remoto: Obter acesso remoto ao sistema por meio de injeção de comandos
  3. Ataque Multi-Vetor: Encadear múltiplas vulnerabilidades para um ataque sofisticado

Consulte o Guia de Desafios para descrições detalhadas de cada desafio.

Soluções

Guias de solução são fornecidos para fins educacionais. Recomenda-se tentar os desafios por conta própria antes de consultar as soluções.

Consulte o Guia de Soluções para soluções detalhadas de cada desafio.

Aviso Legal

Este projeto é apenas para fins educacionais. As vulnerabilidades demonstradas neste projeto nunca devem ser implementadas em sistemas de produção. Sempre siga as melhores práticas de segurança ao implementar servidores MCP.

Licença

Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.

Autor

Este projeto foi criado por Harish Santhanalakshmi Ganesan usando o cursor IDE e Manus AI.