首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

在生产环境中保护MCP:超越网关的纵深防御

摘要

核心要点 将MCP安全视为四个控制层而非单一的协议特性。执行、基础设施管理、出站信任与语义完整性都需要对应的强制执行点。使用网关进行认证、授权与审计,但不要指望它能检测语义滥用或保护管理平面。在注册时对工具Manifest进行固定,以避免批准后的模式漂移和“rug-pull”行为。将基于差异的评审作为运维模型,而非简单的允许/拒绝门控。使用出站出口控制与作用域令牌。Azure MCP Server...

2026 MCP Server的SSRF漏洞 CVE 26118 核心要点 将MCP安全视为四个控制层而非单一的协议特性 基础设施管理 出站信任与语义完整性都需要对应的强制执行点 使用网关进行认证
2026-10-09 1 阅读 约10分钟阅读 作者:Nik Kale
分享:
字号:
核心要点 将MCP安全视为四个控制层而非单一的协议特性。执行、基础设施管理、出站信任与语义完整性都需要对应的强制执行点。使用网关进行认证、授权与审计,但不要指望它能检测语义滥用或保护管理平面。在注册时对工具Manifest进行固定,以避免批准后的模式漂移和“rug-pull”行为。将基于差异的评审作为运维模型,而非简单的允许/拒绝门控。使用出站出口控制与作用域令牌。Azure MCP Server的SSRF漏洞( CVE-2026-26118 ")表明仅有入站认证并不足以解决问题。优先考虑可操作性:CI门控、隔离工具、基于差异的Manifest评审与行为基线。规范会随后补上,但生产不能等待。 为什么写这篇文章,以及为何现在写 在2025年底,我们团队决定将MCP(Model Context Protocol,模型上下文协议)作为生产级多智能体平台的集成层。我们只问了一个问题:在大规模的自动化(基于工具)执行之前,需要哪些架构控制才能让我们信任它? 简洁的答案,也是本文的论点,那就是需要四个层面:安全的工具执行、隔离的管理平面、受限的出站信任边界以及语义完整性,每一项都应该在其对应的可信任点上强制执行,而不是仅仅依赖网关。 这些层次在刚开始时并不明显,但接下来六个月的漏洞记录将它们勾勒了出来。在2026年最初的六十天中, 针对MCP部署的CVE报告超过了三十个 "。 来自 Adversa AI "的三月份数据表明,在扫描五百多个MCP服务器时,38%的关键端点缺少认证,43%存在命令执行漏洞。微软在3月10日发布补丁修复了Azure MCP Server的SSRF漏洞(CVE-2026-26118,CVSS 8.8),该漏洞会导致托管身份令牌泄露。 在3月9日,主维护者David Soria Parra发布了 2026 MCP路线图 "。文档将“企业就绪性”列为优先关注的领域,但同时指出在四个方向中它可能是最不明确的。 在2026年4月2日至3日的MCP开发者峰会上,亚马逊云科技与优步分享了它们的MCP Gateway与Registry的生产架构, Pinterest的工程团队 "也公布了其域专用的MCP服务器生态。企业级生产环境MCP的使用速度快于安全规范成熟的速度。 综上所述,这些并非孤立的缺陷。它们在少数的几个边界处聚集,这意味着需要架构性的响应而非零星的修补。本文描述了我认为如今每个生产环境的MCP部署都需要的架构控制模式。每种模式均与当前MCP规范兼容,不需要更改协议。 MCP安全是一个控制平面的问题 在早期实现中,第一个直觉是将网关置于MCP流量之前。这是正确的直觉。网关是集中认证、授权、审计与策略评估的地方。InfoQ 近期发布 "了一篇使用MCP、OPA与短期运行器(ephemeral runner)实现的最小权限AI Agent Gateway的详细实现文章,该设计非常接近理想情况。 然而,网关只是一个强制执行点,而不是完整的控制平面。网关无法确保工具处理器能够以安全的方式执行其参数,它无法隔离围绕MCP的检查器、测试工具与管理控制台,也无法阻止MCP服务器使用过宽的凭据发起不安全的出站调用。此外,网关也无法检测团队上周批准的工具定义何时会发生变化。 我对每一种MCP故障模式都会提出同一个问题:最早的可信强制执行点在哪里? 对于命令注入,答案是工具处理器和CI流水线;对于暴露的检查器(inspector),是管理平面和网络边界;对于通过出站请求泄露凭据,是出站策略与令牌作用域;对于工具定义漂移,是注册边界,在此处本应该对Manifest进行固定、差异比较与评审。 从形态上看,这就是控制平面,而不是单一的网关。在这些点上分散强制执行,也会将责任分散到构建、托管与运行MCP服务器的团队和厂商。CoSAI的 共享责任框架 "阐明了AI栈中安全责任的划分以及当智能体失效时该由谁负责。这些强制点将在下一节被规范化为四个控制层。 四个控制层 这四个层次并不能构成一个严谨的分类体系。它们各自独立存在依然具有一定的局限性,比如,加固执行环境对存在漏洞的出站路径毫无帮助,固定Manifest也无法证明检查器的身份合法性。每个层面都有其最早触发的强制执行点,并且通常由不同的团队负责。正是这些差异,决定了它们是相互独立的安全边界,而不是从四个不同角度看待同一个问题。 这种框架在业界与学术界也越来越常见。 Acharya与Gupta(2026) "提出了MCPShield,这是一个将威胁划分为四类攻击面的安全框架。 Rostamzadeh等人 "(2026)提出了防御布局分类法,指出现有缓解措施过于集中在工具层,而主机编排、传输与供应链层则防护不足。目前的共识是,MCP防御是一个要分层处理的问题。 表1. 四层控制矩阵 各层的概述如下: 第1层是执行,即在调用工具时运行的代码。第2层是管理基础设施,包括检查器、harness、注册界面和管理控制台。第3层是出站信任边界,即服务器自行可达的目标。第4层是语义完整性,即工具定义随时间推移,其含义是否还保持一致。 每层都有不同的最早可信任强制执行点,并需要不同的主控制。网关只参与其中两层,并且只是是部分参与。 在确立模型后,文章接下来将逐层展开,给出相应的控制措施与实现代码。 第1层:安全的工具执行 第1层关注一件事,那就是工具处理器必须将其参数视为数据,而非指令。 在2026年前六十天记录的30个CVE中,有13个呈现出相同的模式:未验证的用户控制输入到达了shell或动态解释器。例如,CVE-2026-2130(mcp-maigret)、CVE-2026-2178(xcode-mcp-server)与CVE-2026-2131(HarmonyOS-mcp-server)均通过exec()执行了工具参数。CVE-2026-1977在Python中对图表规范(chart specification)的参数使用了eval()。CVE-2026-27203通过未经验证的换行符操纵环境变量,导致在下次服务器重启后会触发载荷。 命令注入并不是什么新的概念。在MCP中,它之所以在架构上如此重要,主要原因在于信任模型。开发者将工具参数视为带类型的JSON,伴随的JSON模式(schema)说明了输入结构,但它并未就值在shell执行环境下的安全性作出保证。 代码1. 易受攻击与修复后的shell执行模式 // VULNERABLE: string interpolation into a shell command const { username } = toolCall.params; exec(`docker run maigret ${username}`); // If username is "; rm -rf /" the shell interprets the semicolon. // FIXED: array-based argument passing, no shell interpretation const { username } = toolCall.params; execFile('docker', ['run', 'maig
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱