Bug 2537165 (CVE-2026-93999)

Summary: CVE-2026-93999 keycloak-services: keycloak-services: Token refresh continues issuing tokens for disabled audience clients
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security <prodsec-ir-bot>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: aschwart, aszczucz, boliveir, drichtar, mposolda, pjindal, rmartinc, ssilvert, sthorger, vmuzikar
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in the OIDC protocol implementation of Keycloak, an open-source identity and access management solution. The issue occurs during the token refresh process when the server restores requested audiences from stored client IDs. Keycloak fails to verify if the target audience client is still enabled before issuing a new access token. This allows an application with an existing refresh token to continue obtaining valid access tokens for a disabled client, potentially bypassing administrative access controls for resource servers that rely on offline JWT validation.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description OSIDB Bzimport 2026-09-19 14:00:25 UTC
A Missing Authorization vulnerability was identified in the org.keycloak.protocol.oidc package of Keycloak. The flaw exists in the token refresh logic including standard token exchange refresh flows where the server restores audience claims from the original session without checking the current status of the target audience client via ClientModel.isEnabled.
An attacker with a valid refresh token obtained while a target audience client was enabled can continue to refresh that token even after an administrator has disabled the target client. Successful exploitation allows the attacker to obtain newly signed access tokens containing the disabled client in the aud claim. This enables the attacker to maintain unauthorized access to resource servers that perform offline JWT verification, effectively bypassing the administrative action intended to revoke access.