{"id":"CVE-2026-97174","kind":"vulnerability","aliases":["CVE-2026-97174"],"related":[],"title":"Keycloak: CIBA sub parameter injection lets attackers receive victim tokens","description":"A flaw was found in the Client-Initiated Backchannel Authentication (CIBA) implementation of Keycloak. The CIBA endpoint fails to properly validate the sub parameter, allowing it to be stored as an additional request parameter. During the token issuance process, this injected value overwrites the legitimate subject identifier. This allows an attacker to authenticate as themselves but receive security tokens belonging to a different victim user, leading to unauthorized account access.","summary":"Keycloak's Client-Initiated Backchannel Authentication (CIBA) endpoint does not validate the sub parameter, so it can be stored as an extra request parameter. During token issuance that value overwrites the real subject, so an attacker who signs in as themselves can receive security tokens for another user.","severity":"medium","cvss":6.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["authentication","identity","keycloak","package","self-hosted"],"not_affected_if":["ciba-disabled","managed-hosting"],"how_to_check":"- Check the Keycloak version in use, for example with `kc.sh --version` or the server banner in logs; compare it against the fixed versions below.\n- Check whether CIBA is enabled for any client in the realm (Clients > client > Advanced settings, or the CIBA policy settings), since the flaw is in the CIBA implementation.","fix":null,"status":"open","published_at":"2026-11-05T18:17:11+00:00","first_seen_at":"2026-11-05T18:40:10+00:00","triaged_at":"2026-11-05T18:40:43+00:00","updated_at":"2026-11-05T18:40:43+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-05T18:40:43Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"network","title":"Keycloak: CIBA sub parameter injection lets attackers receive victim tokens","impact":"high","summary":"Keycloak's Client-Initiated Backchannel Authentication (CIBA) endpoint does not validate the sub parameter, so it can be stored as an extra request parameter. During token issuance that value overwrites the real subject, so an attacker who signs in as themselves can receive security tokens for another user.","audience":"businesses","category":"package","nicknames":[],"who_cares":["keycloak","self-hosted","authentication","identity"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"attacker takes over another user's account via their tokens","analyst_note":"Find the NVD or Keycloak advisory listing affected and fixed versions and whether CIBA is enabled by default.","how_to_check":"- Check the Keycloak version in use, for example with `kc.sh --version` or the server banner in logs; compare it against the fixed versions below.\n- Check whether CIBA is enabled for any client in the realm (Clients > client > Advanced settings, or the CIBA policy settings), since the flaw is in the CIBA implementation.\n- unknown: the sources do not list affected or fixed version ranges.","plain_action":"","needs_analyst":true,"not_affected_if":["ciba-disabled","managed-hosting"],"who_is_affected":"Only deployments where the CIBA feature is used can be exposed, because the flaw sits in the CIBA endpoint. Teams running Keycloak without CIBA clients have a smaller exposure, but the sources do not state whether CIBA is enabled by default. Teams that run Keycloak as a managed service should ask the provider for the patched version.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000749,"input_tokens":4278,"output_tokens":642,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-97174':13A,16A 'access':143C 'account':142C 'addit':105C 'allow':98C,122C 'anoth':71B 'attack':7A,60B,124C 'authent':17B,30B,83C,126C 'backchannel':29B,82C 'belong':133C 'ciba':2A,31B,84C,89C 'client':27B,80C 'client-initi':26B,79C 'cve':11A,14A 'differ':136C 'endpoint':32B,90C 'extra':46B 'fail':91C 'flaw':74C 'found':76C 'host':23B 'ident':18B 'identifi':120C 'implement':85C 'initi':28B,81C 'inject':5A,114C 'issuanc':51B,111C 'keycloak':1A,19B,24B,87C 'lead':139C 'legitim':118C 'let':6A 'overwrit':54B,116C 'packag':20B 'paramet':4A,38B,48B,97C,107C 'process':112C 'proper':93C 'real':56B 'receiv':8A,67B,130C 'request':47B,106C 'secur':68B,131C 'self':22B 'self-host':21B 'sign':62B 'store':43B,102C 'sub':3A,37B,96C 'subject':57B,119C 'token':10A,50B,69B,110C,132C 'unauthor':141C 'user':72B,138C 'valid':35B,94C 'valu':53B,115C 'victim':9A,137C","nicknames":[],"mitigations":[],"who_affected":"Only deployments where the CIBA feature is used can be exposed, because the flaw sits in the CIBA endpoint. Teams running Keycloak without CIBA clients have a smaller exposure, but the sources do not state whether CIBA is enabled by default. Teams that run Keycloak as a managed service should ask the provider for the patched version.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["authentication","identity","keycloak","medium","package","selfhosted"],"campaign_type":null,"first_public_at":"2026-11-05T18:17:11+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N","cvss_by":"secalert@redhat.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-97174","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-97174","severity":null,"published_at":"2026-11-05T18:17:11+00:00","modified_at":"2026-11-05T18:17:11+00:00","first_seen_at":"2026-11-05T18:40:10+00:00","fetched_at":"2026-11-05T18:40:10+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"}