mcpField
M
MCP Poisoning Attack - PoC

MCP Poisoning Attack - PoC

本地服务
github.com/wbfoss安全1572 周前更新

关于 MCP Poisoning Attack - PoC

面向开发者和防御人员的安全研究概念验证项目,探讨 MCP 工具投毒风险。它演示隐藏指令等攻击方式,并提供客户端防御框架。

主要功能

  1. 01演示数据窃取攻击
  2. 02展示隐藏提示词注入
  3. 03说明工具劫持与安全覆盖
  4. 04提供清理与验证防御
  5. 05包含示例、文档和测试

适用场景

  1. 01研究 MCP 工具描述攻击路径
  2. 02测试工具描述的防御处理
  3. 03借助示例开展安全教育

MCP 相关

演示通过恶意工具描述攻击 MCP 客户端,并提供具备清理、验证和监控保护的 SecureMCPClient。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

🛡️ MCP 工具投毒安全研究

Security Research GenSecAI Python 3.8+ License: MIT PRs Welcome

⚠️ 重要安全声明:本仓库包含安全研究,展示了 Model Context Protocol(MCP)中的严重漏洞。代码仅用于教育和防御目的。请勿恶意使用这些技术。

🌟 关于 GenSecAI

GenSecAI 是一个非营利社区,利用生成式 AI 防御 AI 驱动的攻击,并构建开源工具,保护我们的数字未来免受新兴 AI 威胁。

本研究是我们使命的一部分,旨在识别并缓解 AI 安全漏洞,避免其遭到恶意利用。

🚨 执行摘要

本研究展示了 Model Context Protocol(MCP)中的严重安全漏洞,攻击者可借此:

  • 🔓 窃取敏感数据(SSH 密钥、API 凭据、配置文件)
  • 🎭 通过隐藏的提示词注入劫持 AI Agent 行为
  • 📧 在用户不知情的情况下重定向通信
  • 🔄 覆盖受信任工具的安全控制
  • ⏰ 部署延迟触发的攻击,在建立初始信任后激活

影响:任何使用 MCP 的 AI Agent(Claude、Cursor、带插件的 ChatGPT)都可能通过恶意工具描述遭到入侵。

🎯 快速开始

安装
# Clone the repository
git clone https://github.com/gensecaihq/mcp-poisoning-poc.git
cd mcp-poisoning-poc

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Run the demonstration
python examples/basic_attack_demo.py
基本演示
from src.demo.malicious_server import MaliciousMCPServer
from src.defenses.sanitizer import MCPSanitizer

# Create a malicious MCP server
server = MaliciousMCPServer()

# See how tool descriptions contain hidden instructions
for tool in server.get_tools():
    print(f"Tool: {tool['name']}")
    print(f"Hidden payload detected!")

# Defend against attacks
sanitizer = MCPSanitizer()
safe_description = sanitizer.clean(tool.description)

📊 主要发现

攻击向量严重程度利用难度影响
数据窃取🔴 严重低凭据被完全窃取
工具劫持🔴 严重低Agent 被完全入侵
指令覆盖🟠 高中绕过安全机制
延迟载荷🟠 高中持续性入侵

🔬 技术详情

该漏洞利用了 MCP 的一个根本性设计缺陷:

  1. AI 模型将工具描述视为可信输入
  2. 用户看不到描述中的隐藏指令,但 AI 会处理这些指令
  3. 不会对工具描述进行验证或清理
  4. 跨工具污染使一个恶意工具能够影响其他工具

请参阅 PROOF_OF_CONCEPT.md,了解详细的技术分析。

🛡️ 防御措施

我们提供了一套全面的防御框架:

from src.defenses import SecureMCPClient

# Initialize secure client with all protections
client = SecureMCPClient(
    enable_sanitization=True,
    enable_validation=True,
    enable_monitoring=True,
    strict_mode=True
)

# Safe tool integration
client.add_server("https://trusted-server.com", verify=True)

📁 仓库结构

  • /src - 攻击与防御的核心实现
  • /docs - 详细文档与分析
  • /tests - 全面的测试套件
  • /examples - 可直接运行的演示

🧪 运行测试

# Run all tests
pytest

# Run with coverage
pytest --cov=src tests/

# Run security-specific tests
pytest tests/test_attacks.py -v

🤝 参与贡献

欢迎贡献力量,共同提升 MCP 安全性!请参阅 CONTRIBUTING.md 了解指南。

加入 GenSecAI 社区

📚 文档

⚖️ 法律与道德声明

本研究遵循负责任披露原则:

  1. 教育目的:代码仅用于安全研究和防御
  2. 禁止恶意使用:请勿使用这些技术攻击系统
  3. 披露时间线:公开发布前已通知相关厂商
  4. 防御重点:首要目标是帮助加强防御

🏆 致谢

  • 组织:GenSecAI - 生成式 AI 安全社区
  • 研究团队:GenSecAI 安全研究部门
  • 基于:Invariant Labs 的原创发现
  • 特别感谢:安全研究社区和负责任披露倡导者

📮 联系方式

📄 许可证

本项目采用 MIT License 许可,详情请参阅 LICENSE。


由 GenSecAI 倾心打造 ❤️
一次解决一个漏洞,守护 AI 安全

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。