FastGPT Stored MCP Tool URL SSRF 漏洞总结 漏洞概述 FastGPT 在 MCP 工具处理中存在不一致的 SSRF 防护漏洞。虽然直接 MCP 预览端点已拒绝内部/私有网络 URL,但 MCP 工具的创建/更新端点仍允许保存内部 MCP 服务器 URL。这些存储的 URL 可在后续工作流执行中被使用,导致后端连接到内部目标。 影响范围 受影响版本:<= 4.14.16 修复版本:4.14.17 CVSS 评分:6.3 (中等) 攻击向量:网络可访问 攻击复杂度:低 所需权限:认证用户 + MCP 工具创建/管理权限 用户交互:不需要 影响:机密性、完整性、可用性取决于可达的内部服务和 MCP 行为 受影响的部署包括: 允许用户创建或管理 MCP 工具的 FastGPT 实例 后端可访问内部服务、本地主机服务、元数据端点、私有网络资源或其他网络受限系统的自托管或多租户 FastGPT 部署 修复方案 通过 PR #6826 修复,添加了共享的 MCP URL 验证逻辑: 1. 在 MCP 工具持久化之前强制执行 URL 验证 2. 在工作流执行前重新验证存储的 MCP URL 3. 统一使用 策略拒绝内部 URL 修复涉及的关键文件: 新增的辅助函数: 该函数封装了 FastGPT 现有的内部地址策略: POC 代码/利用步骤 1. 运行 PR #6826 之前的易受攻击的 FastGPT 版本 2. 以具有创建或管理 MCP 工具权限的用户身份认证 3. 创建或更新具有内部 URL 的 MCP 工具,例如: 4. 观察到 MCP 工具创建/更新路径会保存内部 URL 作为存储的工具配置 5. 将此与直接 MCP 预览端点进行比较,后者拒绝相同的内部 URL 6. 将存储的 MCP 工具添加到工作流 7. 执行工作流 8. 观察到工作流运行时加载存储的 MCP URL 并到达 MCPClient 构造,而无需应用相同的内部地址验证 预期漏洞流程: 修复后流程: 回归测试覆盖: 测试确认: localhost MCP 端点被拒绝 公共 MCP 端点保持允许 补丁参考:https://github.com/labring/FastGPT/pull/6826