模型上下文协议(MCP) 是一种让大语言模型(LLM)与外部工具、数据源打通的机制,能够让模型不再局限于内部知识,而是可以实时调用各种工具、访问各种文档。随着AI技术的不断发展,MCP的应用也日益广泛,OpenAI、Anthropic和微软等主要AI技术公司都开始采用它,已然成为了实现第三方数据、工具与AI智能集成的事实标准。
然而在MCP应用爆火的背后,现实远比设想的要复杂。由于MCP在设计之初并未定义统一的安全认证机制,各MCP服务器在威胁防护方面参差不齐,组织只要接入了MCP,就可能在数据安全、调用逻辑、用户预期以及性能表现等方面出现各种安全隐患。在本文中,收集整理了已被真实验证的MCP应用10大安全风险隐患,并给出了相应的安全防护建议。
1、跨租户数据暴露
这一安全威胁与跨站脚本攻击类似,攻击者可借此访问其他租户(包括内部团队、合作伙伴和客户)的数据。事实上,已有科技公司在其 MCP 服务器实现中被发现存在该安全威胁,这为所有部署 MCP 服务器的企业敲响了警钟。
安全建议:
为防范此类风险,企业应确保 MCP 服务器严格执行租户隔离,并采用最小权限访问原则。
2、AI寄生攻击
攻击者会伪装成员工、合作伙伴或客户,向人工客服发送包含隐藏提示注入的请求,这些注入的指令只有 AI 能够读取。当人工客服将请求转交 AI 助手后,AI助手凭借与 MCP 服务器的连接,可访问到能接触敏感数据和业务流程的工具,进而被攻击者利用实施恶意访问行为。这并非理论上的威胁,实际上有很多拥有先进技术的科技公司也都受到其影响。
安全建议:
企业应该通过限制 AI 操作的最小权限、实时分析提示中的可疑内容以及记录 MCP 活动审计日志等方式来防范。
3、工具中毒
初次搭建 MCP 服务器并非易事,好在有大量现成的服务器可供使用,目前谷歌上可被检索的MCP 服务器目录已列出超过 15,000 个应用。但这些从网上下载的 MCP 服务器在安全性方面却未必可靠,可能存在恶意指令。比如,Invariant Labs实验室曾实际演示了恶意MCP服务器是如何通过在描述字段添加恶意指令,绕过加密和安全措施从其他系统提取信息。而且,这种恶意指令不仅存在于描述字段,还可能出现在函数名、参数、错误信息等通过MCP服务器生成的各类信息中。
安全建议:
组织要判断下载的 MCP 服务器是否恶意,应首先检查其来源是否为可信组织,然后再查看其请求的权限是否合理,如仅提供猫咪搞笑图片的服务器无需访问文件系统。若有可能,还应该完整审核其源代码。MCP 服务器在被信任后,也可以通过更新被植入恶意代码,因此定期进行安全复查是十分必要的。
4、借助可信平台的恶意代理流
有很多可信的公共平台(如 GitHub)可让攻击者注入恶意提示,当企业的AI代理按常规处理这些内容时,就会通过可信的MCP服务器访问敏感数据。例如,攻击者在公共代码仓库创建含提示注入的 issue,AI代理在检查该 issue时,可能会按照注入的指令,通过 GitHub MCP 服务器访问私人仓库的私密数据。尽管 GitHub 服务器本身未被直接攻破,却成了辅助攻击的第三方渠道。研究人员利用 Anthropic 的 Claude Desktop 演示了这一攻击向量,尽管平台默认要求用户确认每次工具调用,但许多用户仍会选择 “始终允许”的确认策略,从而增加了风险。
安全建议:
清晰记录第三方工具行为,使用户在授权前了解每个工具的功能;同时将工具限制在预先批准的操作范围内,监控异常或意外行为,防止工具被污染。
5、令牌窃取与账户接管
Pillar Security 最新发布的安全报告指出,若攻击者获取了MCP 服务器中存储的未加密 OAuth令牌,就能用该令牌创建自己的MCP 服务器实例。这些OAuth令牌可能因存储在未加密的配置或代码文件中,被攻击者通过后门、社会工程学等方式窃取。以 Gmail 为例,攻击者可借此访问受害者的全部邮件历史、发送伪造邮件、删除邮件、搜索敏感信息及设置转发规则等。且与传统账户入侵可能触发可疑登录通知不同,通过MCP服务使用被盗令牌看上去就是合法的 API 访问,难以被安全机制检测到。
安全建议:
企业需要加密存储常用的OAuth 令牌,并防范相关窃取;使用即时访问、持续验证和行为监控来最小化风险。
6、组合链攻击
未经检查的MCP服务器可能有隐藏的深层恶意指令。如果用户下载并使用第三方MCP服务器,而没有验证其中数据的来源,则可能向第二个远程MCP服务器发送请求。CyberArk将这种MCP服务器攻击向量称为“组合链攻击”。第二台MCP服务器可以返回有效输出以及隐藏的恶意指令,第一台服务器将这些信息与自身的响应合并,然后将所有内容发送给AI代理,后者就会执行这些恶意指令。如果组织在其网络环境中存储了敏感数据,攻击者可能利用此方法进行数据窃取,而受害者甚至从未直接与恶意的MCP服务器建立连接。
安全建议:
遵循纵深防御和零信任原则,不假设隐式信任,持续验证和授权每个MCP交互;结合多层安全控制全面保护MCP环境。
7、用户同意疲劳攻击
很多企业开始要求对AI代理的访问行为进行审批,这当然是一种安全防护措施,却实际上可能产生反效果。Palo Alto 安全专家表示,已经发现一些恶意MCP服务器会向AI代理及其用户发送大量无害请求(如多次读取权限申请),使用户逐渐放松警惕。这种攻击方式与多因素认证疲劳攻击类似,都是利用用户在持续提示下的某些细微疏忽。在其变体采样攻击中,恶意指令会隐藏在冗长的消息中,让人工审核时难以发现,无论是直接发送给LLM的消息还是其返回的结果中,都可能存在这种情况。
安全建议:
应提供清晰、透明的用户界面,实施精细的同意选项,使管理人员能够基于每个访问操作来合理审批、控制权限。
8、管理权限绕过威胁
在这种攻击模式中,企业往往设置了一个无需进行身份验证的MCP服务器,就像很多组织会设置MCP服务器用于其文件目录管理,以便用户通过AI代理轻松查询信息一样。如果用户仅被允许以低级别权限访问这些信息,但MCP服务器并不检查发起初始请求的人员的身份,那么AI代理就可能获取到超出个人被允许知晓的范围的信息。如果此MCP服务器也暴露在外部用户(如业务合作伙伴、客户,甚至公众)面前,这种特权提升就可能会造成巨大的损害。
安全建议:
集中记录所有重要的MCP事件(工具调用、数据请求、错误)以供分析和审计;实施持续监控和异常检测,及早识别可疑的MCP活动。
9、命令注入威胁
现在很多 MCP 服务器实现方式基本上就是“照着用户的输入直接执行代码”,因为按传统的安全防护思路来看,MCP 里的动作本来就是用户自己定义、自己控制的,不需要管控。而如果MCP服务器在没有适当验证的情况下直接将用户输入传递给其他系统,那么就可以以类似SQL注入的方式注入自己的攻击命令。攻击者会全面寻找并利用MCP服务器暴露的所有工具中的命令注入漏洞发起攻击。
安全建议:
要对MCP服务器的用户输入进行安全审查和控制,不能直接传递给shell命令,而是应该使用正确的输入验证和参数化命令。
10、影子工具威胁
组织面临未经安全团队知晓私自安装的MCP服务器("影子MCP")风险,这带来了安全盲点和未监控的访问路径。这些影子MCP可能被利用于未授权访问、数据泄露或意外破坏性操作。当 AI 代理可访问多个 MCP 服务器时,其中一个服务器可能诱使代理不当使用另一个服务器。Solo.io 公司CTO Christian Posta 在其研究中就特别提到了这种恶意MCP攻击方式,他指出企业需重点加强对AI代理操作行为的监控,并定期检查不同MCP服务器之间的异常交互。
安全建议:
部署统一的MCP服务管理工具;结合数据丢失防护(DLP)技术,如基于模式的编辑和与DLP系统集成,防止数据泄露。
参考链接:
https://www.csoonline.com/article/4023795/top-10-mcp-vulnerabilities.html
声明:本文来自安全牛,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。