{"id":"CVE-2026-9705","kind":"vulnerability","aliases":["CVE-2026-9705","GHSA-r7rc-c989-86g6"],"related":[],"title":"Keycloak: Attacker can re-enable and take over disabled clients via registration access token","description":"### Description\nA flaw was found in Keycloak's client registration service. A remote attacker, possessing a previously issued Registration Access Token (RAT), could exploit this vulnerability to re-enable a client that an administrator had explicitly disabled. This bypasses security controls, allowing the attacker to reset the client's secret and potentially regain privileged API access. The primary impact includes unauthorized information disclosure and potential integrity compromise.","summary":"Keycloak's client registration service lets someone holding a previously issued Registration Access Token re-enable a client that an administrator disabled. The attacker can then reset that client's secret and may regain privileged API access.","severity":"medium","cvss":6.5,"epss":0.00464,"exploited":false,"exploited_at":null,"products":[{"name":"org.keycloak:keycloak-services","fixed":["26.6.4"],"affected":"< 26.6.4","ecosystem":"maven"},{"name":"redhat build of keycloak","fixed":["26.4.13"],"affected":">= 26.4, < 26.4.13","ecosystem":"vendor"},{"name":"redhat build of keycloak","fixed":["26.6.4"],"affected":">= 26.6, < 26.6.4","ecosystem":"vendor"}],"ecosystems":["maven","vendor"],"tags":["cwe-613","identity","infrastructure","keycloak","oauth","self-hosted"],"not_affected_if":["fixed-version","no-client-registration"],"how_to_check":"- Check the Keycloak version with the server's startup log or admin console; the affected range is `keycloak-services` below `26.6.4`.\n- Look for clients that were disabled on purpose and confirm they are still disabled.\n- Review whether Registration Access Tokens are issued and where they are stored.","fix":"- Keycloak `keycloak-services` `26.6.4`","status":"open","published_at":"2026-06-25T17:17:03+00:00","first_seen_at":"2026-10-29T16:39:02+00:00","triaged_at":"2026-10-29T16:39:46+00:00","updated_at":"2026-10-29T16:56:32+00:00","category":"infrastructure","confidence":0.7,"triage":{"at":"2026-10-29T16:39:46Z","model":"claude-haiku-5-5","output":{"fix":"- Keycloak `keycloak-services` `26.6.4`","reach":"network","title":"Keycloak: leaked registration token re-enables a disabled client and resets its secret","impact":"medium","summary":"Keycloak's client registration service lets someone holding a previously issued Registration Access Token re-enable a client that an administrator disabled. The attacker can then reset that client's secret and may regain privileged API access.","audience":"businesses","category":"infrastructure","nicknames":[],"who_cares":["keycloak","self-hosted","identity","oauth"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"disabled client re-enabled, secret reset, privileged API access regained","analyst_note":"","how_to_check":"- Check the Keycloak version with the server's startup log or admin console; the affected range is `keycloak-services` below `26.6.4`.\n- Look for clients that were disabled on purpose and confirm they are still disabled.\n- Review whether Registration Access Tokens are issued and where they are stored.","plain_action":"","needs_analyst":false,"not_affected_if":["fixed-version","no-client-registration"],"who_is_affected":"Teams running self-hosted Keycloak versions below 26.6.4 that use client registration and have issued Registration Access Tokens. An attacker needs a token that was issued before the client was disabled, so deployments that do not use dynamic client registration or that have not issued such tokens are less exposed.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000698,"input_tokens":4260,"output_tokens":544,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':17A,25A '-613':40B '-9705':18A,26A '86g6':23A 'access':14A,60B,85B,105C,142C 'administr':69B,120C 'allow':128C 'api':84B,141C 'attack':2A,72B,99C,130C 'build':32A,36A 'bypass':125C 'c989':22A 'client':11A,50B,66B,77B,94C,117C,134C 'compromis':153C 'control':127C 'could':108C 'cve':16A,24A 'cwe':39B 'descript':86C 'disabl':10A,70B,123C 'disclosur':149C 'enabl':6A,64B,115C 'explicit':122C 'exploit':109C 'flaw':88C 'found':90C 'ghsa':20A 'ghsa-r7rc-c989-86g6':19A 'hold':55B 'host':47B 'ident':41B 'impact':145C 'includ':146C 'inform':148C 'infrastructur':42B 'integr':152C 'issu':58B,103C 'keycloak':1A,29A,34A,38A,43B,48B,92C 'keycloak-services':28A 'let':53B 'may':81B 'oauth':44B 'of':33A,37A 'org.keycloak':27A 'possess':100C 'potenti':138C,151C 'previous':57B,102C 'primari':144C 'privileg':83B,140C 'r7rc':21A 'rat':107C 're':5A,63B,114C 're-en':4A,62B,113C 'redhat':31A,35A 'regain':82B,139C 'registr':13A,51B,59B,95C,104C 'remot':98C 'reset':75B,132C 'secret':79B,136C 'secur':126C 'self':46B 'self-host':45B 'servic':52B,96C 'services':30A 'someon':54B 'take':8A 'token':15A,61B,106C 'unauthor':147C 'via':12A 'vulner':111C","nicknames":[],"mitigations":[],"who_affected":"Teams running self-hosted Keycloak versions below 26.6.4 that use client registration and have issued Registration Access Tokens. An attacker needs a token that was issued before the client was disabled, so deployments that do not use dynamic client registration or that have not issued such tokens are less exposed.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-06-25T17:17:03+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-r7rc-c989-86g6","url":"https://github.com/advisories/GHSA-r7rc-c989-86g6","severity":"medium","published_at":"2026-10-29T16:36:21+00:00","modified_at":"2026-10-29T16:36:23+00:00","first_seen_at":"2026-10-29T16:39:02+00:00","fetched_at":"2026-10-29T16:39:02+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-9705","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-9705","severity":null,"published_at":"2026-06-25T17:17:03+00:00","modified_at":"2026-07-01T18:38:08+00:00","first_seen_at":"2026-10-29T16:56:32+00:00","fetched_at":"2026-10-29T16:56:32+00:00","note":null}],"documents":[{"id":17813,"url":"https://api.github.com/repos/keycloak/keycloak/security-advisories/GHSA-r7rc-c989-86g6","title":"Maintainer's advisory: api.github.com","kind":"vendor","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Maintainer's advisory: api.github.com"},{"id":17814,"url":"https://github.com/keycloak/keycloak/security/advisories/GHSA-r7rc-c989-86g6","title":"Maintainer's advisory: github.com","kind":"vendor","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Maintainer's advisory: github.com"},{"id":18033,"url":"https://access.redhat.com/errata/RHSA-2026:30049","title":"Third-party advisory: access.redhat.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: access.redhat.com"},{"id":18034,"url":"https://access.redhat.com/errata/RHSA-2026:30050","title":"Third-party advisory: access.redhat.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: access.redhat.com"},{"id":18035,"url":"https://access.redhat.com/errata/RHSA-2026:30083","title":"Third-party advisory: access.redhat.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: access.redhat.com"},{"id":18036,"url":"https://access.redhat.com/errata/RHSA-2026:30084","title":"Third-party advisory: access.redhat.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: access.redhat.com"},{"id":18051,"url":"https://access.redhat.com/security/cve/CVE-2026-9705","title":"Vendor advisory: access.redhat.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: access.redhat.com"},{"id":18052,"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2481878","title":"Vendor advisory: bugzilla.redhat.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: bugzilla.redhat.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}