|
1 | | -# MCP安全检查清单:AI工具生态系统安全指南 |
| 1 | +# MCP 安全检查清单:AI 工具生态系统安全指南 |
2 | 2 |
|
3 | 3 | [](https://twitter.com/slowmist_team) |
4 | 4 |
|
5 | 5 | [English Version](./README.md), [中文版本](./README_CN.md) |
6 | 6 |
|
7 | 7 | ## 作者信息 |
8 | 8 | 本安全检查清单由 [@SlowMist_Team](https://twitter.com/slowmist_team) 编写并维护。 |
9 | | -> 慢雾科技作为全球领先的区块链生态威胁情报公司,旨在帮助区块链生态与AI生态相融合的过程中拥有更加深度的安全防护能力及保护用户拥有更高的隐私性。 |
| 9 | +> 慢雾科技作为全球领先的区块链生态威胁情报公司,旨在帮助区块链生态与 AI 生态相融合的过程中拥有更加深度的安全防护能力及保护用户拥有更高的隐私性。 |
10 | 10 |
|
11 | 11 | 感谢 [FENZ.AI](https://fenz.ai/) 倾力相助 |
12 | | -> FENZ.AI以未来科技重塑AI安全审计。从MCP攻击检测到AI忠诚度评估,Fenz正在构建AI时代的基础设施——“超级智能,始于超强安全”。 |
| 12 | +> FENZ.AI 以未来科技重塑 AI 安全审计。从 MCP 攻击检测到 AI 忠诚度评估,Fenz 正在构建AI时代的基础设施——“超级智能,始于超强安全”。 |
13 | 13 |
|
14 | 14 | ## 📚 目录 |
15 | 15 |
|
|
24 | 24 |
|
25 | 25 | ## 概要 |
26 | 26 |
|
27 | | -随着大模型的迅猛发展,各种新的AI工具也在不断涌现,当下代表性的MCP(Model Context Protocol)标准实现的工具正逐渐成为连接大语言模型(LLM)与外部工具、数据源之间的关键桥梁。自 2024 年底发布以来,MCP 已被广泛应用于 Claude Desktop、Cursor 等主流 AI 应用中,MCP Server 的各种商店也在不断出现,展现出强大的生态扩展能力。 |
| 27 | +随着大模型的迅猛发展,各种新的AI工具也在不断涌现,当下代表性的 MCP(Model Context Protocol)标准实现的工具正逐渐成为连接大语言模型(LLM)与外部工具、数据源之间的关键桥梁。自 2024 年底发布以来,MCP 已被广泛应用于 Claude Desktop、Cursor 等主流 AI 应用中,MCP Server 的各种商店也在不断出现,展现出强大的生态扩展能力。 |
28 | 28 |
|
29 | | -然而,MCP 的快速普及也带来了新的安全挑战。当前MCP架构中,系统由 **Host(本地运行的 AI 应用环境)**、**Client(负责与Server通信与工具调用的组件)** 以及 **Server(MCP 插件所对应的服务端)** 三部分构成。用户通过 Host 与 AI 交互,Client 将用户请求解析并转发至 MCP Server,执行工具调用或资源访问。在多实例、多组件协同运行的场景下,该架构暴露出一系列安全风险,尤其在涉及加密货币交易或 LLM 自定义插件适配等敏感场景中,风险更为突出,需要适当的安全措施来管理。 |
| 29 | +然而,MCP 的快速普及也带来了新的安全挑战。当前 MCP 架构中,系统由 **Host(本地运行的 AI 应用环境)**、**Client(负责与Server通信与工具调用的组件)** 以及 **Server(MCP 插件所对应的服务端)** 三部分构成。用户通过 Host 与 AI 交互,Client 将用户请求解析并转发至 MCP Server,执行工具调用或资源访问。在多实例、多组件协同运行的场景下,该架构暴露出一系列安全风险,尤其在涉及加密货币交易或 LLM 自定义插件适配等敏感场景中,风险更为突出,需要适当的安全措施来管理。 |
30 | 30 |
|
31 | 31 | 在此背景下,**制定和遵循一套全面的 MCP 安全检查清单显得尤为重要**。本清单涵盖了从用户交互界面、客户端组件、服务插件,到多 MCP 协作机制及特定领域(如加密货币场景)的安全要点,旨在帮助开发者系统性地识别潜在风险并及时加以防范。通过落实这些安全措施,可有效提升 MCP 系统的整体稳定性与可控性,确保 AI 应用在快速发展的同时,安全性也同步得到保障。 |
32 | 32 |
|
|
46 | 46 | - ![中][medium_img] 表示强烈推荐项目,但在特殊情况下可以省略,省略可能会对安全性产生负面影响。 |
47 | 47 | - ![高][high_img] 表示在任何情况下都不能省略的项目,移除这些元素可能导致系统故障或安全漏洞。 |
48 | 48 |
|
49 | | -## MCP Server(MCP 插件)安全 |
| 49 | +## MCP Server (MCP 插件)安全 |
50 | 50 |
|
51 | | -> **说明:** MCP服务是提供工具、资源和功能供AI调用的外部服务。即是目前MCP插件的形态。一般包含 Resources Tools Prompts |
| 51 | +> **说明:** MCP 服务是提供工具、资源和功能供 AI 调用的外部服务。即是目前 MCP 插件的形态。一般包含 Resources Tools Prompts |
52 | 52 |
|
53 | | -### API安全 |
| 53 | +### API 安全 |
54 | 54 |
|
55 | | -- [ ] **输入验证:** ![高][high_img] 严格验证所有API输入,防止注入攻击和非法参数。 |
56 | | -- [ ] **API速率限制:** ![中][medium_img] 实施API调用速率限制,防止滥用和攻击。 |
57 | | -- [ ] **输出编码:** ![中][medium_img] 正确编码API输出。 |
| 55 | +- [ ] **输入验证:** ![高][high_img] 严格验证所有 API 输入,防止注入攻击和非法参数。 |
| 56 | +- [ ] **API速率限制:** ![中][medium_img] 实施 API 调用速率限制,防止滥用和攻击。 |
| 57 | +- [ ] **输出编码:** ![中][medium_img] 正确编码 API 输出。 |
58 | 58 |
|
59 | 59 | ### Server 身份验证与授权 |
60 | 60 |
|
61 | 61 | - [ ] **访问控制:** ![高][high_img] 实施基于角色的访问控制,限制资源访问,实施最小权限原则。 |
62 | 62 | - [ ] **凭证管理:** ![高][high_img] 安全管理和存储服务凭证,避免硬编码,使用密钥管理服务。 |
63 | 63 | - [ ] **外部服务认证:** ![高][high_img] 使用安全方式向第三方服务认证。 |
64 | 64 | - [ ] **最小权限:** ![中][medium_img] 服务进程以最小必要权限运行,减少潜在攻击面和提权风险。 |
65 | | -- [ ] **API密钥轮换:** ![中][medium_img] 定期自动轮换API密钥和服务凭证,限制密钥有效期。 |
66 | | -- [ ] **服务身份验证:** ![中][medium_img] 提供Tools验证服务身份的机制,方便客户端验证和安全使用。 |
| 65 | +- [ ] **API密钥轮换:** ![中][medium_img] 定期自动轮换 API 密钥和服务凭证,限制密钥有效期。 |
| 66 | +- [ ] **服务身份验证:** ![中][medium_img] 提供 Tools 验证服务身份的机制,方便客户端验证和安全使用。 |
67 | 67 |
|
68 | 68 | ### 后台持久性控制 |
69 | 69 |
|
70 | | -- [ ] **生命周期管理:** ![高][high_img] 实施严格的MCP插件生命周期管理,与客户端同步。 |
71 | | -- [ ] **关闭清理:** ![高][high_img] 客户端关闭时强制清理所有MCP后台进程。 |
72 | | -- [ ] **健康检查机制:** ![中][medium_img] 定期检查MCP插件状态,识别异常持久性。 |
73 | | -- [ ] **后台活动监控:** ![中][medium_img] 监控和记录所有MCP后台活动。 |
| 70 | +- [ ] **生命周期管理:** ![高][high_img] 实施严格的 MCP 插件生命周期管理,与客户端同步。 |
| 71 | +- [ ] **关闭清理:** ![高][high_img] 客户端关闭时强制清理所有 MCP 后台进程。 |
| 72 | +- [ ] **健康检查机制:** ![中][medium_img] 定期检查 MCP 插件状态,识别异常持久性。 |
| 73 | +- [ ] **后台活动监控:** ![中][medium_img] 监控和记录所有 MCP 后台活动。 |
74 | 74 | - [ ] **活动限制:** ![中][medium_img] 限制MCP插件可在后台执行的操作类型和持续时间。 |
75 | 75 |
|
76 | 76 | ### 部署与运行时安全 |
|
105 | 105 |
|
106 | 106 | ### 调用环境隔离 |
107 | 107 |
|
108 | | -- [ ] **MCP间隔离:** ![高][high_img] 确保多个MCP服务之间的操作隔离。 |
109 | | -- [ ] **资源访问控制:** ![高][high_img] 为每个MCP服务分配明确的资源访问权限边界。 |
| 108 | +- [ ] **MCP间隔离:** ![高][high_img] 确保多个 MCP 服务之间的操作隔离。 |
| 109 | +- [ ] **资源访问控制:** ![高][high_img] 为每个 MCP 服务分配明确的资源访问权限边界。 |
110 | 110 | - [ ] **工具权限分离:** ![中][medium_img] 不同领域的工具使用不同的权限集。 |
111 | 111 |
|
112 | 112 | ### 平台兼容性与安全 |
113 | 113 |
|
114 | 114 | - [ ] **系统资源隔离:** ![高][high_img] 根据不同操作系统特性实施适当的资源隔离策略。 |
115 | | -- [ ] **跨平台兼容性测试:** ![中][medium_img] 测试MCP服务在不同操作系统和客户端上的安全行为一致性。 |
| 115 | +- [ ] **跨平台兼容性测试:** ![中][medium_img] 测试 MCP 服务在不同操作系统和客户端上的安全行为一致性。 |
116 | 116 | - [ ] **平台特定风险评估:** ![中][medium_img] 评估特定平台的独特安全风险和缓解措施。 |
117 | 117 | - [ ] **客户端差异处理:** ![中][medium_img] 确保安全控制能适应各种客户端实现的差异。 |
118 | 118 |
|
|
145 | 145 |
|
146 | 146 | **[⬆ 返回顶部](#-目录)** |
147 | 147 |
|
148 | | -## MCP客户端/MCP HOST安全 |
| 148 | +## MCP 客户端/MCP HOST 安全 |
149 | 149 |
|
150 | | -> **说明:** Host是运行AI应用程序和MCP客户端的环境,是终端用户与AI系统交互的入口点。如Claude桌面版、Cursor。Client是AI应用程序内部的组件,负责与MCP服务通信,处理上下文、工具调用和结果展示。一般情况下Client是默认集成在Host中的。 |
| 150 | +> **说明:** Host 是运行 AI 应用程序和 MCP 客户端的环境,是终端用户与 AI 系统交互的入口点。如 Claude Desktop、Cursor。Client 是 AI 应用程序内部的组件,负责与 MCP 服务通信,处理上下文、工具调用和结果展示。一般情况下 Client 是默认集成在 Host 中的。 |
151 | 151 |
|
152 | 152 | ### 用户交互安全 |
153 | 153 |
|
|
156 | 156 | - [ ] **权限请求透明:** ![高][high_img] 权限请求明确说明用途和范围,帮助用户做出明智决策,避免过度授权。 |
157 | 157 | - [ ] **操作可视化:** ![中][medium_img] 工具调用和数据访问对用户可见且可审核,提供详细的操作日志。 |
158 | 158 | - [ ] **信息透明度:** ![中][medium_img] 工具应该可以允许用户是否默认展示隐藏标签,如<SECRET>。这样保证用户看到的和实际生成与调用的上下文完整与一致,防止隐藏标签中存在恶意逻辑。 |
159 | | -- [ ] **状态反馈:** ![中][medium_img] 用户可清楚了解当前正在执行的MCP操作。 |
| 159 | +- [ ] **状态反馈:** ![中][medium_img] 用户可清楚了解当前正在执行的 MCP 操作。 |
160 | 160 |
|
161 | | -### AI控制与监控 |
| 161 | +### AI 控制与监控 |
162 | 162 |
|
163 | 163 | - [ ] **操作记录:** ![高][high_img] 记录所有重要AI操作及其结果。 |
164 | 164 | - [ ] **异常检测:** ![中][medium_img] 检测异常的工具调用模式或请求序列。 |
|
171 | 171 |
|
172 | 172 | ### 应用程序安全 |
173 | 173 |
|
174 | | -- [ ] **应用完整性:** ![高][high_img] 验证应用程序及MCP插件的完整性,防止篡改。 |
175 | | -- [ ] **更新验证:** ![中][medium_img] Host应用更新经过数字签名验证。 |
| 174 | +- [ ] **应用完整性:** ![高][high_img] 验证应用程序及 MCP 插件的完整性,防止篡改。 |
| 175 | +- [ ] **更新验证:** ![中][medium_img] Host 应用更新经过数字签名验证。 |
176 | 176 | - [ ] **应用程序沙箱:** ![低][low_img] 尽量在沙箱环境中运行应用,限制系统访问。 |
177 | 177 |
|
178 | 178 | ### 客户端身份验证与授权 |
179 | 179 |
|
180 | | -- [ ] **强制认证:** ![高][high_img] 在与任何重要MCP服务通信前强制执行认证,防止匿名访问。 |
181 | | -- [ ] **OAuth实现:** ![中][medium_img] 正确实现OAuth 2.1或更高版本流程,遵循最佳实践和安全标准。 |
182 | | -- [ ] **状态参数:** ![中][medium_img] 对于部分Web客户端实施状态参数防止CSRF攻击,每次请求使用唯一随机值。 |
| 180 | +- [ ] **强制认证:** ![高][high_img] 在与任何重要 MCP 服务通信前强制执行认证,防止匿名访问。 |
| 181 | +- [ ] **OAuth实现:** ![中][medium_img] 正确实现 OAuth 2.1 或更高版本流程,遵循最佳实践和安全标准。 |
| 182 | +- [ ] **状态参数:** ![中][medium_img] 对于部分 Web 客户端实施状态参数防止CSRF攻击,每次请求使用唯一随机值。 |
183 | 183 |
|
184 | | -### MCP Tools与Servers管理 |
| 184 | +### MCP Tools 与 Servers 管理 |
185 | 185 |
|
186 | 186 | - [ ] **MCP工具验证:** ![高][high_img] 验证注册工具的真实性和完整性。 |
187 | | -- [ ] **安全更新:** ![高][high_img] MCP客户端定期检查并应用安全更新,验证更新后的工具是否包含恶意描述。 |
| 187 | +- [ ] **安全更新:** ![高][high_img] MCP 客户端定期检查并应用安全更新,验证更新后的工具是否包含恶意描述。 |
188 | 188 | - [ ] **函数名校验:** ![高][high_img] 注册工具前检查名称冲突和潜在恶意覆盖。 |
189 | | -- [ ] **恶意MCP检测:** ![高][high_img] 监控和识别潜在恶意MCP的行为模式。 |
| 189 | +- [ ] **恶意MCP检测:** ![高][high_img] 监控和识别潜在恶意 MCP 的行为模式。 |
190 | 190 | - [ ] **MCP工具命名控制:** ![中][medium_img] 采用命名空间或唯一标识符,防止命名冲突。 |
191 | | -- [ ] **服务目录:** ![中][medium_img] 维护可信MCP服务和工具的授权目录。 |
| 191 | +- [ ] **服务目录:** ![中][medium_img] 维护可信 MCP 服务和工具的授权目录。 |
192 | 192 | - [ ] **冲突解决:** ![中][medium_img] 存在明确的规则解决同名工具冲突。 |
193 | 193 | - [ ] **域隔离:** ![中][medium_img] 不同域的工具彼此隔离,防止交叉影响。 |
194 | 194 | - [ ] **优先级机制:** ![中][medium_img] 建立明确的函数优先级规则,避免恶意覆盖。 |
195 | 195 | - [ ] **版本控制:** ![中][medium_img] 对函数和工具实施版本控制,检测变更。 |
196 | 196 | - [ ] **工具注册与注销机制:** ![中][medium_img] 明确工具注册和注销的流程,防止遗留工具的安全风险。 |
197 | | -- [ ] **冲突检测机制:** ![中][medium_img] 检测并解决多MCP环境中的函数和资源冲突。 |
| 197 | +- [ ] **冲突检测机制:** ![中][medium_img] 检测并解决多 MCP 环境中的函数和资源冲突。 |
198 | 198 | - [ ] **工具分类:** ![低][low_img] 根据敏感度和风险级别对工具进行分类。 |
199 | 199 |
|
200 | 200 | ### 提示词安全 |
|
211 | 211 |
|
212 | 212 | ### 日志与审计 |
213 | 213 |
|
214 | | -- [ ] **客户端日志记录:** ![高][high_img] 记录所有与MCP服务的交互、工具调用和授权活动。 |
| 214 | +- [ ] **客户端日志记录:** ![高][high_img] 记录所有与 MCP 服务的交互、工具调用和授权活动。 |
215 | 215 | - [ ] **安全事件记录:** ![高][high_img] 记录所有安全相关事件,包括授权失败。 |
216 | 216 | - [ ] **异常告警:** ![中][medium_img] 检测并告警异常活动模式。 |
217 | 217 |
|
218 | 218 |
|
219 | 219 | ### Server 验证与通信安全 |
220 | 220 |
|
221 | | -- [ ] **Server 身份验证:** ![高][high_img] 验证MCP Server身份,防止连接到恶意Server,实施证书固定。 |
222 | | -- [ ] **证书验证:** ![高][high_img] 对远程Server严格验证TLS证书,防止中间人攻击,检查证书链完整性。 |
223 | | -- [ ] **通信加密:** ![高][high_img] 所有Client-Server通信使用TLS 1.2+加密,禁用弱加密套件。 |
224 | | -- [ ] **安全协议配置:** ![中][medium_img] 配置安全的TLS参数,定期审计和更新加密算法和协议。 |
| 221 | +- [ ] **Server 身份验证:** ![高][high_img] 验证 MCP Server 身份,防止连接到恶意 Server ,实施证书固定。 |
| 222 | +- [ ] **证书验证:** ![高][high_img] 对远程 Server 严格验证 TLS 证书,防止中间人攻击,检查证书链完整性。 |
| 223 | +- [ ] **通信加密:** ![高][high_img] 所有 Client-Server 通信使用 TLS 1.2+ 加密,禁用弱加密套件。 |
| 224 | +- [ ] **安全协议配置:** ![中][medium_img] 配置安全的 TLS 参数,定期审计和更新加密算法和协议。 |
225 | 225 |
|
226 | | -### 权限Token存储与管理 |
| 226 | +### 权限 Token 存储与管理 |
227 | 227 |
|
228 | | -- [ ] **权限范围限制:** ![高][high_img] 严格限制token的权限范围,实施最小权限原则。 |
| 228 | +- [ ] **权限范围限制:** ![高][high_img] 严格限制 token 的权限范围,实施最小权限原则。 |
229 | 229 |
|
230 | 230 | ### 自动批准(autoApprove)控制 |
231 | 231 |
|
|
245 | 245 |
|
246 | 246 | **[⬆ 返回顶部](#-目录)** |
247 | 247 |
|
248 | | -## MCP在不同LLM上的适配和调用安全 |
249 | | -> **说明:** 在实际使用过程中可以发现不同的LLM后端对MCP的调用的优先级和执行逻辑都会存在差异,所以我们不只需要关注MCP的实现也需要关注LLM与MCP之间的组合。 |
| 248 | +## MCP 在不同 LLM 上的适配和调用安全 |
| 249 | +> **说明:** 在实际使用过程中可以发现不同的 LLM 后端对 MCP 的调用的优先级和执行逻辑都会存在差异,所以我们不只需要关注MCP的实现也需要关注 LLM 与 MCP 之间的组合。 |
250 | 250 |
|
251 | | -### LLM安全执行 |
| 251 | +### LLM 安全执行 |
252 | 252 |
|
253 | | -- [ ] **优先函数执行:** ![高][high_img] 确保LLM可以优先执行正确插件的函数。 |
254 | | -- [ ] **恶意提示防护:** ![高][high_img] LLM能在提示恶意场景的情况下对注入的助记词要求的行为进行识别与防护。 |
255 | | -- [ ] **安全调用:** ![高][high_img] LLM能正确安全地调用相关MCP功能。 |
| 253 | +- [ ] **优先函数执行:** ![高][high_img] 确保 LLM 可以优先执行正确插件的函数。 |
| 254 | +- [ ] **恶意提示防护:** ![高][high_img] LLM 能在提示恶意场景的情况下对注入的助记词要求的行为进行识别与防护。 |
| 255 | +- [ ] **安全调用:** ![高][high_img] LLM 能正确安全地调用相关MCP功能。 |
256 | 256 | - [ ] **敏感信息保护:** ![高][high_img] 防止敏感信息泄露。 |
257 | 257 |
|
258 | 258 | ### 多模态安全 |
|
261 | 261 |
|
262 | 262 | **[⬆ 返回顶部](#-目录)** |
263 | 263 |
|
264 | | -## 多MCP场景安全 |
265 | | -> **说明:** 用户正常使用MCP时经常会同时启用多个MCP Sever,由于目前还没有官方商店对MCP插件进行审计,用户很可能会安装到恶意MCP,这里需要非常注意,引入了恶意MCP会对整体使用安全带来极大隐患。 |
| 264 | +## 多 MCP 场景安全 |
| 265 | +> **说明:** 用户正常使用MCP时经常会同时启用多个 MCP Sever,由于目前还没有官方商店对MCP插件进行审计,用户很可能会安装到恶意 MCP,这里需要非常注意,引入了恶意MCP会对整体使用安全带来极大隐患。 |
266 | 266 |
|
267 | | -- [ ] **多MCP环境安全:** ![高][high_img] 确保多MCP环境的整体安全性,定期对安装的MCP进行扫描检查。 |
| 267 | +- [ ] **多MCP环境安全:** ![高][high_img] 确保多 MCP 环境的整体安全性,定期对安装的MCP进行扫描检查。 |
268 | 268 | - [ ] **函数优先级劫持防护:** ![高][high_img] 检查可能的恶意提示词预设,防止函数优先级被恶意劫持。 |
269 | | -- [ ] **跨MCP函数调用控制:** ![高][high_img] 安全控制跨MCP函数调用,防止恶意MCP返回恶意提示词去调用其他MCP执行敏感操作。 |
| 269 | +- [ ] **跨MCP函数调用控制:** ![高][high_img] 安全控制跨 MCP 函数调用,防止恶意 MCP 返回恶意提示词去调用其他 MCP 执行敏感操作。 |
270 | 270 |
|
271 | 271 | **[⬆ 返回顶部](#-目录)** |
272 | 272 |
|
273 | | -## 加密货币相关 MCP的特有安全点 |
274 | | -> **说明:** 当前越来越多加密货币相关的MCP出现,其中很多拥有管理加密货币钱包这一高风险操作的功能,所以这里着重为加密货币相关MCP提出一些建议。 |
| 273 | +## 加密货币相关 MCP 的特有安全点 |
| 274 | +> **说明:** 当前越来越多加密货币相关的 MCP 出现,其中很多拥有管理加密货币钱包这一高风险操作的功能,所以这里着重为加密货币相关 MCP 提出一些建议。 |
275 | 275 |
|
276 | | -- [ ] **私钥保护:** ![高][high_img] 加强私钥的安全保护措施,如Scrypt。 |
| 276 | +- [ ] **私钥保护:** ![高][high_img] 加强私钥的安全保护措施,如 Scrypt。 |
277 | 277 | - [ ] **钱包生成安全:** ![高][high_img] 助记词或钱包生成过程的安全性保障。 |
278 | 278 | - [ ] **钱包信息隐私:** ![高][high_img] 保护钱包信息隐私,将钱包信息请求第三方接口时候需要做好过滤。 |
279 | 279 | - [ ] **转账信息确认:** ![高][high_img] 链上或交易所转账签名的信息需要完整展示并确认。 |
280 | | -- [ ] **资金操作验证:** ![高][high_img] 对重要资金操作需二次验证,如Google Authenticator。 |
| 280 | +- [ ] **资金操作验证:** ![高][high_img] 对重要资金操作需二次验证,如 Google Authenticator。 |
281 | 281 | - [ ] **本地模型隐私保护:** ![中][medium_img] 使用本地大模型保护隐私数据,防止第三方大模型厂商获取到你的钱包信息等敏感信息。 |
282 | 282 | - [ ] **传统钱包兼容:** ![中][medium_img] 对传统钱包的安全兼容,如支持用传统钱包进行签名操作等。 |
283 | 283 |
|
|
0 commit comments