CVE-2026-24851 Overview
CVE-2026-24851 is an Improper Authorization vulnerability (CWE-863) affecting OpenFGA, a high-performance and flexible authorization/permission engine built for developers and inspired by Google Zanzibar. The vulnerability allows improper policy enforcement when certain Check calls are executed, potentially leading to unauthorized access to protected resources in downstream systems that rely on OpenFGA for authorization decisions.
Critical Impact
Applications relying on OpenFGA for authorization decisions may incorrectly grant access to protected resources due to improper policy enforcement during Check calls, potentially compromising the confidentiality and integrity of downstream systems.
Affected Products
- OpenFGA versions v1.8.5 to v1.11.2
- Helm chart versions openfga-0.2.22 to openfga-0.2.51
- Docker images v1.8.5 to v1.11.2
Discovery Timeline
- 2026-02-06 - CVE-2026-24851 published to NVD
- 2026-02-06 - Last updated in NVD database
Technical Details for CVE-2026-24851
Vulnerability Analysis
This vulnerability represents an authorization bypass condition that occurs under specific model configurations in OpenFGA. The improper policy enforcement manifests when Check calls evaluate authorization tuples in a manner that does not correctly account for the distinction between type-bound public access and type-bound non-public access relationships.
The exploitation requires a specific combination of model configuration and tuple assignments. The authorization model must have a relation that is directly assignable by both type-bound public access and type-bound non-public access. When tuples are assigned in a particular pattern—specifically when there exists a tuple for a different object with an object ID that is lexicographically larger but shares the same user and relation with non-public type binding—the Check call may return incorrect authorization decisions.
This vulnerability has downstream system impact, as indicated by the scope change in the security analysis. While the vulnerable OpenFGA component itself may not directly expose confidential data, applications relying on its authorization decisions may incorrectly grant access to protected resources.
Root Cause
The root cause is improper authorization logic (CWE-863) in the OpenFGA Check call implementation. The authorization engine fails to correctly enforce policy boundaries when evaluating tuples that combine public and non-public type-bound access patterns. The lexicographic ordering of object IDs appears to influence the evaluation order or caching behavior in a way that causes incorrect authorization results.
Attack Vector
Exploitation of this vulnerability requires network access and authenticated access to the OpenFGA instance. An attacker would need to:
- Identify an OpenFGA deployment using a vulnerable version (v1.8.5 through v1.11.2)
- Ensure the authorization model contains a relation with both type-bound public access and type-bound non-public access assignments
- Craft or identify tuple configurations where object IDs with lexicographically larger values have non-public type-bound relationships
- Execute Check calls that trigger the improper policy enforcement condition
The vulnerability requires specific preconditions to be present in the authorization model, which adds complexity to exploitation but does not eliminate the risk in affected deployments. See the GitHub Security Advisory for complete technical details on the vulnerability mechanism.
Detection Methods for CVE-2026-24851
Indicators of Compromise
- Unexpected authorization successes in audit logs for users who should not have access to specific resources
- Check call responses that inconsistently return different authorization results for semantically identical queries
- Anomalous access patterns where users gain access to resources through lexicographically ordered object relationships
Detection Strategies
- Audit OpenFGA Check call logs for authorization decisions that contradict expected policy outcomes
- Review authorization models for relations that combine type-bound public access with type-bound non-public access patterns
- Implement regression testing for authorization decisions across different object ID orderings
- Monitor for unexpected changes in authorization behavior after tuple modifications
Monitoring Recommendations
- Enable comprehensive logging for all Check calls with input parameters and results
- Implement alerting for authorization grant patterns that deviate from baseline behavior
- Periodically audit tuple assignments for configurations that match the vulnerable pattern
- Deploy canary checks that verify expected authorization denials remain enforced
How to Mitigate CVE-2026-24851
Immediate Actions Required
- Upgrade OpenFGA to version v1.11.3 or later immediately
- Audit authorization models for relations with combined public and non-public type-bound access
- Review recent authorization decisions for potentially impacted resources
- Implement additional authorization checks at the application layer as defense-in-depth
Patch Information
The vulnerability is fixed in OpenFGA v1.11.3. Organizations should upgrade to this version or later. The fix is available through:
- GitHub Release v1.11.3
- Updated Helm charts (versions after openfga-0.2.51)
- Updated Docker images (v1.11.3 and later)
For detailed information about the vulnerability and fix, refer to the GitHub Security Advisory GHSA-jq9f-gm9w-rwm9.
Workarounds
- If immediate upgrade is not possible, review and restructure authorization models to avoid combining type-bound public access with type-bound non-public access on the same relation
- Implement application-layer authorization checks as an additional verification layer
- Restrict network access to OpenFGA instances to reduce exposure while planning upgrades
- Consider temporarily removing type-bound public access tuples from affected relations until the upgrade is complete
# Upgrade OpenFGA using Helm
helm repo update
helm upgrade openfga openfga/openfga --version 0.2.52
# Verify the upgraded version
kubectl exec -it deployment/openfga -- openfga version
# Expected output: v1.11.3 or later
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

