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: Damn Vulnerable Model Context Protocol (DVMCP)
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
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.
registros_de_consulta
Enumera todos los registros en la base de datos.
Vulnerabilidad: Expone todos los datos sin autenticación ni control de acceso.
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).
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.txt2. Iniciar el servidor y el buen cliente
En una terminal:
python good-mcp-client.py vuln-mcp.pySiga 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.pyEsto 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_sqlpermite 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_variablepermite 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:
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))
Restringir herramientas peligrosas:
Elimine o limite estrictamente herramientas como
execute_sqlyget_env_variable.Exponer únicamente la funcionalidad necesaria.
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.
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.
Limitar el acceso a las variables de entorno:
Permitir el acceso únicamente a variables no sensibles o eliminar esta herramienta por completo.
Auditoría y monitoreo del uso:
Registre todas las invocaciones de herramientas y monitoree si hay comportamiento sospechoso o abusivo.
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.
This server cannot be installed
Maintenance
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
