Skip to main content
Glama

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.

Related MCP server: MCP Toolbox for Databases

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

Latest Blog Posts

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