{"id":"CVE-2026-96547","kind":"vulnerability","aliases":["CVE-2026-96547"],"related":[],"title":"Keycloak: Dynamic Client Registration lets clients map claims to privileged roles","description":"A flaw was found in the Dynamic Client Registration component of Keycloak, an open-source identity and access management solution. The issue occurs because the system does not properly restrict which claim names can be used when setting up new clients. An attacker with valid registration credentials could create a client that incorrectly maps standard user profile information to sensitive security roles, potentially allowing them to gain unauthorized privileges on external applications that trust Keycloak tokens.","summary":"Keycloak's Dynamic Client Registration does not restrict which claim names a new client may use, so a client can map ordinary profile data onto security roles. An attacker holding valid registration credentials could gain privileges on external applications that trust Keycloak tokens.","severity":"medium","cvss":6.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["keycloak","oidc","package","self-hosted","sso"],"not_affected_if":["dynamic-registration-disabled","managed-hosting"],"how_to_check":"- Check the installed Keycloak version against the advisory; `unknown` for the affected range, as the sources give no product ranges.\n- Check whether Dynamic Client Registration is enabled on the realm and who holds registration credentials.","fix":null,"status":"open","published_at":"2026-11-06T06:16:45+00:00","first_seen_at":"2026-11-06T06:40:13+00:00","triaged_at":"2026-11-06T06:41:35+00:00","updated_at":"2026-11-06T06:41:35+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-06T06:41:35Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"network","title":"Keycloak: Dynamic Client Registration lets clients map claims to privileged roles","impact":"medium","summary":"Keycloak's Dynamic Client Registration does not restrict which claim names a new client may use, so a client can map ordinary profile data onto security roles. An attacker holding valid registration credentials could gain privileges on external applications that trust Keycloak tokens.","audience":"businesses","category":"package","nicknames":[],"who_cares":["keycloak","self-hosted","sso","oidc"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"Attacker gains unauthorized roles on applications trusting Keycloak tokens","analyst_note":"Find the NVD entry's affected version ranges and fixed release for Keycloak, and confirm whether registration credentials are required by default.","how_to_check":"- Check the installed Keycloak version against the advisory; `unknown` for the affected range, as the sources give no product ranges.\n- Check whether Dynamic Client Registration is enabled on the realm and who holds registration credentials.","plain_action":"","needs_analyst":true,"not_affected_if":["dynamic-registration-disabled","managed-hosting"],"who_is_affected":"Teams running self-hosted Keycloak with Dynamic Client Registration enabled, where external applications trust Keycloak-issued tokens for role decisions. Deployments that do not enable dynamic registration, or that restrict registration to trusted administrators, are less exposed. The sources do not give the exact affected versions.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000718,"input_tokens":4265,"output_tokens":584,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-96547':14A,17A 'access':86C 'allow':132C 'applic':63B,140C 'attack':53B,111C 'claim':8A,34B,100C 'client':3A,6A,28B,38B,43B,75C,109C,119C 'compon':77C 'could':58B,116C 'creat':117C 'credenti':57B,115C 'cve':12A,15A 'data':48B 'dynam':2A,27B,74C 'extern':62B,139C 'flaw':69C 'found':71C 'gain':59B,135C 'hold':54B 'host':23B 'ident':84C 'incorrect':121C 'inform':126C 'issu':90C 'keycloak':1A,18B,25B,66B,79C,143C 'let':5A 'manag':87C 'map':7A,45B,122C 'may':39B 'name':35B,101C 'new':37B,108C 'occur':91C 'oidc':19B 'onto':49B 'open':82C 'open-sourc':81C 'ordinari':46B 'packag':20B 'potenti':131C 'privileg':10A,60B,137C 'profil':47B,125C 'proper':97C 'registr':4A,29B,56B,76C,114C 'restrict':32B,98C 'role':11A,51B,130C 'secur':50B,129C 'self':22B 'self-host':21B 'sensit':128C 'set':106C 'solut':88C 'sourc':83C 'sso':24B 'standard':123C 'system':94C 'token':67B,144C 'trust':65B,142C 'unauthor':136C 'use':40B,104C 'user':124C 'valid':55B,113C","nicknames":[],"mitigations":[],"who_affected":"Teams running self-hosted Keycloak with Dynamic Client Registration enabled, where external applications trust Keycloak-issued tokens for role decisions. Deployments that do not enable dynamic registration, or that restrict registration to trusted administrators, are less exposed. The sources do not give the exact affected versions.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["keycloak","medium","oidc","package","selfhosted","sso"],"campaign_type":null,"search_a":"'-2026':13A,16A '-96547':14A,17A 'claim':8A 'client':3A,6A 'cve':12A,15A 'dynam':2A 'keycloak':1A 'let':5A 'map':7A 'privileg':10A 'registr':4A 'role':11A","search_b":"'applic':63B 'attack':53B 'claim':34B 'client':28B,38B,43B 'could':58B 'credenti':57B 'data':48B 'dynam':27B 'extern':62B 'gain':59B 'hold':54B 'host':23B 'keycloak':18B,25B,66B 'map':45B 'may':39B 'name':35B 'new':37B 'oidc':19B 'onto':49B 'ordinari':46B 'packag':20B 'privileg':60B 'profil':47B 'registr':29B,56B 'restrict':32B 'role':51B 'secur':50B 'self':22B 'self-host':21B 'sso':24B 'token':67B 'trust':65B 'use':40B 'valid':55B","search_c":"'access':86C 'allow':132C 'applic':140C 'attack':111C 'claim':100C 'client':75C,109C,119C 'compon':77C 'could':116C 'creat':117C 'credenti':115C 'dynam':74C 'extern':139C 'flaw':69C 'found':71C 'gain':135C 'ident':84C 'incorrect':121C 'inform':126C 'issu':90C 'keycloak':79C,143C 'manag':87C 'map':122C 'name':101C 'new':108C 'occur':91C 'open':82C 'open-sourc':81C 'potenti':131C 'privileg':137C 'profil':125C 'proper':97C 'registr':76C,114C 'restrict':98C 'role':130C 'secur':129C 'sensit':128C 'set':106C 'solut':88C 'sourc':83C 'standard':123C 'system':94C 'token':144C 'trust':142C 'unauthor':136C 'use':104C 'user':124C 'valid':113C","first_public_at":"2026-11-06T06:16:45+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N","cvss_by":"secalert@redhat.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-96547","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-96547","severity":null,"published_at":"2026-11-06T06:16:45+00:00","modified_at":"2026-11-06T06:16:45+00:00","first_seen_at":"2026-11-06T06:40:13+00:00","fetched_at":"2026-11-06T06:40:13+00:00","note":null}],"documents":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}