MCP安全检查清单:AI工具生态系统安全指南

随着人工智能工具的迅速普及,确保其安全变得至关重要。本安全检查清单旨在帮助开发者识别和减轻与模型上下文协议(MCP)相关的潜在风险,MCP已成为连接大型语言模型(LLM)与外部工具和数据源的关键桥梁。

背景

本安全检查清单由@SlowMist_Team编写和维护,旨在提高区块链和人工智能生态系统的安全性。感谢FENZ.AI对本清单的宝贵贡献。

概要

自2024年末发布以来,MCP已被广泛应用于Claude Desktop、Cursor等主流AI应用中。然而,MCP的快速普及也带来了新的安全挑战。当前的MCP架构由Host(本地运行的AI应用环境)、Client(负责与Server通信与工具调用的组件)以及Server(MCP插件所对应的服务端)三部分构成。用户通过Host与AI交互,Client将用户请求解析并转发至MCP Server,执行工具调用或资源访问。在多实例、多组件协同运行的场景下,该架构暴露出一系列安全风险,尤其在涉及加密货币交易或LLM自定义插件适配等敏感场景中,风险更为突出,需要适当的安全措施来管理。

因此,制定并遵循全面的MCP安全检查清单至关重要。本清单涵盖用户交互界面、客户端组件、服务插件、多MCP协作机制和特定领域(如加密货币场景)的安全要点,旨在帮助开发者系统地识别潜在风险并及时加以防范。通过落实这些安全措施,可有效提升MCP系统的整体稳定性与可控性,确保AI应用在快速发展的同时,安全性也同步得到保障。

如何使用

本检查表基于在对MCP项目审计中遇到的可能风险点,旨在帮助开发者确保MCP实现的安全性。我们使用3个级别的优先级标识项目的重要性:

  • 🟢️ 表示推荐项目,但在特定情况下可以省略。
  • 🔶 表示强烈推荐项目,但在特殊情况下可以省略,省略可能会对安全性产生负面影响。
  • 🟥️ 表示在任何情况下都不能省略的项目,移除这些元素可能导致系统故障或安全漏洞。

MCP服务器(MCP插件)安全

MCP服务是提供工具、资源和功能供AI调用的外部服务。它通常包含资源、工具和提示。以下是确保MCP服务器安全的注意事项:

API安全

  • 输入验证:🟥️ 严格验证所有API输入,防止注入攻击和非法参数。这包括验证数据类型、长度和格式,并对输入进行清理和转义。输入验证是防止恶意用户利用API漏洞的关键措施。例如,如果一个API接受一个字符串作为文件名,而没有进行适当的验证,攻击者可能通过输入包含特殊字符的字符串来执行任意代码。因此,必须对所有输入进行严格的验证,包括数据类型验证、长度限制、格式检查以及特殊字符过滤等。
  • API速率限制:🔶 实施API调用速率限制,防止滥用和攻击。这可以防止恶意用户通过发送大量请求来压垮服务器。API速率限制是一种常用的防御手段,可以有效防止DoS攻击和暴力破解。通过限制每个用户或IP地址在一定时间内的API调用次数,可以防止恶意用户通过发送大量请求来耗尽服务器资源。速率限制应该根据API的功能和预期使用情况进行调整,以避免影响正常用户的使用。
  • 输出编码:🔶 正确编码API输出,以防止跨站脚本(XSS)攻击。这包括对HTML、JavaScript和URL等输出进行编码。XSS攻击是一种常见的Web安全漏洞,攻击者通过在网页中注入恶意脚本来窃取用户信息或控制用户浏览器。为了防止XSS攻击,必须对所有API输出进行适当的编码,以确保恶意脚本不会被执行。例如,HTML编码可以将特殊字符转换为HTML实体,从而防止浏览器将其解析为HTML代码。JavaScript编码可以防止恶意脚本在JavaScript环境中执行。

服务器身份验证和授权

  • 访问控制:🟥️ 实施基于角色的访问控制,限制资源访问,实施最小权限原则。只有经过授权的用户才能访问特定资源。访问控制是保护服务器资源的关键措施。通过实施基于角色的访问控制,可以限制用户对资源的访问权限,确保只有经过授权的用户才能访问特定资源。最小权限原则要求用户只拥有完成其工作所需的最小权限,从而减少潜在的安全风险。
  • 凭证管理:🟥️ 安全管理和存储服务凭证,避免硬编码,使用密钥管理服务。这包括使用加密来存储凭证,并定期轮换凭证。服务凭证是访问服务器资源的关键凭证,必须进行安全管理和存储。避免将凭证硬编码在代码中,而是应该使用密钥管理服务来安全存储和管理凭证。凭证应该使用加密算法进行加密,并定期进行轮换,以减少凭证泄露的风险。
  • 外部服务认证:🟥️ 使用安全方式向第三方服务认证。这包括使用OAuth 2.0或SAML等安全协议。与第三方服务进行认证时,必须使用安全的认证协议,例如OAuth 2.0或SAML。这些协议可以确保认证过程的安全性和可靠性,防止恶意用户冒充合法用户访问第三方服务。
  • 最小权限:🔶 服务进程以最小必要权限运行,减少潜在攻击面和提权风险。这意味着服务应该只具有执行其功能所需的权限。最小权限原则不仅适用于用户,也适用于服务进程。服务进程应该以最小必要权限运行,以减少潜在的攻击面和提权风险。例如,服务进程不应该以root用户运行,而是应该以一个具有有限权限的用户运行。
  • API密钥轮换:🔶 定期自动轮换API密钥和服务凭证,限制密钥有效期。这可以减少密钥泄露的风险。API密钥和服务凭证应该定期进行轮换,以减少密钥泄露的风险。轮换周期应该根据密钥的敏感程度和使用频率进行调整。自动化轮换可以减少人工操作的错误和延迟。
  • 服务身份验证:🔶 提供工具验证服务身份的机制,方便客户端验证和安全使用。这可以帮助客户端验证其正在与可信的服务进行通信。客户端需要验证其正在与可信的服务进行通信,以防止中间人攻击。服务应该提供一种机制,允许客户端验证其身份,例如使用数字证书或API密钥。

后台持久性控制

  • 生命周期管理:🟥️ 实施严格的MCP插件生命周期管理,与客户端同步。插件应该在不再需要时正确启动和停止。MCP插件的生命周期应该与客户端同步,确保插件在不再需要时正确启动和停止。这可以防止插件占用资源或执行恶意操作。
  • 关闭清理:🟥️ 客户端关闭时强制清理所有MCP后台进程。这可以防止恶意插件在客户端关闭后继续运行。客户端关闭时,应该强制清理所有MCP后台进程,以防止恶意插件在客户端关闭后继续运行。这可以通过注册关闭钩子或使用进程管理工具来实现。
  • 健康检查机制:🔶 定期检查MCP插件状态,识别异常持久性。这可以帮助识别运行不正常的插件。应该定期检查MCP插件的状态,以识别异常持久性。这可以通过监控插件的资源使用情况、日志和网络活动来实现。
  • 后台活动监控:🔶 监控和记录所有MCP后台活动。这可以帮助识别恶意活动。应该监控和记录所有MCP后台活动,以便于识别恶意活动。这可以通过使用日志记录工具和安全信息和事件管理(SIEM)系统来实现。
  • 活动限制:🔶 限制MCP插件可在后台执行的操作类型和持续时间。这可以减少恶意插件造成的损害。应该限制MCP插件可在后台执行的操作类型和持续时间,以减少恶意插件造成的损害。这可以通过使用访问控制列表(ACL)和资源配额来实现。

部署与运行时安全

  • 隔离环境:🟥️ 服务在隔离环境(容器、VM、沙箱)中运行,防止逃逸、防止东西向移动攻击。这可以防止恶意服务影响其他服务或系统。服务应该在隔离环境(例如容器、虚拟机或沙箱)中运行,以防止逃逸和东西向移动攻击。这可以防止恶意服务影响其他服务或系统。
  • 容器安全:🟥️ 使用强化的容器安全配置和非 root 用户运行,实施不可变基础设施,运行时保护。这可以提高容器的安全性。容器安全是保障服务安全的关键措施。应该使用强化的容器安全配置,例如使用非root用户运行容器、实施不可变基础设施和运行时保护。
  • 安全启动:🔶 验证服务启动过程的完整性,实施安全启动链和完整性检查。这可以防止恶意服务在启动时被注入。应该验证服务启动过程的完整性,以防止恶意服务在启动时被注入。这可以通过实施安全启动链和完整性检查来实现。
  • 环境变量安全:🔶 敏感环境变量受到保护,不在日志中泄露。这可以防止恶意用户访问敏感信息。敏感环境变量应该受到保护,并且不应该在日志中泄露。这可以通过使用加密存储环境变量和限制对日志的访问来实现。
  • 资源限制:🔶 实施资源使用限制,防止大模型出错时大量循环重复调用。这可以防止恶意服务耗尽系统资源。应该实施资源使用限制,以防止大模型出错时大量循环重复调用,从而耗尽系统资源。这可以通过使用资源配额和限制API调用次数来实现。

代码与数据完整性

  • 完整性验证机制:🟥️ 使用数字签名、哈希校验等机制确保代码未被篡改。这可以防止恶意用户修改代码。应该使用数字签名、哈希校验等机制确保代码未被篡改,以防止恶意用户修改代码。
  • 远程验证:🔶 支持远程验证代码完整性的机制。这允许远程用户验证代码是否已被篡改。应该支持远程验证代码完整性的机制,以允许远程用户验证代码是否已被篡改。
  • 代码混淆与加固:🟢️ 应用代码混淆和加固技术,增加逆向工程难度。这可以使恶意用户更难以理解和修改代码。可以应用代码混淆和加固技术,以增加逆向工程难度,从而使恶意用户更难以理解和修改代码。

供应链安全

  • 依赖项管理:🟥️ 安全管理第三方依赖项。这包括跟踪依赖项,确保它们是最新的,并扫描它们是否存在漏洞。应该安全管理第三方依赖项,包括跟踪依赖项、确保它们是最新的,并扫描它们是否存在漏洞。
  • 包完整性:🟥️ 验证包的完整性和真实性。这可以防止恶意用户注入恶意包。应该验证包的完整性和真实性,以防止恶意用户注入恶意包。
  • 来源验证:🔶 验证所有代码和依赖项的来源。这可以帮助确保代码来自可信来源。应该验证所有代码和依赖项的来源,以确保代码来自可信来源。
  • 构建安全:🔶 确保构建流程安全。这包括使用安全的构建工具,并确保构建环境是安全的。应该确保构建流程安全,包括使用安全的构建工具,并确保构建环境是安全的。

监控与日志记录

  • 异常检测:🟥️ 检测和报告异常活动模式。这可以帮助识别恶意活动。应该检测和报告异常活动模式,以帮助识别恶意活动。
  • 详细日志记录:🟥️ 记录所有服务活动和安全事件。这可以帮助调查安全事件。应该记录所有服务活动和安全事件,以帮助调查安全事件。
  • 安全事件告警:🟥️ 配置关键安全事件的实时告警。这可以帮助及时响应安全事件。应该配置关键安全事件的实时告警,以帮助及时响应安全事件。
  • 集中日志管理:🔶 集中收集和分析日志。这可以提供对安全事件的更全面的视图。应该集中收集和分析日志,以便于提供对安全事件的更全面的视图。
  • 日志完整性:🔶 确保日志完整性,防止篡改。这可以防止恶意用户删除或修改日志。应该确保日志完整性,防止篡改,以防止恶意用户删除或修改日志。
  • 审计能力:🔶 支持详细的审计和事件调查。这可以帮助确定安全事件的原因。应该支持详细的审计和事件调查,以帮助确定安全事件的原因。

调用环境隔离

  • MCP 间隔离:🟥️ 确保多个 MCP 服务之间的操作隔离。这可以防止恶意MCP服务影响其他MCP服务。应该确保多个MCP服务之间的操作隔离,以防止恶意MCP服务影响其他MCP服务。
  • 资源访问控制:🟥️ 为每个 MCP 服务分配明确的资源访问权限边界。这可以限制恶意MCP服务可以访问的资源。应该为每个MCP服务分配明确的资源访问权限边界,以限制恶意MCP服务可以访问的资源。
  • 工具权限分离:🔶 不同领域的工具使用不同的权限集。这可以减少恶意工具造成的损害。不同领域的工具应该使用不同的权限集,以减少恶意工具造成的损害。

平台兼容性与安全

  • 系统资源隔离:🟥️ 根据不同操作系统特性实施适当的资源隔离策略。这可以防止恶意服务影响其他服务或系统。应该根据不同操作系统特性实施适当的资源隔离策略,以防止恶意服务影响其他服务或系统。
  • 跨平台兼容性测试:🔶 测试 MCP 服务在不同操作系统和客户端上的安全行为一致性。这可以确保服务在所有平台上都安全。应该测试MCP服务在不同操作系统和客户端上的安全行为一致性,以确保服务在所有平台上都安全。
  • 平台特定风险评估:🔶 评估特定平台的独特安全风险和缓解措施。这可以帮助识别和减轻特定于平台的安全风险。应该评估特定平台的独特安全风险和缓解措施,以帮助识别和减轻特定于平台的安全风险。
  • 客户端差异处理:🔶 确保安全控制能适应各种客户端实现的差异。这可以确保服务与所有客户端都安全。应该确保安全控制能适应各种客户端实现的差异,以确保服务与所有客户端都安全。

数据安全与隐私

  • 数据最小化:🟥️ 仅收集和处理必要的数据。这可以减少数据泄露的风险。应该仅收集和处理必要的数据,以减少数据泄露的风险。
  • 数据加密:🟥️ 敏感数据在存储和传输中加密。这可以防止恶意用户访问敏感信息。应该在存储和传输中加密敏感数据,以防止恶意用户访问敏感信息。
  • 数据隔离:🟥️ 不同用户的数据得到有效隔离。这可以防止恶意用户访问其他用户的数据。应该将不同用户的数据进行有效隔离,以防止恶意用户访问其他用户的数据。
  • 数据访问控制:🟥️ 实施严格的数据访问控制。这可以限制对数据的访问。应该实施严格的数据访问控制,以限制对数据的访问。
  • 敏感数据识别:🟥️ 自动识别和特殊处理敏感数据。这可以帮助防止敏感数据泄露。应该自动识别和特殊处理敏感数据,以帮助防止敏感数据泄露。

资源安全

  • 资源访问控制:🟥️ 实施细粒度的资源访问控制。这可以限制对特定资源的访问。应该实施细粒度的资源访问控制,以限制对特定资源的访问。
  • 资源限制:🔶 限制单个资源的大小和数量。这可以防止恶意用户耗尽系统资源。应该限制单个资源的大小和数量,以防止恶意用户耗尽系统资源。
  • 资源模板安全:🔶 确保资源模板参数经过验证和清理。这可以防止恶意用户注入恶意代码。应该确保资源模板参数经过验证和清理,以防止恶意用户注入恶意代码。
  • 敏感资源标记:🔶 标记并特殊处理敏感资源。这可以帮助防止敏感资源泄露。应该标记并特殊处理敏感资源,以帮助防止敏感资源泄露。

工具实现安全

  • 安全编码实践:🟥️ 遵循安全编码标准和最佳实践。这可以减少代码中的漏洞数量。应该遵循安全编码标准和最佳实践,以减少代码中的漏洞数量。
  • 工具隔离:🟥️ 工具执行在受控环境中,防止系统级别影响。这可以防止恶意工具影响其他服务或系统。工具应该在受控环境中执行,以防止系统级别影响,从而防止恶意工具影响其他服务或系统。
  • 输入验证:🟥️ 严格验证来自客户端的所有输入。这可以防止恶意用户注入恶意代码。应该严格验证来自客户端的所有输入,以防止恶意用户注入恶意代码。
  • 工具权限控制:🟥️ 各工具仅拥有完成任务所需的最小权限。这可以减少恶意工具造成的损害。各工具应该仅拥有完成任务所需的最小权限,以减少恶意工具造成的损害。
  • 数据验证:🟥️ 验证工具处理的数据,防止注入和篡改。这可以防止恶意用户注入恶意数据。应该验证工具处理的数据,防止注入和篡改,以防止恶意用户注入恶意数据。
  • 工具行为约束:🟥️ 限制工具可执行的操作范围和类型。这可以减少恶意工具造成的损害。应该限制工具可执行的操作范围和类型,以减少恶意工具造成的损害。
  • 第三方接口返回信息安全:🟥️ 验证接口返回信息是否符合预期,不可直接将返回信息插入上下文。这可以防止恶意工具利用第三方接口。应该验证接口返回信息是否符合预期,不可直接将返回信息插入上下文,以防止恶意工具利用第三方接口。
  • 错误处理:🔶 安全处理错误,不泄露敏感信息。这可以防止恶意用户利用错误信息。应该安全处理错误,不泄露敏感信息,以防止恶意用户利用错误信息。
  • 命名空间隔离:🔶 为不同工具实施严格的命名空间隔离。这可以防止工具之间的冲突。应该为不同工具实施严格的命名空间隔离,以防止工具之间的冲突。

MCP客户端/ MCP主机安全

主机是运行AI应用程序和MCP客户端的环境,是终端用户与AI系统交互的入口点。客户端是AI应用程序内部的组件,负责与MCP服务通信,处理上下文、工具调用和结果展示。以下是保护MCP客户端和主机的注意事项:

用户交互安全

  • 用户界面安全:🟥️ 用户界面明确显示 AI 操作的权限范围和潜在影响,提供直观的安全指示器。这可以帮助用户了解他们授予AI的权限。用户界面应该明确显示AI操作的权限范围和潜在影响,并提供直观的安全指示器,以便于帮助用户了解他们授予AI的权限。
  • 敏感操作确认:🟥️ 高风险操作(如文件删除、资金转账)需要明确用户确认。这可以防止用户意外执行高风险操作。对于高风险操作(例如文件删除、资金转账),需要明确用户确认,以防止用户意外执行高风险操作。
  • 权限请求透明:🟥️ 权限请求明确说明用途和范围,帮助用户做出明智决策,避免过度授权。这可以帮助用户了解他们授予AI的权限。权限请求应该明确说明用途和范围,以便于帮助用户做出明智决策,避免过度授权,从而帮助用户了解他们授予AI的权限。
  • 操作可视化:🔶 工具调用和数据访问对用户可见且可审核,提供详细的操作日志。这可以帮助用户了解AI正在执行的操作。工具调用和数据访问应该对用户可见且可审核,并提供详细的操作日志,以便于帮助用户了解AI正在执行的操作。
  • 信息透明度:🔶 工具应该可以允许用户是否默认展示隐藏标签,保证用户看到的和实际生成与调用的上下文完整与一致,防止隐藏标签中存在恶意逻辑。工具应该允许用户选择是否默认展示隐藏标签,以保证用户看到的和实际生成与调用的上下文完整与一致,防止隐藏标签中存在恶意逻辑。
  • 状态反馈:🔶 用户可清楚了解当前正在执行的 MCP 操作。用户应该可以清楚了解当前正在执行的 MCP 操作。

AI控制与监控

  • 操作记录:🟥️ 记录所有重要 AI 操作及其结果。这可以帮助调查安全事件。应该记录所有重要AI操作及其结果,以便于帮助调查安全事件。
  • 异常检测:🔶 检测异常的工具调用模式或请求序列。这可以帮助识别恶意活动。应该检测异常的工具调用模式或请求序列,以便于帮助识别恶意活动。
  • 工具调用限制:🔶 实施工具调用频率和数量限制。这可以防止恶意用户滥用工具。应该实施工具调用频率和数量限制,以防止恶意用户滥用工具。

本地存储安全

  • 凭证安全存储:🟥️ 对重要凭证使用系统密钥链或专用加密存储保护认证凭证,防止未经授权的访问。这可以防止恶意用户访问凭证。应该对重要凭证使用系统密钥链或专用加密存储保护认证凭证,防止未经授权的访问,从而防止恶意用户访问凭证。
  • 敏感数据隔离:🔶 实施数据隔离机制,将敏感用户数据与普通数据分开存储和处理。这可以防止恶意用户访问敏感数据。应该实施数据隔离机制,将敏感用户数据与普通数据分开存储和处理,以防止恶意用户访问敏感数据。

应用程序安全

  • 应用完整性:🟥️ 验证应用程序及 MCP 插件的完整性,防止篡改。这可以防止恶意用户修改应用程序。应该验证应用程序及MCP插件的完整性,防止篡改,从而防止恶意用户修改应用程序。
  • 更新验证:🔶 Host 应用更新经过数字签名验证。这可以确保更新来自可信来源。Host应用更新应该经过数字签名验证,以确保更新来自可信来源。
  • 应用程序沙箱:🟢️ 尽量在沙箱环境中运行应用,限制系统访问。这可以减少恶意应用程序造成的损害。应该尽量在沙箱环境中运行应用,限制系统访问,从而减少恶意应用程序造成的损害。

客户端身份验证与授权

  • 强制认证:🟥️ 在与任何重要 MCP 服务通信前强制执行认证,防止匿名访问。这可以防止未经授权的用户访问服务。在与任何重要MCP服务通信前,应该强制执行认证,防止匿名访问,从而防止未经授权的用户访问服务。
  • OAuth 实现:🔶 正确实现 OAuth 2.1 或更高版本流程,遵循最佳实践和安全标准。这可以确保身份验证是安全的。应该正确实现OAuth 2.1或更高版本流程,遵循最佳实践和安全标准,以确保身份验证是安全的。
  • 状态参数:🔶 对于部分 Web 客户端实施状态参数防止 CSRF 攻击,每次请求使用唯一随机值。这可以防止跨站请求伪造(CSRF)攻击。对于部分Web客户端,应该实施状态参数防止CSRF攻击,每次请求使用唯一随机值,以防止跨站请求伪造(CSRF)攻击。

MCP工具与服务器管理

  • MCP 工具验证:🟥️ 验证注册工具的真实性和完整性。这可以防止恶意工具被注册。应该验证注册工具的真实性和完整性,以防止恶意工具被注册。
  • 安全更新:🟥️ MCP 客户端定期检查并应用安全更新,验证更新后的工具是否包含恶意描述。这可以确保工具是最新的,并且不包含恶意代码。MCP客户端应该定期检查并应用安全更新,并验证更新后的工具是否包含恶意描述,以确保工具是最新的,并且不包含恶意代码。
  • 函数名校验:🟥️ 注册工具前检查名称冲突和潜在恶意覆盖。这可以防止恶意工具覆盖现有工具。应该在注册工具前检查名称冲突和潜在恶意覆盖,以防止恶意工具覆盖现有工具。
  • 恶意 MCP 检测:🟥️ 监控和识别潜在恶意 MCP 的行为模式。这可以帮助识别恶意 MCP。应该监控和识别潜在恶意MCP的行为模式,以帮助识别恶意MCP。
  • MCP 工具命名控制:🔶 采用命名空间或唯一标识符,防止命名冲突。这可以防止工具之间的冲突。应该采用命名空间或唯一标识符,防止命名冲突,以防止工具之间的冲突。
  • 服务目录:🔶 维护可信 MCP 服务和工具的授权目录。这可以帮助用户找到可信的服务。应该维护可信MCP服务和工具的授权目录,以帮助用户找到可信的服务。
  • 冲突解决:🔶 存在明确的规则解决同名工具冲突。应该存在明确的规则解决同名工具冲突。
  • 域隔离:🔶 不同域的工具彼此隔离,防止交叉影响。不同域的工具应该彼此隔离,防止交叉影响。
  • 优先级机制:🔶 建立明确的函数优先级规则,避免恶意覆盖。应该建立明确的函数优先级规则,避免恶意覆盖。
  • 版本控制:🔶 对函数和工具实施版本控制,检测变更。应该对函数和工具实施版本控制,检测变更。
  • 工具注册与注销机制:🔶 明确工具注册和注销的流程,防止遗留工具的安全风险。应该明确工具注册和注销的流程,防止遗留工具的安全风险。
  • 冲突检测机制:🔶 检测并解决多 MCP 环境中的函数和资源冲突。应该检测并解决多MCP环境中的函数和资源冲突。
  • 工具分类:🟢️ 根据敏感度和风险级别对工具进行分类。应该根据敏感度和风险级别对工具进行分类。

提示词安全

  • 提示词注入防御:🟥️ 实施多层防御措施防止提示词注入攻击,包括对关键执行进行人工验证。应该实施多层防御措施防止提示词注入攻击,包括对关键执行进行人工验证。
  • 恶意指令检测:🟥️ 建立机制检测并阻止潜在的恶意用户指令,避免系统被操纵,如检测阻止本地初始化时候的预载恶意指令,以及来自第三方 MCP 服务器的恶意工具包含隐藏的有害指令。应该建立机制检测并阻止潜在的恶意用户指令,避免系统被操纵,如检测阻止本地初始化时候的预载恶意指令,以及来自第三方MCP服务器的恶意工具包含隐藏的有害指令。
  • 系统提示保护:🟥️ 系统提示与用户输入明确分离,防止篡改。应该将系统提示与用户输入明确分离,防止篡改。
  • 敏感数据过滤:🟥️ 从提示和上下文中过滤敏感个人数据。应该从提示和上下文中过滤敏感个人数据。
  • 上下文隔离:🔶 确保不同来源的上下文内容相互隔离,防止上下文污染和信息泄露。应该确保不同来源的上下文内容相互隔离,防止上下文污染和信息泄露。
  • 提示词模板:🔶 使用安全的提示词模板,减少注入风险。应该使用安全的提示词模板,减少注入风险。
  • 工具描述验证:🔶 检查工具描述中的潜在恶意指令。应该检查工具描述中的潜在恶意指令。
  • 提示词一致性验证:🔶 确保相同提示词在不同环境下产生可预期的一致结果。应该确保相同提示词在不同环境下产生可预期的一致结果。
  • 历史上下文管理:🔶 明确历史上下文的安全清理机制,防止旧数据累积造成的信息泄露风险。应该明确历史上下文的安全清理机制,防止旧数据累积造成的信息泄露风险。

日志与审计

  • 客户端日志记录:🟥️ 记录所有与 MCP 服务的交互、工具调用和授权活动。应该记录所有与MCP服务的交互、工具调用和授权活动。
  • 安全事件记录:🟥️ 记录所有安全相关事件,包括授权失败。应该记录所有安全相关事件,包括授权失败。
  • 异常告警:🔶 检测并告警异常活动模式。应该检测并告警异常活动模式。

服务器验证与通信安全

  • 服务器身份验证:🟥️ 验证 MCP 服务器身份,防止连接到恶意服务器,实施证书固定。应该验证MCP服务器身份,防止连接到恶意服务器,实施证书固定。
  • 证书验证:🟥️ 对远程服务器严格验证 TLS 证书,防止中间人攻击,检查证书链完整性。应该对远程服务器严格验证TLS证书,防止中间人攻击,检查证书链完整性。
  • 通信加密:🟥️ 所有客户端-服务器通信使用 TLS 1.2+ 加密,禁用弱加密套件。所有客户端-服务器通信应该使用TLS 1.2+加密,禁用弱加密套件。
  • 安全协议配置:🔶 配置安全的 TLS 参数,定期审计和更新加密算法和协议。应该配置安全的TLS参数,定期审计和更新加密算法和协议。

权限令牌存储与管理

  • 权限范围限制:🟥️ 严格限制令牌的权限范围,实施最小权限原则。应该严格限制令牌的权限范围,实施最小权限原则。

自动批准控制

  • 自动批准限制:🟥️ 严格控制可被自动批准的工具和操作范围。应该严格控制可被自动批准的工具和操作范围。
  • 白名单管理:🔶 明确定义可自动批准工具的白名单机制。应该明确定义可自动批准工具的白名单机制。
  • 动态风险评估:🔶 根据上下文动态调整自动批准策略。应该根据上下文动态调整自动批准策略。
  • 批准流程审计:🔶 记录并审计所有自动批准决策。应该记录并审计所有自动批准决策。

采样安全

  • 上下文包含控制:🟥️ 严格控制采样请求中包含的上下文范围。应该严格控制采样请求中包含的上下文范围。
  • 敏感数据过滤:🟥️ 从采样请求和响应中过滤敏感数据。应该从采样请求和响应中过滤敏感数据。
  • 采样请求验证:🔶 验证所有采样请求参数和内容。应该验证所有采样请求参数和内容。
  • 用户控制:🔶 确保用户对采样请求和结果有明确控制权。应该确保用户对采样请求和结果有明确控制权。
  • 模型偏好安全:🔶 安全处理模型偏好信息,防止滥用。应该安全处理模型偏好信息,防止滥用。
  • 结果验证:🔶 验证采样结果是否符合安全标准。应该验证采样结果是否符合安全标准。

MCP在不同LLM上的适配和调用安全

不同的LLM后端对MCP的调用优先级和执行逻辑都可能存在差异,因此需要关注LLM与MCP之间的组合安全性。

LLM安全执行

  • 优先函数执行:🟥️ 确保 LLM 可以优先执行正确插件的函数。应该确保LLM可以优先执行正确插件的函数。
  • 恶意提示防护:🟥️ LLM 能在提示恶意场景的情况下对注入的助记词要求的行为进行识别与防护。LLM应该能够在提示恶意场景的情况下对注入的助记词要求的行为进行识别与防护。
  • 安全调用:🟥️ LLM 能正确安全地调用相关 MCP 功能。LLM应该能够正确安全地调用相关MCP功能。
  • 敏感信息保护:🟥️ 防止敏感信息泄露。应该防止敏感信息泄露。

多模态安全

  • 多模态内容过滤:🟥️ 过滤多模态内容中的有害或敏感信息(如图片中的恶意提示词)。应该过滤多模态内容中的有害或敏感信息(如图片中的恶意提示词)。

多MCP场景安全

同时启用多个MCP服务器时,由于缺乏官方审计,用户可能安装恶意MCP,对整体安全造成威胁。

  • 多 MCP 环境安全:🟥️ 确保多 MCP 环境的整体安全性,定期对安装的 MCP 进行扫描检查。应该确保多MCP环境的整体安全性,定期对安装的MCP进行扫描检查。
  • 函数优先级劫持防护:🟥️ 检查可能的恶意提示词预设,防止函数优先级被恶意劫持。应该检查可能的恶意提示词预设,防止函数优先级被恶意劫持。
  • 跨 MCP 函数调用控制:🟥️ 安全控制跨 MCP 函数调用,防止恶意 MCP 返回恶意提示词去调用其他 MCP 执行敏感操作。应该安全控制跨MCP函数调用,防止恶意MCP返回恶意提示词去调用其他MCP执行敏感操作。

加密货币相关MCP的特有安全点

加密货币相关MCP通常具有管理加密货币钱包的功能,存在高风险。

  • 私钥保护:🟥️ 加强私钥的安全保护措施,如 Scrypt。应该加强私钥的安全保护措施,如Scrypt。
  • 钱包生成安全:🟥️ 助记词或钱包生成过程的安全性保障。应该保障助记词或钱包生成过程的安全性。
  • 钱包信息隐私:🟥️ 保护钱包信息隐私,将钱包信息请求第三方接口时候需要做好过滤。应该保护钱包信息隐私,将钱包信息请求第三方接口时候需要做好过滤。
  • 转账信息确认:🟥️ 链上或交易所转账签名的信息需要完整展示并确认。链上或交易所转账签名的信息需要完整展示并确认。
  • 资金操作验证:🟥️ 对重要资金操作需二次验证,如 Google Authenticator。对重要资金操作需二次验证,如Google Authenticator。
  • 本地模型隐私保护:🔶 使用本地大模型保护隐私数据,防止第三方大模型厂商获取到你的钱包信息等敏感信息。应该使用本地大模型保护隐私数据,防止第三方大模型厂商获取到你的钱包信息等敏感信息。
  • 传统钱包兼容:🔶 对传统钱包的安全兼容,如支持用传统钱包进行签名操作等。应对传统钱包的安全兼容,如支持用传统钱包进行签名操作等。