Skip to main content

Keycloak CVE-2026-90997

| EUVDEUVD-2026-82396 HIGH
Authentication Bypass by Capture-replay (CWE-294)
2026-09-17 secalert@redhat.com
7.4
CVSS 3.1 · Vendor: redhat
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Intercept valid single-use artifact (JWT/DPoP/TOTP)
  2. Delivery
    Identify stateless Keycloak on MySQL/MariaDB
  3. Exploit
    Replay captured artifact to token/login endpoint
  4. Execution
    Row-count mismatch bypasses replay check
  5. Impact
    Gain unauthorized token-endpoint or login access

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Replay attack prevention
Exploitation Conditions

Exploitation requires the target to run Keycloak in stateless mode with a MySQL or MariaDB backend - this specific driver/application row-count semantic mismatch is the root cause and is a hard prerequisite (PostgreSQL/other backends or non-stateless deployments are not indicated as affected). The attacker must also intercept a still-valid single-use security artifact (a JWT client assertion, DPoP proof, or TOTP code) before replaying it, which is what the CVSS AC:H reflects. Limiting factors: the non-default stateless+MySQL/MariaDB configuration, the need for interception capability (network position or access to captured artifacts, potentially requiring defeat of TLS), and the narrow validity window of single-use artifacts. No prior authentication (PR:N) or user interaction (UI:N) on the attacker's part is required once a valid artifact is captured.

Impact

This is a genuine, credible authentication-bypass finding rather than an inflated high-CVSS score. The CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N, 7.4 High) is internally consistent with CWE-294 (Authentication Bypass by Capture-replay): network-reachable, no privileges needed (the replayed artifact IS the authentication), but AC:H correctly reflects that the attacker must first intercept a valid single-use artifact AND the target must run a specific deployment (stateless mode on MySQL/MariaDB). No EPSS score, no CISA KEV listing, and no public exploit code were provided, so there is no signal of active or automatable exploitation - exploitation status is 'no public exploit identified at time of analysis'. The dual gate (interception capability + non-default DB/stateless configuration) means this is a targeted-opportunity flaw against specific Keycloak deployments, not a mass-exploitable internet-wide bug, despite the network attack vector. The primary limiting factor conflicting with the network vector is the AC:H interception requirement - worth verifying whether the artifacts traverse TLS (which would further raise the interception bar). Given Keycloak's role as a central identity broker, successful replay against the token endpoint or login flow has high blast radius, so patching should be prioritized wherever the vulnerable configuration exists.

Exploit ScenarioDerived

An attacker positioned to observe authentication traffic against a Keycloak instance running in stateless mode backed by MySQL or MariaDB captures a single-use security artifact - a JWT client assertion, DPoP proof, or TOTP code - and replays it to the token endpoint or login flow. Because the row-count mismatch between the DB driver and Keycloak's logic causes the replay-detection check to falsely believe the artifact has not been used, the replay succeeds and grants unauthorized access. No public proof-of-concept is available at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 17, 2026

Replay protection bypass in Keycloak deployed in stateless mode with a MySQL or MariaDB backend allows remote, unauthenticated attackers who have captured a still-valid single-use artifact - such as a JWT client assertion, a DPoP proof, or a TOTP code - to replay it against the token endpoint or login flow and obtain unauthorized access. The weakness is a mismatch in row-count semantics between the MySQL/MariaDB database driver and Keycloak's application logic, which silently defeats the one-time-use check; the assessed vector (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N, 7.4) reflects high confidentiality and integrity impact tempered by the hard configuration prerequisite and the requirement to intercept a valid artifact before it expires. At time of analysis no public exploit identified at time of analysis and the flaw has not been confirmed actively exploited (CISA KEV); the non-default stateless plus MySQL/MariaDB deployment combination, the need for a network position capable of capturing artifacts, and the narrow validity window keep practical exploitability constrained.

RemediationAI

No vendor-released patch identified at time of analysis, so remediation should begin with configuration and exposure reduction while tracking the advisory at https://access.redhat.com/security/cve/cve-2026-90997 and the upstream repository at https://github.com/keycloak/keycloak for a fixed release. The single most effective compensating control is to break the hard prerequisite: either stop running Keycloak in stateless mode so the one-time-use decision no longer depends on the driver's row-count reporting, or migrate the backend away from MySQL/MariaDB to a database whose driver semantics match Keycloak's expectations (PostgreSQL is the obvious candidate given PostgreSQL is not indicated as affected). The trade-off is real - leaving stateless mode reintroduces shared-state dependencies and can reduce horizontal scalability and complicate rolling upgrades, while migrating databases means a schema/data migration with its own downtime risk, so this should be scheduled rather than done ad hoc. Where neither change is immediately possible, shrink the attacker's exploitation window by shortening TOTP validity and token/assertion lifetimes and tightening clock skew tolerance, accepting increased user re-authentication friction and more failed logins as a side effect. Harden against the interception prerequisite by enforcing TLS end-to-end with strong cipher suites, adding mutual TLS or client certificate binding where feasible, and segmenting token-endpoint traffic so an attacker cannot easily position to capture artifacts; note that these measures do not fix the underlying replay flaw, they only raise the cost of satisfying its precondition. Finally, add detection around the token endpoint and login flow by alerting on repeated use of the same jti, client assertion, DPoP proof, or TOTP value within its validity window, which can surface exploitation attempts even while the defect remains unpatched.

Affected VersionsENISA

KeyCloak 26.7.0 <26.7.4

Affected Packages

euvd keycloak fix: 26.7.4

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Keycloak's replay protection for one-time security artifacts relies on the application correctly interpreting the outcome of the database write/check it performs for each artifact: if the persistence layer reports that an artifact was newly stored versus already present, Keycloak can reject a duplicate. Under stateless mode, Keycloak minimizes reliance on its persisted/in-memory session stores and leans more heavily on that backend check, making the correctness of the driver's reported row counts security-critical. MySQL and MariaDB drivers do not uniformly report 'affected rows' the same way, and the driver's notion of rows matched versus rows actually changed can diverge from what Keycloak's logic expects, so a duplicate artifact may be treated as a new one and the one-time-use decision fails open. This is CWE-294 (Authentication Bypass by Capture-replay): the flaw is not in cryptography or token generation but in the check that is supposed to make captured artifacts worthless on a second use. The affected deployment surface is therefore narrow and specific - Keycloak running in stateless mode against MySQL or MariaDB - while PostgreSQL and other backends, and non-stateless deployments, are not indicated as affected in the available data. The applicable CPE strings were not included in the provided intelligence, so exact version bounds should be confirmed from the Red Hat advisory and the upstream Keycloak repository referenced in the source data. Because the CVSS vector contains PR:N and UI:N, no prior authentication or victim interaction is required on the attacker's side once a valid artifact has been intercepted; AC:H reflects the interception and timing prerequisites rather than any authentication barrier.

Know when Keycloak gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (redhat) PRIMARY 7.4 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 7.4 HIGH

Network-reachable token/login endpoint (AV:N); AC:H because attacker must intercept a valid single-use artifact and target must run stateless MySQL/MariaDB; replayed artifact itself is the auth so PR:N; no availability impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Red Hat 7.4 HIGH

Primary rating from Vendor (redhat).

CVSS VectorVendor: redhat

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
Sep 17, 2026 - 20:19 EUVD
CVE Published
Sep 17, 2026 - 19:17 nvd
HIGH 7.4

DescriptionCVE.org

A flaw was found in Keycloak. When deployed in stateless mode with MySQL or MariaDB, a mismatch in row-count semantics between the database driver and Keycloak's application logic allows an attacker to bypass replay protection. This vulnerability enables an attacker who intercepts single-use security artifacts, such as JWT client assertions, DPoP proofs, or one-time password (TOTP) codes, to replay them. Successful exploitation grants unauthorized access to the token endpoint or login flow.

Executive ViewAI

Why It Matters

Keycloak deployments configured in stateless mode against a MySQL or MariaDB backend carry a replay-protection flaw that allows an attacker who has captured a still-valid one-time credential - such as a JWT client assertion, a DPoP proof, or a TOTP code - to reuse it and gain unauthorized access to the applications and data that Keycloak protects. Because Keycloak is typically the identity trust anchor for the wider application estate, a successful exploit can bypass single sign-on controls and expose high-value systems while permitting unauthorized changes under a legitimate identity. Leadership should care because there is currently no vendor patch, so risk reduction depends on configuration changes that may alter session behavior across every dependent application, and on network and monitoring controls to prevent credential capture in the first place.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: migrate affected instances out of stateless mode into stateful session mode, or move the backing datastore off MySQL/MariaDB to a supported alternative such as PostgreSQL; shorten the validity window of JWT client assertions, DPoP proofs, and TOTP codes to reduce the replay opportunity; enforce strict transport security and network segmentation to make interception of a live artifact harder; and deploy monitoring for repeated submission of the same one-time-use artifact at the token endpoint and login flow so attempted replays are detected and blocked. Exploitation requires remote network access with no authentication (CVSS vector PR:N), but is limited to deployments that are both stateless and MySQL/MariaDB-backed and to attackers who can capture a still-valid artifact, so inventory and configuration change remain the most effective near-term controls.

Threat Intelligence Overview

EPSS Score
0.4%
Top 66% exploitable
Prevalence
High
Keycloak is a widely-deployed open-source and enterprise IAM/SSO platform
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

37
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +37
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2023-48795 MEDIUM POC
5.9 Dec 18

The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot

CVE-2014-3709 HIGH POC
8.8 Oct 18

The org.keycloak.services.resources.SocialResource.callback method in JBoss KeyCloak before 1.0.3.Final allows remote at

CVE-2023-6563 HIGH POC
7.7 Dec 14

An unconstrained memory consumption vulnerability was discovered in Keycloak. Rated high severity (CVSS 7.7), this vulne

CVE-2022-1466 MEDIUM POC
6.5 Apr 26

Due to improper authorization, Red Hat Single Sign-On is vulnerable to users performing actions that they should not be

CVE-2017-7474 CRITICAL
9.8 May 12

It was found that the Keycloak Node.js adapter 2.5 - 3.0 did not handle invalid tokens correctly. Rated critical severit

CVE-2026-76187 CRITICAL
9.8 Sep 15

Authentication bypass in the Apache Airflow Keycloak auth manager provider (apache-airflow-providers-keycloak below 0.10

CVE-2022-1245 CRITICAL
9.8 Jul 08

A privilege escalation flaw was found in the token exchange feature of keycloak. Rated critical severity (CVSS 9.8), thi

CVE-2019-14910 CRITICAL
9.8 Dec 05

A vulnerability was found in keycloak 7.x, when keycloak is configured with LDAP user federation and StartTLS is used in

CVE-2021-20195 CRITICAL
9.6 May 28

A flaw was found in keycloak in versions before 13.0.0. Rated critical severity (CVSS 9.6), this vulnerability is remote

CVE-2023-6134 MEDIUM POC
5.4 Dec 14

A flaw was found in Keycloak that prevents certain schemes in redirects, but permits them if a wildcard is appended to t

CVE-2022-0225 MEDIUM POC
5.4 Aug 26

A flaw was found in Keycloak. Rated medium severity (CVSS 5.4), this vulnerability is remotely exploitable, low attack c

CVE-2020-10770 MEDIUM POC
5.3 Dec 15

A flaw was found in Keycloak before 13.0.0, where it is possible to force the server to call out an unverified URL using

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy