这篇适合谁,读完能做到什么
如果你的 MCP 服务器会被别人或 AI 智能体访问,就需要先弄清楚哪些风险是 MCP 特有的,规范又要求哪些控制措施。这篇按风险类型分节,列出每类风险的表现和对应的控制,并指向当前规范。读完你能用这些条目检查一个 MCP 服务器最常见的几类问题[1]。
2026-07-28 规范有哪些变化
这门课把成熟的安全控制和 MCP 2026-07-28 的授权要求放在一起讲,并建议写安全相关代码前先查看当前规范和安全最佳实践[1][2]。两个变化最关键。第一,客户端必须校验授权响应里的 iss 参数(RFC 9207),并把注册的凭证绑定到颁发它的授权服务器。第二,动态客户端注册(Dynamic Client Registration)已弃用,新实现应改用客户端 ID 元数据文档(Client ID Metadata Documents)[1]。
架构也变了。早期规范要求 MCP 服务器自己充当 OAuth 2.0 授权服务器,管理用户认证。当前标准允许 MCP 服务器把认证委托给外部身份提供方,例如 Microsoft Entra ID[1]。
鉴权与令牌透传
鉴权回答的是谁能连。MCP 授权规范明确禁止令牌透传,也就是接收客户端的 token 后原样转发给下游 API。课程明确说,这一条是强制的:MCP 服务器不能接受任何不是专门为它签发的 token[1]。
透传会带来好几类问题。它绕过了依赖正确 token 校验的限流、请求校验和流量监控;下游日志里显示的请求来源是错的;未经校验的 token 声明会让拿到被盗 token 的攻击者把 MCP 服务器当成数据外泄的代理;被多个服务接受的 token 还会造成横向移动[1]。
要求的控制措施是:校验 token 的 audience 与 MCP 服务器的身份一致,并使用短期有效的访问令牌,配合安全的轮换机制[1]。
提示注入与工具投毒
间接提示注入是指,攻击者把恶意指令藏在 AI 系统会读取的内容里,比如文档、网页、邮件或数据源。系统会把这些指令当成正常命令执行[1]。
工具投毒攻击的是描述工具的元数据,包括工具说明、参数定义和用法示例。大模型依靠这些元数据决定要执行什么[1]。所谓拉地毯(rug pull)是指:用户已经批准的工具,之后被改成做恶意操作。课程指出,远程服务器风险更高,因为工具定义可以在用户批准后被更新[1]。课程建议校验工具元数据,并监控工具是否发生变化[1]。
课程把微软的 AI Prompt Shields 描述为针对直接和间接提示注入的防护,采用检测过滤、spotlighting、分隔符和 datamarking 等手段,并与 Azure AI Content Safety 集成[1]。
会话劫持
会话劫持是指,有人拿到了合法的会话 ID。拿到以后,他可以向共享会话状态的服务器注入事件,也可以直接调用 MCP 服务器、绕过鉴权[1]。
课程规定:实现了授权的 MCP 服务器必须校验每一个入站请求,不能依赖会话做认证。会话 ID 要用密码学安全、不可预测的随机数生成,并与用户绑定,例如 <user_id>:<session_id> 这种格式;还要有过期、轮换和失效机制。所有通信必须使用 HTTPS[1]。
混淆代理人问题(confused deputy)
MCP 服务器有时会充当客户端和第三方服务之间的认证代理。如果它使用静态的客户端 ID,攻击者就可能利用已有的同意 cookie,配合构造好的重定向 URI。授权服务器可能跳过同意页面,把授权码发到攻击者的地址[1]。
这些缓解措施是强制性的:代理服务器必须为每一个动态注册的客户端获得用户同意;每个授权请求都应使用带 PKCE 的 OAuth 2.1;还要严格校验重定向 URI 和客户端标识[1]。
供应链与最小权限
对 AI 系统来说,供应链包括基础模型、嵌入服务、上下文提供方、第三方 API、模型产物和训练数据源。每一项在使用前都要核对来源、许可和完整性[1]。
最小权限同样适用于服务器本身:只授予它需要的权限,定期审查以防权限越积越多,角色也要限定在具体的资源和操作上[1]。
怎么练,检查什么
课程列出了 OWASP MCP Top 10,从 MCP01(令牌管理不当与密钥泄露)到 MCP10(上下文注入与过度共享)[1]。想动手练习的话,课程推荐 MCP Security Summit Workshop(Sherpa),它用「有漏洞、利用、修复、验证」的方法,在故意不安全的服务器上操作[1]。
课程要求的基础措施还包括:token 和 API key 放进专门的保险库,严格做输入校验,管理员和服务账户启用多因素认证,并详细记录 MCP 客户端与服务器之间的交互[1]。
限制和常见问题
- 这篇是对风险和控制的概览,不等于完整的威胁建模。上线前仍要对照当前规范审查自己的部署[1][2]。
- 有些控制依赖身份提供方或云平台,例如 Microsoft Entra ID,要看它们在你的环境里怎么配置[1]。
下一步
当前的安全最佳实践在 MCP 规范里[2]。下一章是入门(Getting Started)[1]。
本文改编自 Microsoft 开源课程 mcp-for-beginners 的安全一课[1],原文以 MIT 许可证发布。
来源
- 1MCP Security: Comprehensive Protection for AI SystemsMicrosoft mcp-for-beginners (MIT)
- 2Security Best Practices (MCP specification 2026-07-28)Model Context Protocol
引用本页: MCP 安全:提示注入、工具投毒与权限. TellWorld, https://www.tellworld.net/zh/practice/practice-mcp-security. 更新于 2026-11-14