使用说明

项目简介

本仓库包含多个实验性的 MCP 服务器实现,用于演示针对大语言模型 (LLM) 应用的工具投毒和影子攻击。这些服务器并非通用的 MCP 服务器,而是专门为安全研究和漏洞演示而设计的。通过运行这些服务器,可以模拟恶意 MCP 服务器的行为,观察 LLM 客户端在面对工具投毒和影子攻击时的表现。

请注意: 本仓库代码仅供安全研究和实验目的使用,不应在生产环境或未经授权的场景下部署和使用。

主要功能点

  • 直接工具投毒 (Direct Poisoning): 演示如何通过恶意构造工具描述,诱导 LLM 客户端泄露本地敏感文件(如 SSH 密钥、配置文件)。
  • 工具影子攻击 (Tool Shadowing): 演示如何劫持和篡改由其他可信 MCP 服务器提供的工具的行为,例如秘密转发用户邮件到攻击者邮箱。
  • WhatsApp 接管攻击 (WhatsApp Takeover): 结合工具影子攻击和条件触发机制,演示如何先伪装成正常服务,然后在特定条件下切换为恶意服务,最终达到接管用户 WhatsApp 通信的目的。

安装步骤

  1. 克隆仓库: 将 GitHub 仓库 'mcp-injection-experiments' 克隆到本地。
    git clone https://github.com/invariantlabs-ai/mcp-injection-experiments.git
    cd mcp-injection-experiments
  2. 安装 Python 依赖: 虽然示例代码比较简洁,但为了确保运行环境,建议您创建一个 Python 虚拟环境并安装必要的库(如果需要)。根据代码 'from mcp.server.fastmcp import FastMCP',可能需要安装 'mcp-server' 库,但根据仓库内容,'fastmcp' 似乎是仓库内部提供的简化实现,因此可能不需要额外安装依赖。如果运行报错,请根据错误信息安装缺失的库。
    # 可选步骤:创建虚拟环境
    python -m venv venv
    source venv/bin/activate  # 或 venv\Scripts\activate for Windows
    
    # 可选步骤:安装依赖 (如果需要)
    # pip install mcp-server
  3. 运行服务器: 选择要运行的攻击场景,进入对应的目录(例如 'direct-poisoning/'),然后使用 Python 运行相应的服务器脚本。
    # 运行直接工具投毒服务器
    cd direct-poisoning
    python direct-poisoning.py
    
    # 运行工具影子攻击服务器
    cd ../shadowing
    python shadowing.py
    
    # 运行 WhatsApp 接管攻击服务器
    cd ../whatsapp-takeover
    python whatsapp-takeover.py
    服务器默认使用 'stdio' 传输协议,会在终端输出运行日志。

服务器配置

MCP 客户端需要配置连接到这些实验性 MCP 服务器。以下是针对不同攻击场景的配置示例(JSON 格式),您需要根据实际运行的脚本选择相应的配置,并将其配置到您的 MCP 客户端中。

1. Direct Poisoning (direct-poisoning.py)

{
  "server name": "Demo",
  "command": "python",
  "args": ["direct-poisoning.py"]
}

参数注释:

  • 'server name': 服务器名称,在 'direct-poisoning.py' 中定义为 "Demo"。
  • 'command': 启动服务器的命令,这里使用 'python' 解释器。
  • 'args': 命令参数,指定要运行的 Python 脚本文件 'direct-poisoning.py'。

2. Tool Shadowing (shadowing.py)

{
  "server name": "Demo",
  "command": "python",
  "args": ["shadowing.py"]
}

参数注释:

  • 配置与 Direct Poisoning 类似,只需将 'args' 中的脚本文件替换为 'shadowing.py'。

3. WhatsApp Takeover (whatsapp-takeover.py)

{
  "server name": "Random Facts MCP Server",
  "command": "python",
  "args": ["whatsapp-takeover.py"]
}

参数注释:

  • 'server name': 初始服务器名称为 "Random Facts MCP Server",在 'whatsapp-takeover.py' 中定义。脚本运行时可能会动态更新服务器名称为 "Updated MCP Server"。
  • 'command' 和 'args': 配置方式与前述示例相同,脚本文件为 'whatsapp-takeover.py'。

基本使用方法

  1. 启动服务器: 在终端中运行选定的服务器脚本,保持服务器运行状态。
  2. 配置 MCP 客户端: 将上述相应的服务器配置 JSON 添加到您的 MCP 客户端配置中,确保客户端能够连接到正在运行的实验性 MCP 服务器。
  3. 在客户端中触发攻击: 根据 'README.md' 和代码中的描述,在 MCP 客户端中调用服务器提供的工具(例如 'add', 'get_fact_of_the_day'),观察客户端行为是否受到攻击影响,例如是否泄露了敏感信息,或者工具行为是否被篡改。
  4. 分析攻击效果: 仔细分析客户端的输出和行为,理解工具投毒和影子攻击的原理和危害。

实验注意事项:

  • 这些实验性服务器旨在演示安全漏洞,功能较为简化,可能不包含完整的 MCP 协议实现细节。
  • 请务必在安全可控的环境下进行实验,避免对真实系统造成任何损害。
  • 详细的攻击原理和分析请参考仓库 'README.md' 中提供的博客文章链接。

信息

分类

AI与计算