# CVE-2026-103112: Keycloak-services: keycloak-services: account takeover via authentication race using reset-credentials path

Status: published. Published: 2026-11-05. Updated: 2026-11-06.

A flaw was found in the authentication session handling of the keycloak-services component in Keycloak. The issue occurs because the system fails to verify if an authenticator is valid for the current authentication flow when switching between the standard authentication path and the reset credentials path. An authenticated attacker can exploit this by triggering a race condition during the credential reset process to associate their successful authentication state with another user's session. This can result in the attacker gaining full access to the victim's account and changing their password.

## Remediation

- workaround: --- CME Mitigation Guidance (2026-11-06) ---
Disclaimer: The following mitigation solutions are provided as a courtesy, pending the application of an official patch. This content was generated utilizing AI tools in conjunction with data from https://cmetaxonomy.org. Customers are advised to independently evaluate and test these temporary mitigations within their own infrastructure.

The highest-value action is to validate that the requested authenticator ID belongs to the active execution flow when switching between authenticate and reset-credentials endpoints in keycloak-services: upgrade to Red Hat build of Keycloak 26.4.17, 26.6.8 (or the fixed Rhbk/Keycloak Rhel/Keycloak Services builds), which validate that the requested authenticator ID is present in the active execution flow when switching between authenticate and reset-credentials endpoints, closing concurrent race condition between reset-credentials and authenticate endpoints during flow switching. Until patched, this is a concern on Keycloak deployments with Forgot Credentials enabled and users without two-factor authentication, so Enforce two-factor authentication for all realm users or disable the Forgot Credentials feature to prevent cross-flow identity binding. These controls limit blast radius and contain exploitation, but they do not fix the underlying authentication race condition defect — apply the upstream patch to fully remediate.

Highest-impact CME: CME-801 Multi-Factor Authentication (MFA) (high) (source: CNA: redhat)

## Affected products and versions

- Red Hat / Red Hat build of Keycloak 26.4 (rhbk/keycloak-operator-bundle): ≥ 26.4.17-2; < * (unaffected, rpm). Source: CNA: redhat
- Red Hat / Red Hat build of Keycloak 26.4 (rhbk/keycloak-rhel9): ≥ 26.4-29; < * (unaffected, rpm). Source: CNA: redhat
- Red Hat / Red Hat build of Keycloak 26.4 (rhbk/keycloak-rhel9-operator): ≥ 26.4-30; < * (unaffected, rpm). Source: CNA: redhat
- Red Hat / Red Hat build of Keycloak 26.4.17 (keycloak-services): Version range not reported. Source: CNA: redhat
- Red Hat / Red Hat build of Keycloak 26.4.17 (rhbk/keycloak-rhel9): Version range not reported. Source: CNA: redhat
- Red Hat / Red Hat build of Keycloak 26.6 (rhbk/keycloak-operator-bundle): ≥ 26.6.8-2; < * (unaffected, rpm). Source: CNA: redhat
- Red Hat / Red Hat build of Keycloak 26.6 (rhbk/keycloak-rhel9): ≥ 26.6-24; < * (unaffected, rpm). Source: CNA: redhat
- Red Hat / Red Hat build of Keycloak 26.6 (rhbk/keycloak-rhel9-operator): ≥ 26.6-24; < * (unaffected, rpm). Source: CNA: redhat
- Red Hat / Red Hat build of Keycloak 26.6.8 (keycloak-services): Version range not reported. Source: CNA: redhat
- Red Hat / Red Hat build of Keycloak 26.6.8 (rhbk/keycloak-rhel9): Version range not reported. Source: CNA: redhat
- Red Hat / Red Hat Single Sign-On 7 (keycloak-services): Version range not reported. Source: CNA: redhat

## Severity and prioritization

- CVSS 3.1: 7.5 (high); CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H; source: CNA: redhat

- CVSS 3.1: 7.5 (high); CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H; source: NVD: secalert@redhat.com

- CISA KEV: No listing in collected sources

- EPSS: 0.29% as of 2026-11-06; percentile 21.92%

- SSVC: Not available

- Weaknesses: CWE-362

## Exploit evidence

No exploit evidence in collected sources. This is not proof of no exploitation.

## References

- https://access.redhat.com/errata/RHSA-2026:95759 (CNA: redhat; vendor-advisory, x_refsource_REDHAT)

- https://access.redhat.com/errata/RHSA-2026:95760 (CNA: redhat; vendor-advisory, x_refsource_REDHAT)

- https://access.redhat.com/errata/RHSA-2026:95761 (CNA: redhat; vendor-advisory, x_refsource_REDHAT)

- https://access.redhat.com/errata/RHSA-2026:95762 (CNA: redhat; vendor-advisory, x_refsource_REDHAT)

- https://access.redhat.com/security/cve/CVE-2026-103112 (CNA: redhat; vdb-entry, x_refsource_REDHAT)

- https://access.redhat.com/errata/RHSA-2026:95759 (secalert@redhat.com)

- https://access.redhat.com/errata/RHSA-2026:95760 (secalert@redhat.com)

- https://access.redhat.com/errata/RHSA-2026:95761 (secalert@redhat.com)

- https://access.redhat.com/errata/RHSA-2026:95762 (secalert@redhat.com)

- https://access.redhat.com/security/cve/CVE-2026-103112 (secalert@redhat.com)

## Provenance

- CNA: redhat: https://www.cve.org/CVERecord?id=CVE-2026-103112; retrieved 2026-11-06; source updated 2026-11-06

- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-103112; retrieved 2026-11-06; source updated 2026-11-06

- FIRST EPSS: https://api.first.org/data/v1/epss?cve=CVE-2026-103112; retrieved 2026-11-06; source updated Not reported

Revision: 281c598fa42ece9ae5911e067716cd3e37ecdcd2b3de7b35f219d786ffc926f2

Canonical: https://y2.dev/cve/CVE-2026-103112

## Agent and API access

Public CVE pages, Markdown, and JSON are free to read without an account or API key.

- Public catalog: https://y2.dev/cve/index.json. Follow nextCursor with the same search, filters, sort, and limit (1–100). A null cursor marks the end.

- WebMCP: search_cve_disclosures, get_cve_disclosure, get_cve_page_markdown, get_y2_cve_access. Available in compatible browsers.

- Cyber API: https://api.y2.dev/api/v2/cyber/cves and https://api.y2.dev/api/v2/cyber/cves/{cveId}.

- Y2 Pro or Elite: create a workspace API key with the intel:cyber scope and send Authorization: Bearer <Y2_API_KEY>. Setup: https://y2.dev/docs/api/create-key.

- x402: Pay per request without an account or API key. Omit Authorization, read the HTTP 402 PAYMENT-REQUIRED challenge, validate its current requirements, and retry with PAYMENT-SIGNATURE through an authorized payment client. These browser tools never make payments. Guide: https://y2.dev/docs/api/x402.

- OpenAPI: https://y2.dev/api/openapi.yaml. Agent access metadata: https://y2.dev/cve/agent.json.

Collected public records only. Check source status for coverage and freshness.