OpenFGA: ListUsers returns a deliberately-excluded user when a `but not` exclusion under a type-bound wildcard is intersected (`and`) with another relation that also grants that userGHSA-g3pg-frfm-pr2m
MEDIUMFix: openfga/openfga@171806cGHSA-g3pg-frfm-pr2m is a medium-severity (CVSS 5.3) CWE-281 vulnerability in github.com/openfga/openfga. A fix is available for github.com/openfga/openfga — see the affected versions and patch details below.
Exploitation Status
No confirmed exploitation observed yet
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for GHSA-g3pg-frfm-pr2m.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
github.com/openfga/openfgaReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
Description
In OpenFGA, the ListUsers API could incorrectly return a user who should have been excluded.
Preconditions
This applies if all of the following are present:
- The authorization model contains a relation defined as an intersection (and) where at least one operand is an exclusion of the form base but not excluded: e.g.
rel1: (public_user but not blocked) and rel2 - The base side of that exclusion is granted through a type-bound public wildcard (e.g. user:*).
- A user excluded by the but not clause is also granted, via a concrete tuple, through another operand of the intersection.
- Your application uses ListUsers to enumerate or enforce access
Fix
Upgrade to OpenFGA v1.18.1 or greater.
Acknowledgements
OpenFGA would like to thank @5ud0er for the detailed report.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/openfga/openfga | all versions | 1.18.1go get github.com/openfga/openfga@v1.18.1 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/openfga/openfga, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update github.com/openfga/openfga to 1.18.1 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-g3pg-frfm-pr2m is resolved across your whole dependency graph.
Workarounds
Put an independent control in front of the weakness: restrict the affected endpoint or interface to trusted networks, require an additional authentication factor or proxy-level check, and invalidate existing sessions and credentials in case the flaw has already been used.
Fixing This On Your OS
If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.
This flaw is in OpenFGA's ListUsers API, which could return a user who should have been excluded by a but-not clause when an intersection used a type-bound public wildcard. Red Hat does not ship OpenFGA as a standalone product. The code is bundled in Grafana's experimental Zanzana authorization engine and Grafana is…
No product-side mitigation is required while Zanzana remains disabled, which is the default. If Zanzana has been turned on, do not use ListUsers results as an access-control decision; use Check for each user and object until Grafana vendors OpenFGA 1.18.1 or later.Source: Red Hat security advisory for GHSA-g3pg-frfm-pr2m (CC BY 4.0)
| Product | Fixed in | Advisory |
|---|---|---|
| Red Hat Hardened Images | grafana13-2-main-13.2.1-0.4.hum1 | RHSA-2026:67605 |
| Red Hat Hardened Images | grafana12-4-main-12.4.10-0.5.hum1 | RHSA-2026:68777 |
| Red Hat Hardened Images | grafana12-4-main-12.4.10-0.6.hum1 | RHSA-2026:68821 |
| Red Hat Hardened Images | grafana13-1-main-13.1.6-0.3.hum1 | RHSA-2026:71040 |
| Red Hat Hardened Images | grafana13-1-main-13.1.6-0.4.hum1 | RHSA-2026:72498 |
Frequently Asked Questions
Is GHSA-g3pg-frfm-pr2m in your dependencies?
Find it across Go, including transitive dependencies.