{"id":"CVE-2026-47426","kind":"vulnerability","aliases":["CVE-2026-47426","GHSA-f2cx-463q-7m2c"],"related":[],"title":"OpenAM OAuth Client Impersonation via JWKS Resolver Cache","description":"## Summary\n\n**Description**\n\nAn Improper Authentication (CWE-287) issue in OpenAM's OAuth2 private_key_jwt client authentication path allows any registered OAuth2 client to mint tokens in the name of any other client whose key is published via a jwks_uri, without knowing the victim's signing key. This affects OpenAM Community Edition through version 16.0.6 and was patched in version 16.1.1.\n\n## Impact\n\nOpenAM Community Edition deployments through version 16.0.6 that have OAuth2 clients configured for private_key_jwt authentication with keys published via jwks_uri are potentially affected. An attacker holding any such client registration, their own, or one obtained through open dynamic client registration where enabled, can mint access tokens in any other such client's name, in any realm hosted by the OpenAM process.\n\n## Patch\nThis has been patched in OpenAM Community Edition version 16.1.1. Users are encouraged to update to the latest release.","summary":"OpenAM's OAuth2 private_key_jwt client authentication caches keys fetched from jwks_uri, so a registered client can mint access tokens as another client whose key is published that way, without holding that client's signing key. An attacker gets tokens in the victim client's name across realms hosted by the OpenAM process.","severity":"high","cvss":7.6,"epss":0.00554,"exploited":false,"exploited_at":null,"products":[{"name":"org.openidentityplatform.openam:openam-oauth2","fixed":["16.1.1"],"affected":"<= 16.0.6","ecosystem":"maven"}],"ecosystems":["maven"],"tags":["cwe-287","identity","oauth2","openam","package","self-hosted"],"not_affected_if":["no-jwks-uri-keys","no-private-key-jwt-clients","patched-16.1.1-or-later"],"how_to_check":"- Check the deployed OpenAM version and confirm it is `16.1.1` or later, for example by reading the openam-oauth2 version in the Maven dependency tree\n- List OAuth2 clients using private_key_jwt with keys from jwks_uri in the OpenAM admin console, and check whether open dynamic client registration is enabled","fix":"- Upgrade OpenAM Community Edition to `16.1.1` or later, the first patched version\n- Until upgraded, disable open dynamic client registration if it is enabled, since it lets outsiders obtain client registrations","status":"open","published_at":"2026-06-29T17:44:37+00:00","first_seen_at":"2026-10-28T15:29:41+00:00","triaged_at":"2026-10-28T15:30:55+00:00","updated_at":"2026-10-28T15:33:37+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-28T15:30:55Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade OpenAM Community Edition to `16.1.1` or later, the first patched version\n- Until upgraded, disable open dynamic client registration if it is enabled, since it lets outsiders obtain client registrations","reach":"network","title":"OpenAM: OAuth client impersonation through cached JWKS keys lets attackers mint tokens","impact":"high","summary":"OpenAM's OAuth2 private_key_jwt client authentication caches keys fetched from jwks_uri, so a registered client can mint access tokens as another client whose key is published that way, without holding that client's signing key. An attacker gets tokens in the victim client's name across realms hosted by the OpenAM process.","category":"package","nicknames":[],"who_cares":["openam","oauth2","self-hosted","identity"],"confidence":0.8,"needs_auth":"yes","worst_case":"Attacker mints access tokens impersonating other OAuth clients across realms","analyst_note":"","how_to_check":"- Check the deployed OpenAM version and confirm it is `16.1.1` or later, for example by reading the openam-oauth2 version in the Maven dependency tree\n- List OAuth2 clients using private_key_jwt with keys from jwks_uri in the OpenAM admin console, and check whether open dynamic client registration is enabled","needs_analyst":false,"not_affected_if":["patched-16.1.1-or-later","no-private-key-jwt-clients","no-jwks-uri-keys"],"who_is_affected":"Deployments of OpenAM Community Edition through `16.0.6` that use OAuth2 clients with private_key_jwt authentication and keys published via jwks_uri are exposed. An attacker needs any registered OAuth2 client, which open dynamic client registration can provide. Installations without private_key_jwt clients using jwks_uri, or running a patched version, are not affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000698,"input_tokens":3588,"output_tokens":678,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':10A,18A '-287':25B,94C '-47426':11A,19A '16.0.6':143C,157C '16.1.1':149C,225C '463q':15A '7m2c':16A 'access':53B,198C 'across':81B 'affect':137C,176C 'allow':106C 'anoth':56B 'attack':72B,178C 'authent':40B,92C,104C,167C 'cach':8A,41B 'client':3A,39B,50B,57B,67B,78B,103C,110C,120C,161C,182C,192C,204C 'communiti':139C,152C,222C 'configur':162C 'cve':9A,17A 'cwe':24B,93C 'deploy':154C 'descript':89C 'dynam':191C 'edit':140C,153C,223C 'enabl':195C 'encourag':228C 'f2cx':14A 'fetch':43B 'get':73B 'ghsa':13A 'ghsa-f2cx-463q-7m2c':12A 'hold':65B,179C 'host':32B,83B,210C 'ident':26B 'impact':150C 'imperson':4A 'improp':91C 'issu':95C 'jwks':6A,45B,127C,172C 'jwt':38B,102C,166C 'key':37B,42B,59B,70B,101C,122C,135C,165C,169C 'know':130C 'latest':233C 'mint':52B,112C,197C 'name':80B,116C,206C 'oauth':2A 'oauth2':23A,27B,35B,99C,109C,160C 'obtain':188C 'one':187C 'open':190C 'openam':1A,22A,28B,33B,86B,97C,138C,151C,213C,221C 'openam-oauth2':21A 'org.openidentityplatform.openam':20A 'packag':29B 'patch':146C,215C,219C 'path':105C 'potenti':175C 'privat':36B,100C,164C 'process':87B,214C 'publish':61B,124C,170C 'realm':82B,209C 'regist':49B,108C 'registr':183C,193C 'releas':234C 'resolv':7A 'self':31B 'self-host':30B 'sign':69B,134C 'summari':88C 'token':54B,74B,113C,199C 'updat':230C 'uri':46B,128C,173C 'user':226C 'version':142C,148C,156C,224C 'via':5A,125C,171C 'victim':77B,132C 'way':63B 'whose':58B,121C 'without':64B,129C","nicknames":[],"mitigations":[],"who_affected":"Deployments of OpenAM Community Edition through `16.0.6` that use OAuth2 clients with private_key_jwt authentication and keys published via jwks_uri are exposed. An attacker needs any registered OAuth2 client, which open dynamic client registration can provide. Installations without private_key_jwt clients using jwks_uri, or running a patched version, are not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-06-29T17:44:37+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-f2cx-463q-7m2c","url":"https://github.com/advisories/GHSA-f2cx-463q-7m2c","severity":"high","published_at":"2026-06-29T17:44:37+00:00","modified_at":"2026-10-28T15:27:43+00:00","first_seen_at":"2026-10-28T15:29:41+00:00","fetched_at":"2026-10-28T15:29:41+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-47426","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-47426","severity":null,"published_at":"2026-09-15T10:17:05+00:00","modified_at":"2026-09-23T18:19:19+00:00","first_seen_at":"2026-10-28T15:33:37+00:00","fetched_at":"2026-10-28T15:33:37+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}