Skip to main content
Glama

Insecure MCP Demo

Demostración de MCP inseguro

Descripción general

Este proyecto demuestra un servidor MCP vulnerable y varios clientes, incluyendo un cliente de prueba de concepto para ataques y un cliente en buen estado. Está diseñado con fines educativos para mostrar posibles vulnerabilidades de seguridad en el servidor MCP.

Estructura del proyecto

  • vuln-mcp.py : Servidor MCP vulnerable que expone herramientas inseguras.
  • good-mcp-client.py : Cliente bueno normal para interacciones normales (insertar/consultar registros).
  • attack-mcp-client.py : Cliente de ataque automatizado que demuestra la explotación de vulnerabilidades del servidor.
  • requirements.txt : Dependencias de Python para el proyecto.

Características y vulnerabilidades

Herramientas de servidor expuestas

  1. insertar_registro
    • Inserta un registro de nombre/dirección en la base de datos.
    • Vulnerabilidad: Propenso a la inyección de SQL debido a la interpolación directa de cadenas de entrada del usuario en consultas SQL.
  2. registros_de_consulta
    • Enumera todos los registros en la base de datos.
    • Vulnerabilidad: Expone todos los datos sin autenticación ni control de acceso.
  3. ejecutar_sql
    • Ejecuta consultas SQL arbitrarias proporcionadas por el cliente.
    • Vulnerabilidad: Permite cualquier comando SQL, incluidos los destructivos (por ejemplo, exfiltración de datos, cambios de esquema).
  4. obtener_variable_env
    • Devuelve el valor de cualquier variable de entorno solicitada.
    • Vulnerabilidad: Fugas de variables de entorno sensibles (por ejemplo, secretos, claves API).

Cómo correr

1. Instalar dependencias

pip install -r requirements.txt

2. Iniciar el servidor y el buen cliente

En una terminal:

python good-mcp-client.py vuln-mcp.py

Siga las instrucciones para insertar o consultar registros de forma interactiva.

3. Ejecute el cliente de ataque

En otra terminal:

python attack-mcp-client.py vuln-mcp.py

Esto automáticamente:

  • Intentos de ataques de inyección SQL
  • Ejecutar consultas SQL arbitrarias
  • Intente leer varias variables de entorno comunes

Ejemplo de salida

  • El cliente de ataque mostrará qué cargas útiles tienen éxito o fallan e imprimirá los contenidos de la base de datos y los valores de las variables de entorno si son accesibles.

Vulnerabilidades demostradas

  • Inyección SQL: la entrada del usuario no está saneada, lo que permite a los atacantes manipular la lógica SQL e insertar datos arbitrarios.
  • Ejecución de código arbitrario: la herramienta execute_sql permite a los atacantes ejecutar cualquier comando SQL, incluido el robo o la destrucción de datos.
  • Exposición de datos confidenciales: la herramienta get_env_variable permite a los atacantes leer secretos y valores de configuración.
  • Falta de control de acceso: cualquiera puede ejecutar todas las herramientas y acceder a todos los datos sin autenticación.

Estrategias de mitigación

Para proteger un servidor MCP del mundo real, debes:

  1. Utilice consultas parametrizadas:
    • Utilice siempre la sustitución de parámetros en lugar de la interpolación de cadenas para consultas SQL para evitar la inyección.
    • Ejemplo (seguro):
      cursor.execute("INSERT INTO records (name, address) VALUES (?, ?)", (name, address))
  2. Restringir herramientas peligrosas:
    • Elimine o limite estrictamente herramientas como execute_sql y get_env_variable .
    • Exponer únicamente la funcionalidad necesaria.
  3. Implementar autenticación y autorización:
    • Exigir que los usuarios se autentiquen y verifiquen los permisos antes de permitir el acceso a herramientas o datos confidenciales.
  4. Validar y desinfectar la entrada:
    • Verifique y desinfecte todas las entradas del usuario, especialmente aquellas que interactúan con la base de datos o el sistema.
  5. Limitar el acceso a las variables de entorno:
    • Permitir el acceso únicamente a variables no sensibles o eliminar esta herramienta por completo.
  6. Auditoría y monitoreo del uso:
    • Registre todas las invocaciones de herramientas y monitoree si hay comportamiento sospechoso o abusivo.
  7. Principio del Mínimo Privilegio:
    • Ejecute el servidor con privilegios mínimos y restrinja el acceso a la base de datos y al sistema operativo tanto como sea posible.

Descargo de responsabilidad

Este proyecto es solo para fines educativos y de demostración. No lo implemente en entornos de producción.


Si tiene preguntas o desea realizar más mejoras, abra un problema o comuníquese con el responsable del proyecto.

-
security - not tested
F
license - not found
-
quality - not tested

local-only server

The server can only run on the client's local machine because it depends on local resources.

Un servidor MCP deliberadamente vulnerable que permite a los clientes interactuar con una base de datos con fines educativos, demostrando vulnerabilidades de seguridad que incluyen inyección SQL, ejecución de código arbitrario y exposición de datos confidenciales.

  1. Descripción general
    1. Estructura del proyecto
      1. Características y vulnerabilidades
        1. Herramientas de servidor expuestas
      2. Cómo correr
        1. Instalar dependencias
        2. Iniciar el servidor y el buen cliente
        3. Ejecute el cliente de ataque
      3. Ejemplo de salida
        1. Vulnerabilidades demostradas
          1. Estrategias de mitigación
            1. Descargo de responsabilidad

              Related MCP Servers

              • A
                security
                A
                license
                A
                quality
                An MCP server that enables interaction with Safe (formerly Gnosis Safe) smart contract wallets, allowing users to query transactions, get multisig details, and decode transaction data through natural language.
                Last updated -
                3
                JavaScript
                MIT License
              • -
                security
                F
                license
                -
                quality
                Damn Vulnerable MCP Server for Security Researchers.
                Last updated -
                Python
              • -
                security
                -
                license
                -
                quality
                A vulnerable MCP server implementation that demonstrates how poor coding practices can lead to security issues like Remote Code Execution, designed for educational purposes to add numbers.
                Last updated -
                Python
                MIT License
              • -
                security
                -
                license
                -
                quality
                Intentionally vulnerable Model Context Protocol (MCP) server designed for security research that processes natural language queries through an LLM to execute SQL queries or shell commands without restrictions.
                Last updated -
                Python

              View all related MCP servers

              MCP directory API

              We provide all the information about MCP servers via our MCP API.

              curl -X GET 'https://glama.ai/api/mcp/v1/servers/kenhuangus/mcp-vulnerable-server-demo'

              If you have feedback or need assistance with the MCP directory API, please join our Discord server