Safeguard
Vulnerability Analysis•

CVE-2025-55213: Critical Policy Enforcement in OpenFGA

CVE-2025-55213 is improper policy enforcement in OpenFGA 1.9.3 and 1.9.4 for some Check and ListObjects calls. Upgrade to v1.9.5 or the 0.2.42 Helm chart.

Safeguard Security Team
4 min read

CVE-2025-55213 is a critical authorization flaw in OpenFGA, the Zanzibar inspired permission engine. In v1.9.3 and v1.9.4, some Check and ListObjects calls enforce policy improperly under specific model conditions. The fix is v1.9.5, or Helm chart 0.2.42 for Kubernetes deployments.

What's affected

  • Product: OpenFGA, the authorization engine, including its Docker image and Helm chart.
  • Affected: Go module and Docker versions 1.9.3 up to but not including 1.9.5, and Helm chart versions 0.2.40 and 0.2.41.
  • Fixed: 1.9.5 for the server and image, and 0.2.42 for the Helm chart.
  • Conditions: you are affected only if you call the Check API or ListObjects with an authorization model that has a relationship directly assignable by more than one userset of the same type, and queries rely on that relationship, and you have userset tuples assigned to it.
  • Workaround: downgrade to 1.9.2 with enable-check-optimizations removed from the OPENFGA_EXPERIMENTALS setting.

The fix is described as backwards compatible. The CVE record says 9.8, but the GitHub advisory rates the issue moderate at 5.8 on CVSS 4.0, with the main impact on downstream systems that trust OpenFGA answers. Read the conditions above to judge your own exposure.

How to check if you're exposed

Start with the version of the server and chart.

openfga version
docker ps --format "{{.Names}} {{.Image}}" | grep -i openfga
helm list --all-namespaces | grep -i openfga

If the version is 1.9.3 or 1.9.4, or the chart is 0.2.40 or 0.2.41, move on to your model. Look for relations that allow more than one userset of the same type to be assigned directly, and check whether your tuples include such usersets for those relations. You can export the model with the OpenFGA CLI or API to review it.

Also check whether the experimental setting enable-check-optimizations is in your OPENFGA_EXPERIMENTALS, since the workaround removes it.

Safeguard has a free in-browser dependency scan at gold.safeguard.sh/scan that checks a manifest or lockfile against known vulnerabilities, and the Gold directory lists affected packages for each CVE.

What to do now

  1. Upgrade the OpenFGA server to v1.9.5 or later, and the Helm chart to 0.2.42 or later.
  2. If you cannot upgrade at once, use the documented workaround: downgrade to 1.9.2 with enable-check-optimizations removed from the experimental settings.
  3. Review your authorization model for the relationship pattern named in the advisory, to understand which checks could have returned an incorrect answer.
  4. Look at access decisions made since you deployed 1.9.3 or 1.9.4 for places where access might have been granted wrongly, and decide whether any need review.
  5. Add a regression test for important permission checks, so an engine upgrade cannot silently change an answer.

Why it matters

The listed weakness is incorrect authorization. An authorization engine exists to answer one question reliably: may this user do this thing? In the affected releases, an optimization path for Check and ListObjects could produce the wrong answer for models of a particular shape. Applications that trust the engine then apply the wrong decision.

That is the reason the score is so high on one scale and moderate on another. The engine itself does not leak data, but everything downstream that depends on its decisions inherits the error. For a permissions service, correctness bugs are security bugs. Pin versions, read release notes before upgrades, and test the decisions that matter most. The CVE is not on the CISA KEV list.

The weakness is classed as CWE-863 (Incorrect Authorization). Severity in the CVE record: critical, CVSS 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H).

Try it yourself

When a clean fix exists, the work is to find every place that runs the old version. This demo shows that step.

Click through it at your own pace, or open it full screen.

Quick check

Am I affected if I run 1.9.4?

Only if your model and data match the conditions: a relationship directly assignable by more than one userset of the same type, with queries and userset tuples that use it. Upgrade anyway.

Is there a workaround?

Yes. The advisory says to downgrade to 1.9.2 with enable-check-optimizations removed from OPENFGA_EXPERIMENTALS.

Sources

Last reviewed: 18 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.