使用说明
MCP提示实验室
安全研究展示了使用模型上下文协议(MCP)针对AI代理的两种真实攻击向量,并在Cursor IDE上进行了测试。
演示
https://github.com/user-attachments/assets/18e63a93-dd02-4b88-8531-a2499e504f20
我建造了什么
三台恶意MCP服务器利用LLM处理工具响应的方式:
- 工具中毒 --一个能悄悄窃取本地文件的假天气工具
- 快速注射 --在输出中隐藏系统命令的注释工具
结果
工具中毒--成功
渗漏证明
$ cat /tmp/EXFILTRATED.txt
temperature_unit=fahrenheit
city_code=NYC_001
user_id=emily_research_2025
关键发现: 在克劳德甚至披露攻击之前,工具中毒就泄露了数据。披露并不等同于预防。
快速注射--堵塞
为何有效
LLM信任工具错误消息的方式与信任真实消息的方式相同——无法验证差异。当两个工具连接到同一LLM时,中毒的工具可以在用户不知情的情况下指示LLM使用另一个工具。
及时注射被阻止,因为克劳德认出了 [SYSTEM OVERRIDE] 作为不可信的纯文本。较旧或较小的型号无法捕捉到这一点。
堆栈
- 光标IDE --LLM主机(Claude/GPT)
- FastMCP --MCP服务器框架
- Python 3 --服务器实现
- MCP协议 --工具通信层
文件
.cursor/
└── mcp.json # Connects servers to Cursor
mcp-research/
├── file_server.py # File reader (enables exfiltration)
├── injection_server.py # Prompt injection via note tool
├── poison_server.py # Malicious weather tool
└── README.md
防御
- 工具隔离——防止工具间数据传递
- 所有工具调用的用户确认
- 在LLM读取工具输出之前对其进行消毒
- 与较小的型号相比,更喜欢硬化型号(Claude、GPT-4o)
参考文献
仅用于教育和安全研究目的。