Insecure MCP Demo

by kenhuangus
Verified

不安全的 MCP 演示

概述

该项目演示了一个存在漏洞的 MCP 服务器和多个客户端,包括一个 PoC 攻击客户端和一个正常客户端。该项目旨在用于教学目的,展示 MCP 服务器中潜在的安全漏洞。

项目结构

  • vuln-mcp.py :易受攻击的 MCP 服务器暴露不安全的工具。
  • good-mcp-client.py :用于正常交互(插入/查询记录)的常规良好客户端。
  • attack-mcp-client.py :自动攻击客户端,演示如何利用服务器漏洞。
  • requirements.txt :项目的 Python 依赖项。

功能和漏洞

暴露的服务器工具

  1. 插入记录
    • 将姓名/地址记录插入数据库。
    • **漏洞:**由于将用户输入的字符串直接插入到 SQL 查询中,因此容易受到 SQL 注入。
  2. 查询记录
    • 列出数据库中的所有记录。
    • **漏洞:**无需身份验证或访问控制即可暴露所有数据。
  3. 执行sql
    • 执行客户端提供的任意 SQL 查询。
    • **漏洞:**允许任何 SQL 命令,包括破坏性命令(例如,数据泄露、模式更改)。
  4. 获取环境变量
    • 返回所请求的任何环境变量的值。
    • **漏洞:**泄露敏感环境变量(例如,机密、API 密钥)。

如何运行

1.安装依赖项

pip install -r requirements.txt

2.启动服务器和Good客户端

在一个终端中:

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

按照提示以交互方式插入/查询记录。

3. 运行攻击客户端

在另一个终端中:

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

这将自动:

  • 尝试 SQL 注入攻击
  • 执行任意 SQL 查询
  • 尝试读取几个常见的环境变量

示例输出

  • 攻击客户端将显示哪些有效载荷成功或失败,并打印出数据库内容和环境变量值(如果可访问)。

已证实的漏洞

  • **SQL 注入:**用户输入未经清理,允许攻击者操纵 SQL 逻辑并插入任意数据。
  • 任意代码执行: execute_sql工具允许攻击者运行任何SQL命令,包括数据窃取或破坏。
  • 敏感数据暴露: get_env_variable工具允许攻击者读取秘密和配置值。
  • **缺乏访问控制:**任何人都可以运行所有工具并访问所有数据,无需身份验证。

缓解策略

为了确保真实世界中 MCP 服务器的安全,您应该:

  1. 使用参数化查询:
    • 对于 SQL 查询,始终使用参数替换而不是字符串插值来防止注入。
    • 示例(安全):
      cursor.execute("INSERT INTO records (name, address) VALUES (?, ?)", (name, address))
  2. 限制危险工具:
    • 删除或严格限制诸如execute_sqlget_env_variable类的工具。
    • 仅公开必要的功能。
  3. 实施身份验证和授权:
    • 要求用户在允许访问敏感工具或数据之前进行身份验证和检查权限。
  4. 验证并清理输入:
    • 检查并清理所有用户输入,尤其是与数据库或系统交互的输入。
  5. 限制环境变量访问:
    • 仅允许访问非敏感变量,或者完全删除此工具。
  6. 审计和监控使用情况:
    • 记录所有工具调用并监控可疑或滥用行为。
  7. 最小特权原则:
    • 以最小权限运行服务器并尽可能限制数据库和操作系统访问。

免责声明

本项目仅用于教育和演示目的。请勿在生产环境中部署此代码。


如有疑问或需要进一步改进,请提出问题或联系项目维护者。

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

故意设置漏洞的 MCP 服务器,允许客户端出于教育目的与数据库进行交互,展示包括 SQL 注入、任意代码执行和敏感数据泄露在内的安全漏洞。

  1. Overview
    1. Project Structure
      1. Features & Vulnerabilities
        1. Exposed Server Tools
      2. How to Run
        1. 1. Install Dependencies
        2. 2. Start the Server and Good Client
        3. 3. Run the Attack Client
      3. Example Output
        1. Vulnerabilities Demonstrated
          1. Mitigation Strategies
            1. Disclaimer
              ID: fib5wotluq