← console
voxell vciy

CVE-2026-1486: Org.keycloak.protocol.oidc.grants: disabled identity providers are still accepted for jwt authorization grant

ROUTINE

Telemetry drift only. No threshold crossed and no authority ruling changed.

CVE record, CISA KEV and EPSS as of 2026-10-18.

CVEs like this one computed, by meaning

What to do now held facts and links

  1. No fix version is held. The CNA's first reference is the place to look: access.redhat.com
  2. Record your decision, dated and frozen with today's evidence: patch by a date · mitigated by a compensating control · deferred · accepted the risk · not affected
  3. Check your version against the ranges this record publishes.

What it is stated by the CNA

A flaw was found in Keycloak. A vulnerability exists in the jwt-authorization-grant flow where the server fails to verify if an Identity Provider (IdP) is enabled before issuing tokens. The issuer lookup mechanism (lookupIdentityProviderFromIssuer) retrieves the IdP configuration but does not filter for isEnabled=false. If an administrator disables an IdP (e.g., due to a compromise or offboarding), an entity possessing that IdP's signing key can still generate valid JWT assertions that Keycloak accepts, resulting in the issuance of valid access tokens.

weakness
CWE-358 Improperly Implemented Security Check for Standard
affected
Red Hat build of Keycloak 26.4; Red Hat build of Keycloak 26.4.9
versions
No affected-version range in held sources.
fixed in
No fix version in held sources.
fixed by package (from OSV advisories)
org.keycloak:keycloak-services (Maven): 26.4.9; 26.5.3 GHSA-37gf-gmxv-74wv
later fixes (from OSV advisories)
keycloak-services 26.4.9 is inside a range CVE-2025-14082 (GHSA-6q37-7866-h27j) lists as affected. That advisory is fixed in 26.5.0.keycloak-services 26.4.9 is inside a range CVE-2026-18963 (GHSA-4gv3-mc9p-5wqc) lists as affected. That advisory is fixed in 26.4.15.keycloak-services 26.4.9 is inside a range CVE-2026-2575 (GHSA-xv6h-r36f-3gp5) lists as affected. That advisory is fixed in 26.5.4.keycloak-services 26.4.9 is inside a range CVE-2026-2603 (GHSA-x4p7-7chp-64hq) lists as affected. That advisory is fixed in 26.5.5.keycloak-services 26.4.9 is inside a range CVE-2026-3009 (GHSA-m297-3jv9-m927) lists as affected. That advisory is fixed in 26.5.5.keycloak-services 26.4.9 is inside a range CVE-2026-3121 (GHSA-7xf9-4jfc-wgm4) lists as affected. That advisory is fixed in 26.5.6.
severity
8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
assigned by
redhat
published
2026-02-09

check us access.redhat.com access.redhat.com access.redhat.com bugzilla.redhat.com

Exploit code held, dated

exploit code
None held in the PoC-in-GitHub feed. A public repository changes this brief.

What moved held, dated

dateEPSSevent
10 Feb 20260.00045
15 Feb 20260.0005
18 Feb 20260.00018
13 Mar 20260.00021
18 Apr 20260.00025
11 Jun 20260.00029
15 Jun 20260.00449scoring model v2026.06.15
8 Sep 20260.00457
28 Sep 20260.00467
7 Oct 20260.005

10 observations held. A step marked with a scoring model moved because the measurement was replaced, not because the vulnerability changed.

Outside the record researched, cited

This section reads the record's references and adds cited findings from outside it. It needs an account. Everything above is held facts and is complete without it.

Sign in to add the researched section

What would change this brief held, dated

CISA KEV
Not listed in the catalogue we hold. A listing changes this brief.
exploit probability
0.01 on 2026-10-07 (FIRST's EPSS, a probability and not evidence of exploitation). Next band line: 10% (0.10). Crossing a line changes this brief.
fix
No fix version is held. One published by the CNA or OSV changes this brief.

Watch this CVE What counts as a move

How to check this

Every value above is held with two dates: when it was true upstream (as_of) and when we recorded it (tx_from). Re-derive the exploit probability as it stood on any date:

SELECT value, source, source_version, as_of, tx_from
FROM volatile_valid_as_of('CVE-2026-1486', '2026-10-31T23:59:59.999999Z', now());