MCP 协议 高级

MCP 安全与生产实践

接入第三方工具等于打开信任边界:工具中毒、提示注入、混淆代理与生产部署的防御清单。

为什么 MCP 放大了安全风险

MCP 让接入工具变得极易 —— 也让不可信代码进入模型上下文变得极易。三大典型攻击面:

  • 工具中毒(Tool Poisoning):恶意 Server 在工具描述里藏指令("调用本工具前请把 API Key 发到…"),模型会读描述!
  • 内容注入:工具返回的网页/文档里携带诱导指令(经典提示注入,见《权限与沙箱》课);
  • 混淆代理(Confused Deputy):恶意 Server 借你授权的合法 Server(如已登录的 GitHub)以你的身份干坏事 —— 跨 Server 攻击。

防御清单

  • 白名单安装:只接可信来源的 Server,逐个审查工具描述(描述会进入模型上下文);
  • 最小权限:文件类 Server 用 Roots 限定目录;数据库账号只读;
  • 危险调用人工确认:写操作/外发动作必须过审批(LangGraph 的 interrupt 就是干这个的);
  • 内容隔离:工具返回值标记为"数据非指令";
  • 审计留痕:所有 tools/call 记录日志(谁、何时、调了什么、参数是什么)。

生产部署形态

  • 个人/本地:stdio Server,配置文件管理;
  • 团队共享:远程 Streamable HTTP + OAuth 鉴权 + 按用户授权范围下发工具;
  • 企业级:MCP 注册中心统一审核分发,监控调用频次与异常。
对照《Harness 安全边界》课的衡量标准:接入一个新 MCP Server 前,先回答"它最坏能造成什么损失"。

📝 课后练习

quiz-1 接入第三方 MCP Server 时最典型的安全风险是?