<Vulnerability name="CVE-2026-55689">
    <DocumentDistribution xml:lang="en">Copyright © 2012 Red Hat, Inc. All rights reserved.</DocumentDistribution>
    <ThreatSeverity>Moderate</ThreatSeverity>
    <PublicDate>2026-07-09T21:06:22</PublicDate>
    <Bugzilla id="2498818" url="https://bugzilla.redhat.com/show_bug.cgi?id=2498818" xml:lang="en:us">
openfga: OpenFGA: OIDC audience validation skipped when --authn-oidc-audience is unset
    </Bugzilla>
    <CVSS3 status="draft">
        <CVSS3BaseScore>6.8</CVSS3BaseScore>
        <CVSS3ScoringVector>CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N</CVSS3ScoringVector>
    </CVSS3>
    <CWE>CWE-287</CWE>
    <Details xml:lang="en:us" source="Mitre">
OpenFGA is an authorization/permission engine built for developers. Prior to 1.18.0, OpenFGA's OIDC authenticator skipped JWT audience validation when authn.method was set to oidc, authn.oidc.issuer was configured, and authn.oidc.audience was not set, allowing a token minted for an unrelated service by the same identity provider to authenticate to OpenFGA. This issue is fixed in 1.18.0.
    </Details>
    <Details xml:lang="en:us" source="Red Hat">
OpenFGA is an authorization/permission engine built for developers. Prior to 1.18.0, when OpenFGA is configured to use OIDC authentication (authn.method=oidc, authn.oidc.issuer set) but authn.oidc.audience is left unset, the JWT audience claim on incoming bearer tokens is not validated. As a result, a validly-signed OIDC access token issued by the same identity provider for a completely different, unrelated application can be accepted by OpenFGA as a valid credential, allowing an attacker holding such a token to authenticate to OpenFGA and perform unauthorized authorization queries or writes. This issue is fixed in OpenFGA 1.18.0.
    </Details>
    <Statement xml:lang="en:us">
OpenFGA, when run with OIDC authentication enabled (--authn-oidc-issuer) but with --authn-oidc-audience left unset, does not validate the JWT audience claim on incoming bearer tokens. This means a validly-signed OIDC access token issued by the same identity provider for a completely different application/audience will be accepted by OpenFGA as a valid credential. An attacker who can obtain such a token, for example one issued to a lower-privileged or unrelated application at the same IdP, could use it to authenticate to OpenFGA and perform authorization queries or writes they should not be permitted to make.

This flaw only affects deployments that explicitly enable OpenFGA's OIDC authentication method and leave --authn-oidc-audience unset. Deployments using OpenFGA's default (pre-shared key) authentication, or that embed OpenFGA purely as an internal library without exposing its standalone OIDC-authenticated API such as Grafana's Zanzana engine, are less likely to be exposed to this specific issue, though this has not been independently confirmed for every embedding product.
    </Statement>
    <Mitigation xml:lang="en:us">
Administrators running OpenFGA with OIDC authentication enabled should set --authn-oidc-audience to the expected audience value for their deployment, restricting accepted tokens to those issued for OpenFGA itself. Upgrading to OpenFGA 1.18.0 or later, which restores audience validation by default, is the preferred long-term remediation.
    </Mitigation>
    <PackageState cpe="cpe:/a:redhat:multicluster_globalhub">
        <ProductName>Multicluster Global Hub</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>multicluster-globalhub/multicluster-globalhub-grafana-rhel9</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:acm:2">
        <ProductName>Red Hat Advanced Cluster Management for Kubernetes 2</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>rhacm2/acm-grafana-rhel9</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:ceph_storage:6">
        <ProductName>Red Hat Ceph Storage 6</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>rhceph/rhceph-6-dashboard-rhel9</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:ceph_storage:7">
        <ProductName>Red Hat Ceph Storage 7</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>rhceph/grafana-rhel9</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:ceph_storage:8">
        <ProductName>Red Hat Ceph Storage 8</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>rhceph/grafana-rhel9</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:ceph_storage:9">
        <ProductName>Red Hat Ceph Storage 9</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>rhceph/grafana-rhel10</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/o:redhat:enterprise_linux:10">
        <ProductName>Red Hat Enterprise Linux 10</ProductName>
        <FixState>Fix deferred</FixState>
        <PackageName>grafana</PackageName>
    </PackageState>
    <References xml:lang="en:us">
https://www.cve.org/CVERecord?id=CVE-2026-55689
https://nvd.nist.gov/vuln/detail/CVE-2026-55689
https://github.com/openfga/helm-ch
https://github.com/openfga/helm-charts/releases/tag/openfga-0.3.9
https://github.com/openfga/openfga/commit/44596773b2e62738720ef215bf7fa04352954271
https://github.com/openfga/openfga/releases/tag/v1.18.0
https://github.com/openfga/openfga/security/advisories/GHSA-hcxc-wf8j-23hv
    </References>
</Vulnerability>