CVE-2025-55213 Overview
CVE-2025-55213 is an Authorization Bypass vulnerability affecting OpenFGA, a high-performance and flexible authorization/permission engine built for developers and inspired by Google Zanzibar. The vulnerability exists in OpenFGA versions v1.9.3 to v1.9.4, including Helm chart versions openfga-0.2.40 through openfga-0.2.41, where improper policy enforcement occurs when certain Check and ListObject API calls are executed. This flaw can lead to incorrect authorization decisions, potentially allowing unauthorized access to protected resources.
Critical Impact
Improper policy enforcement in authorization checks can result in unauthorized access to protected resources when multiple usersets of the same type are configured, bypassing intended access controls.
Affected Products
- OpenFGA v1.9.3 to v1.9.4 (Docker)
- OpenFGA Helm Charts openfga-0.2.40 to openfga-0.2.41
- OpenFGA Core Engine (affected versions)
Discovery Timeline
- 2025-08-18 - CVE-2025-55213 published to NVD
- 2026-01-14 - Last updated in NVD database
Technical Details for CVE-2025-55213
Vulnerability Analysis
The vulnerability stems from an improper optimization in OpenFGA's authorization check logic. When evaluating permissions through the Check and ListObject API endpoints, the system uses different resolver strategies based on the relationship types involved. The flawed logic incorrectly applied a weight-2 resolver optimization when multiple directly related userset types of the same type were present, leading to incorrect authorization decisions.
The root issue lies in the internal/graph/check.go file where the resolver selection logic failed to account for scenarios with multiple usersets sharing the same type. In these cases, the optimization incorrectly relied solely on object ID matching without considering the relation, which is critical for accurate permission evaluation in complex authorization models.
Root Cause
The vulnerability is classified as CWE-863 (Incorrect Authorization). The authorization engine's userset resolver optimization was applied too broadly, causing it to skip essential relation checks when multiple usersets of the same type existed in the authorization model. The original code used UsersetUseWeight2Resolver() without first verifying that fewer than two directly related userset types were present, leading to authorization decisions based on incomplete data.
Attack Vector
An attacker with low-privilege access could exploit this vulnerability over the network by crafting authorization requests that target resources protected by authorization models containing multiple usersets of the same type. The attack requires no user interaction and could result in unauthorized access to sensitive data or functionality in applications relying on OpenFGA for access control decisions.
The vulnerability affects the downstream systems that trust OpenFGA's authorization decisions, potentially exposing high confidentiality, integrity, and availability impacts on those systems while the OpenFGA service itself remains unaffected.
// Security patch showing the fix in internal/graph/check.go
// Source: https://github.com/openfga/openfga/commit/1a7e0e37fc4777c824b2386cac4867a66f3480b0
userType := tuple.GetType(reqTupleKey.GetUser())
if !isUserset {
- if typesys.UsersetUseWeight2Resolver(objectType, relation, userType, directlyRelatedUsersetTypes) {
+ if len(directlyRelatedUsersetTypes) < 2 && typesys.UsersetUseWeight2Resolver(objectType, relation, userType, directlyRelatedUsersetTypes) {
+ // If there are more than 1 directly related userset types of the same type, we cannot do userset optimization because
+ // we cannot rely on the fact that the object ID matches. Instead, we need to take into consideration
+ // on the relation as well.
resolver = c.weight2Userset
span.SetAttributes(attribute.String("resolver", "weight2"))
} else if typesys.UsersetUseRecursiveResolver(objectType, relation, userType) {
Source: GitHub Commit Changes
Detection Methods for CVE-2025-55213
Indicators of Compromise
- Unexpected authorization grants for users who should not have access to specific resources
- Anomalous Check or ListObject API responses returning true for previously denied relationships
- Authorization audit logs showing access patterns inconsistent with defined policies
- Increased access to protected resources from low-privilege accounts
Detection Strategies
- Review OpenFGA audit logs for authorization decisions involving multiple userset types
- Compare authorization decisions between affected versions and patched versions for consistency
- Monitor for unexpected permission grants in applications relying on OpenFGA
- Implement regression testing for authorization models containing multiple usersets of the same type
Monitoring Recommendations
- Enable detailed logging for OpenFGA Check and ListObject API endpoints
- Set up alerts for unusual patterns in authorization decision outcomes
- Monitor deployment versions to ensure patched versions are running across all environments
- Implement authorization decision auditing at the application layer as a secondary control
How to Mitigate CVE-2025-55213
Immediate Actions Required
- Upgrade OpenFGA to version 1.9.5 or later immediately
- For Helm deployments, upgrade to chart version openfga-0.2.42 or later
- Review authorization models for configurations with multiple usersets of the same type
- Audit recent authorization decisions for potential unauthorized access
- Consider implementing additional application-layer authorization checks as defense-in-depth
Patch Information
OpenFGA has released version 1.9.5 which contains the security fix for this vulnerability. The patch adds a check to ensure the weight-2 userset resolver optimization is only applied when fewer than two directly related userset types exist, preventing the authorization bypass condition.
The fix is available through the following channels:
Workarounds
- Temporarily simplify authorization models to avoid configurations with multiple usersets of the same type
- Implement additional authorization validation at the application layer
- Consider deploying temporary access restrictions while upgrading to the patched version
- Use network segmentation to limit exposure of OpenFGA API endpoints
# Upgrade OpenFGA using Helm
helm repo update
helm upgrade openfga openfga/openfga --version 0.2.42
# Or upgrade Docker deployment
docker pull openfga/openfga:v1.9.5
docker-compose up -d openfga
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

