MCP服务普及中的安全挑战

admin 2025年4月7日00:53:11评论1 views字数 3827阅读12分45秒阅读模式

引言

MCP(Model Context Protocol)是Anthropic在2024年11月推出并开源的开放协议,旨在实现AI与外部工具的无缝对话。随着MCP的普及,其应用范围不断扩大,从浏览器操作到数据库查询,从天气信息获取到复杂的系统集成,极大地提升了AI的实用价值。然而,在这种快速发展的背景下,一些潜在的安全问题逐渐浮现。

研究背景

MCP作为一种专门用于实现大型语言模型与外部工具和数据源交互的协议框架,其核心价值在于安全地实现AI模型对外部工具的调用、数据库的访问以及特定任务的执行。然而,这种强大的功能扩展也带来了相应的安全风险。

MCP服务普及中的安全挑战

MCP提供了两种主要的通信方式,让AI模型能够灵活地与外部工具进行交互:

首先是本地通信模式,这种方式就像两个程序在同一台电脑上"对话"一样,通过标准输入输出来传递信息。比如当你在本地运行一个AI应用时,它可以直接调用你电脑上的工具或程序,处理起来既快速又安全。

看个实际例子:通过MCP协议,我们能超级方便地让AI用各种工具。比如说,我们可以搞一个基于MCP的nmap服务,在本地环境下设置好通信机制。设置好以后呢,本地运行的AI就能直接调用nmap工具,轻轻松松就能完成网络端口扫描。

MCP服务普及中的安全挑战

另一种是远程通信模式,这种方式更像是AI在通过网络与远处的工具"聊天"。它采用了SSE(Server-Sent Events)+ HTTP协议技术,使得AI可以实时接收来自远程服务器的数据流。这种方式特别适合需要访问云端资源或者在分布式系统中使用的场景。

这两种通信方式的存在,使得MCP能够更好地适应不同的使用场景。

研究方法

MCP服务的快速涌现为我们提供了丰富的分析样本。在GitHub上存在多种MCP服务实现,我们主要关注两类:一类是基于NodeJS实现的MCP服务器(如Supergateway),另一类是基于Python实现的服务(如MCP-proxy、Markitdown等)。当然,还有其他实现方式,但本研究将重点关注这两类。

基于 NodeJS 实现的 MCP 服务在直接访问时的响应如下:

HTTP/1.1 404 Not FoundX-Powered-By: ExpressContent-Security-Policy: default-src 'none'X-Content-Type-Options: nosniffContent-Type: text/html; charset=utf-8Content-Length: 139Date: Thu, 03 Apr 2025 08:51:33 GMTConnection: keep-aliveKeep-Alive: timeout=5<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><title>Error</title></head><body><pre>Cannot GET /</pre></body></html>

基于这个响应,我们可以总结出特定空间测绘系统(如 Censys)的搜索语法:

web.endpoints.http.status_code:404 and web.endpoints.http.body_size:139 and web.endpoints.http.body_hash_sha256 = "52c1e7a2c36be28c42455fe1572d7d7918c3180cad99a2b82daa2a38a7e7bb23"

这种搜索方法虽然不能百分百确定结果就是 MCP 服务,但确实帮助我们有效地缩小了搜索范围。

MCP服务普及中的安全挑战
类似地,基于Python开发的MCP服务响应如下
HTTP/1.1 404 Not Founddate: Thu, 03 Apr 2025 09:03:06 GMTserver: uvicorncontent-length: 9content-type: text/plain; charset=utf-8Not Found  
根据这些特征,可以构建以下搜索语法:
web.endpoints.http.status_code:404 and web.endpoints.http.body_size:9 and web.software.product = "uvicorn"
MCP服务普及中的安全挑战
由于MCP公开时间较短,我们基于上述搜索语法,从网络空间搜索引擎中提取了近一周的资产。接着,我们基于公开的 SSE 路径(如 "/sse"、"/mcp" 或 "/mcp-sse" 等)进行扫描。
MCP服务普及中的安全挑战

研究发现

基于上述方法,我们在互联网上发现了未经授权的MCP服务,通过深入分析,我们发现这些服务提供的工具类型覆盖面广泛,涵盖从基础系统操作到敏感数据访问的多个领域。我们对这些工具进行了分类,下表详细列出了工具类型的分布情况:

类别
名称
百分比
calendarGmailTools
日历和邮件相关
19.9%
tenantBrandTools
租户和品牌管理工具
17.4%
searchRetrievalTools
网页搜索和检索
8.7%
fileContentTools
文件和内容处理
6.8%
systemTools
系统和命令行
6.8%
memoryTools
内存和存储相关
6.2%
mathTools
数学和计算
5.6%
taskManagementTools
任务和课程管理工具
5.6%
healthUtilityTools
健康检查和实用工具
3.7%
databaseTools
数据库和查询
3.1%
securityTools
安全和加密
3.1%
otherTools
其他/未分类工具
1.9%
webCrawlingTools
网络爬虫和内容获取
1.9%
jiraTools
Jira相关
1.2%
financialTools
金融和账户管理
1.2%
aiRecommendationTools
AI和推荐
1.2%
ticketApplicationTools
工单和应用状态工具
1.2%
notificationTools
通知和邮件工具
0.6%

根据表格数据分析,我们可以得出以下主要发现:

  • 最主要的工具类别:
     日历和邮件相关工具(19.9%)以及租户和品牌管理工具(17.4%)占据了最大份额,共计超过37%的工具分布。
  • 信息处理类工具:
     网页搜索和检索(8.7%)、文件和内容处理(6.8%)以及系统工具(6.8%)构成了第二梯队,反映了基础功能需求。
  • 技术支持类工具:
     内存和存储(6.2%)、数学计算(5.6%)和任务管理(5.6%)形成中等规模的工具类别。
  • 专业领域工具:
     健康检查(3.7%)、数据库(3.1%)和安全工具(3.1%)虽然比例较小,但显示了MCP在特定领域的应用潜力。
  • 小众应用工具:
     包括网络爬虫、Jira工具、金融管理等类别的工具占比均在1-2%之间,表明MCP服务正在向更专业和细分的领域扩展。

这种分布表明,MCP服务目前主要集中在日常办公和系统管理领域,但已经开始向各个专业领域渗透。因此,MCP的安全性变得尤为重要。随着工具类型的多样化和应用场景的扩大,未经授权访问这些服务可能导致敏感信息泄露、系统资源滥用等安全隐患。

结论

基于我们的研究发现,MCP服务在快速普及的同时也面临着严重的安全挑战。未经授权的MCP服务暴露在互联网上,不仅可能导致敏感信息泄露,还可能被攻击者利用来执行恶意命令,对组织的信息安全构成重大威胁。因此,我们强烈建议MCP服务提供方加强访问控制、实施身份认证、定期安全审计,并建立完善的安全响应机制。

另外MCP 于近期(2025/03/26)发布重要更新

此次更新包含两个关键变化:

1. 新的认证框架

MCP 引入了基于 OAuth 2.1 的全面认证框架,显著提升了安全性。新认证机制提供标准化的访问控制,并支持多种授权流程,能有效防范未经授权的访问和潜在安全威胁。

2. 传输协议的改进

协议采用更灵活的 Streamable HTTP 传输替代原有的 HTTP+SSE 方式。这项改进不仅增强了协议的可扩展性,还提升了与现代 Web 基础设施的兼容性,使服务部署和维护更为便捷。

这些更新精准应对了我们此前发现的安全挑战,尤其是在访问控制和服务授权方面的改进,将显著降低未授权访问的风险。

参考

  • https://spec.modelcontextprotocol.io/specification/2025-03-26/changelog/
  • https://modelcontextprotocol.io/docs/concepts/architecture
  • https://github.com/supercorp-ai/supergateway/tree/main
  • https://github.com/sparfenyuk/mcp-proxy
  • https://github.com/microsoft/markitdown/blob/main/packages/markitdown-mcp/src/markitdown_mcp/__main__.py
  • https://github.com/chaitin/SafeLine/blob/695c438ec31f4170920c9903df447f4823dc958f/slmcp/server.py#L43
  • https://github.com/modelcontextprotocol/python-sdk

原文始发于微信公众号(源影安全团队):MCP服务普及中的安全挑战

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月7日00:53:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   MCP服务普及中的安全挑战http://cn-sec.com/archives/3913740.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息