MCP安全研究
探索模型上下文协议(MCP)工具使用的研究项目 以及相关的LLM安全攻击, 工具中毒和数据泄露。
______________________________________________________________________
这个项目是什么?
该项目研究了人工智能模型如何与外部工具交互 通过MCP,以及攻击者如何利用该连接。 所有攻击都在克劳德(Anthropic)身上进行了测试,使用了 Claude.ai聊天界面和通过Python的Anthropic API。
______________________________________________________________________
文件
| 文件 | 描述 |
|---|---|
1_MCP_Summary.pdf | MCP是什么以及LLM如何使用工具 |
2_Hands_On_Examples.pdf | 在Claude上测试了3次攻击交互,并附有截图 |
2_Hands_On_Examples.md | 带有嵌入式代码的markdown格式的相同示例 |
3_Attack_Summary.pdf | 什么是工具中毒,为什么它是危险的 |
4_Attack_Dataset.csv | 5个带有提示、目标和类别的攻击条目 |
5_Final_Report.pdf | 模式、有效性排名和防御 |
______________________________________________________________________
代码
所有Python脚本都在 /examples 文件夹:
| 脚本 | 攻击类型 | 它的作用 |
|---|---|---|
prompt_injection.py | 提示注入 | 发送恶意提示以覆盖包含隐藏秘密的系统提示 |
tool_poisoning.py | 工具中毒 | 注册delete_logs MCP工具并发送破坏性提示以触发它 |
data_exfiltration.py | 数据过滤 | 注册get_system_config MCP工具并尝试检索敏感文件 |
注意:脚本需要有效的Anthropic API密钥才能运行。 替换 "your_api_key" 在每个文件中使用您的实际密钥。______________________________________________________________________
涵盖的攻击类别
- 提示注入 --欺骗LLM忽略其指令
- 工具中毒 --在MCP工具描述中隐藏恶意指令
- 数据渗漏 --滥用工具调用检索敏感数据
______________________________________________________________________
主要发现
- 这三次攻击都被克劳德内置的安全护栏挡住了
- 工具中毒是最危险的——隐藏在元数据中,用户看不见
- 数据泄露最难检测——伪装成合法请求
- 没有单一的防御是足够的,需要一种分层的方法
______________________________________________________________________
防御
- 允许批准MCP工具,并在注册时验证描述
- 在执行破坏性行动之前需要人工批准
- 应用最小权限——工具只访问他们需要的内容
- 对输入和输出进行消毒,以捕捉注射模式
- 监控工具调用异常或未经授权的行为
______________________________________________________________________
使用的工具
- Claude.ai(聊天界面测试)
- 人类API(基于Python的测试)
- VS代码(Python开发)
- Python库:
anthropic,json
