最终版标准轨道
| 字段 | 值 |
|---|---|
| SEP | 1024 |
| 标题 | 本地服务器安装的 MCP 客户端安全要求 |
| 状态 | 最终版 |
| 类型 | 标准轨道 |
| 创建日期 | 2025-07-22 |
| 作者 | Den Delimarsky |
| 赞助方 | 无 |
| PR | #1024 |
摘要
本 SEP 解决了支持一键安装本地 MCP 服务器的 MCP 客户端实现中的关键安全漏洞。当前的 MCP 规范缺乏针对客户端安装流程的明确安全要求,使得恶意行为者可以通过通过链接或社会工程学传播精心制作的 MCP 服务器配置,在用户系统上执行任意命令。 本提案为 MCP 客户端建立了一种最佳实践,要求在执行任何本地服务器安装命令之前获得明确的用户同意,并实现完全的命令透明度。动机
现有的 MCP 规范未解决与简化(“一键”)本地服务器配置相关的客户端安全问题。实现这些配置体验的当前 MCP 客户端创造了重大的攻击向量:- 静默命令执行:MCP 客户端在通过一键流程安装本地服务器时,可以在未经用户审查或同意的情况下自动执行嵌入的命令。
- 缺乏可见性:用户无法洞察哪些命令正在其系统上执行,从而创造了数据窃取、系统受损和权限提升的机会。
- 社会工程学漏洞:用户习惯于执行标记为“MCP 服务器”的命令而未进行适当审查,使他们容易受到恶意配置的攻击。
- 任意代码执行:攻击者可以将有害命令嵌入 MCP 服务器配置中,并通过合法渠道(仓库、文档、社交媒体)分发它们。
规范
客户端安全要求
支持一键本地 MCP 服务器配置的 MCP 客户端 必须 实施以下安全控制:配置前同意
在执行任何命令来安装或配置本地 MCP 服务器之前,MCP 客户端 必须:-
显示一个清晰的同意对话框,展示:
- 将要执行的确切命令,不得截断
- 所有参数和参量
- 明确的警告,说明此操作可能具有潜在危险
- 要求用户通过肯定操作(按钮点击、复选框等)进行明确批准
- 为用户提供取消安装的选项
- 如果同意被拒绝或未提供,则不得继续安装
理由
设计决策
强制同意对话框:明确同意对话框的要求平衡了安全性和可用性。虽然这增加了 MCP 服务器配置过程的摩擦,但它防止了静默命令执行导致的潜在泄露。向后兼容性
本 SEP 为 MCP 客户端实现引入了新的 要求,但不改变核心 MCP 协议或通信格式。 影响评估:- 低影响:现有的 MCP 服务器和核心协议保持不变
- 需要客户端实现:MCP 客户端必须更新其本地服务器安装流程以符合新的安全要求
- 用户体验变更:用户将在以前不存在的地方看到同意对话框
- MCP 客户端可以在新版本中实施这些更改,而不会破坏现有功能
- 现有已安装的 MCP 服务器继续正常工作
- 只有新的安装流程需要同意机制
参考实现
不适用安全影响
安全益处
本 SEP 直接解决了:- 任意代码执行:防止恶意命令的静默执行
- 社会工程学攻击:强制用户在执行前有意识地审查命令
- 供应链攻击:创建对 MCP 服务器安装命令的可见性
- 权限提升:用户可以识别并拒绝请求提升权限的命令
剩余风险
即使有了这些控制,风险仍然存在:- 用户覆盖:用户可能会无视警告批准恶意命令
- 复杂混淆:高级攻击者可能会制作看起来合法的命令
- 实现缺口:客户端可能会错误地实现控制
风险缓解
这些剩余风险通过以下方式解决:- 同意对话框中清晰的警告语言
- 建议额外安全层(沙箱、签名)
- 持续的安全研究和社区意识