{"id":"CVE-2026-46623","kind":"vulnerability","aliases":["CVE-2026-46623","GHSA-gf57-4mp6-m85x"],"related":[],"title":"OpenAM Account Takeover via Unverified Password Change in OAuth2 Module","description":"## Summary\n\n**Description**\n\nAn Unverified Password Change (CWE-620) and Use of Weak Credentials (CWE-1391) issue in OpenAM's OAuth2 authentication module silently rewrites a local user's password to the literal string of their username on OAuth2 re-login of an existing account. The default ldapService chain then accepts the username as the password for that user, allowing an unauthenticated attacker to obtain a session via the standard authenticate endpoint with both username and password set to the username, without any IdP interaction. This affects OpenAM Community Edition through version 16.0.6 and was patched in version 16.1.1.\n\n## Impact\nOpenAM Community Edition deployments through version 16.0.6 that use the OAuth2 authentication module with account creation enabled (the default) are potentially affected. After two OAuth logins of a given user, that user's local password becomes their username, and the account is reachable through the default ldapService chain with username as both identifier and password. For pre-existing users whose IdP profile resolves against an existing local identifier, the rewrite fires on the very first re-login.\n\nUsernames shorter than the default minimum password length have the rewrite silently denied (so very short administrative accounts are not affected), and the same update path marks accounts active on every OAuth login, silently reactivating disabled accounts. \n\nSuccessful exploitation grants an unauthenticated attacker a session carrying the victim principal's privileges.\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 authentication module rewrites a local user's password to their username on OAuth2 re-login. The default ldapService chain then accepts username as password, so an unauthenticated attacker can log in as that user and get a session with the victim's privileges.","severity":"high","cvss":7.4,"epss":0.00669,"exploited":false,"exploited_at":null,"products":[{"name":"org.openidentityplatform.openam:openam-auth-oauth2","fixed":["16.1.1"],"affected":"< 16.1.1","ecosystem":"maven"}],"ecosystems":["maven"],"tags":["cwe-1391","cwe-620","identity","java","maven","openam","package","self-hosted"],"not_affected_if":["oauth2-module-disabled","version-16.1.1-or-later"],"how_to_check":"- Check the version of the `openam-auth-oauth2` Maven artifact in your build or deployment, flagging anything below `16.1.1`.\n- Confirm whether the OAuth2 authentication module is enabled with account creation on (the default).\n- Look for local users whose password equals their username.","fix":"- Upgrade `openam-auth-oauth2` (OpenAM Community Edition) to `16.1.1` or later.\n- After upgrading, reset passwords for any accounts that may have been rewritten to their username, and re-enable any accounts reactivated by the OAuth login path.","status":"open","published_at":"2026-06-26T17:33:35+00:00","first_seen_at":"2026-10-28T15:29:41+00:00","triaged_at":"2026-10-28T15:30:54+00:00","updated_at":"2026-10-28T15:33:37+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-28T15:30:54Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade `openam-auth-oauth2` (OpenAM Community Edition) to `16.1.1` or later.\n- After upgrading, reset passwords for any accounts that may have been rewritten to their username, and re-enable any accounts reactivated by the OAuth login path.","reach":"internet","title":"OpenAM: OAuth2 login resets passwords to usernames, enabling account takeover","impact":"high","summary":"OpenAM's OAuth2 authentication module rewrites a local user's password to their username on OAuth2 re-login. The default ldapService chain then accepts username as password, so an unauthenticated attacker can log in as that user and get a session with the victim's privileges.","category":"package","nicknames":[],"who_cares":["openam","identity","self-hosted","java","maven"],"confidence":0.8,"needs_auth":"no","worst_case":"Unauthenticated attacker logs in as victim and gets their privileges.","analyst_note":"","how_to_check":"- Check the version of the `openam-auth-oauth2` Maven artifact in your build or deployment, flagging anything below `16.1.1`.\n- Confirm whether the OAuth2 authentication module is enabled with account creation on (the default).\n- Look for local users whose password equals their username.","needs_analyst":false,"not_affected_if":["oauth2-module-disabled","version-16.1.1-or-later"],"who_is_affected":"Deployments of OpenAM Community Edition through `16.0.6` that use the OAuth2 authentication module with account creation enabled are exposed. Usernames shorter than the default minimum password length were not rewritten, so very short admin accounts are not affected. Deployments that do not use the OAuth2 module can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000693,"input_tokens":3790,"output_tokens":628,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-1391':28B,100C '-2026':12A,20A '-46623':13A,21A '-620':30B,93C '16.0.6':178C,192C '16.1.1':184C,326C '4mp6':17A 'accept':63B,136C 'account':2A,130C,200C,226C,282C,292C,301C 'activ':293C 'administr':281C 'affect':172C,207C,285C 'allow':145C 'attack':70B,148C,307C 'auth':25A 'authent':42B,106C,156C,197C 'becom':221C 'carri':310C 'chain':61B,134C,233C 'chang':7A,91C 'communiti':174C,187C,323C 'creation':201C 'credenti':98C 'cve':11A,19A 'cwe':27B,29B,92C,99C 'default':59B,132C,204C,231C,269C 'deni':277C 'deploy':189C 'descript':87C 'disabl':300C 'edit':175C,188C,324C 'enabl':202C 'encourag':329C 'endpoint':157C 'everi':295C 'exist':129C,244C,252C 'exploit':303C 'fire':257C 'first':261C 'get':78B 'gf57':16A 'ghsa':15A 'ghsa-gf57-4mp6-m85x':14A 'given':214C 'grant':304C 'host':38B 'ident':31B 'identifi':238C,254C 'idp':169C,247C 'impact':185C 'interact':170C 'issu':101C 'java':32B 'latest':334C 'ldapservic':60B,133C,232C 'length':272C 'liter':117C 'local':46B,111C,219C,253C 'log':72B 'login':57B,126C,211C,264C,297C 'm85x':18A 'mark':291C 'maven':33B 'minimum':270C 'modul':10A,43B,107C,198C 'oauth':210C,296C 'oauth2':9A,26A,41B,54B,105C,123C,196C 'obtain':150C 'openam':1A,24A,34B,39B,103C,173C,186C,322C 'openam-auth-oauth2':23A 'org.openidentityplatform.openam':22A 'packag':35B 'password':6A,49B,66B,90C,114C,141C,162C,220C,240C,271C 'patch':181C,316C,320C 'path':290C 'potenti':206C 'pre':243C 'pre-exist':242C 'princip':313C 'privileg':85B,315C 'profil':248C 're':56B,125C,263C 're-login':55B,124C,262C 'reachabl':228C 'reactiv':299C 'releas':335C 'resolv':249C 'rewrit':44B,109C,256C,275C 'self':37B 'self-host':36B 'session':80B,152C,309C 'set':163C 'short':280C 'shorter':266C 'silent':108C,276C,298C 'standard':155C 'string':118C 'success':302C 'summari':86C 'takeov':3A 'two':209C 'unauthent':69B,147C,306C 'unverifi':5A,89C 'updat':289C,331C 'use':95C,194C 'user':47B,76B,112C,144C,215C,217C,245C,327C 'usernam':52B,64B,121C,138C,160C,166C,223C,235C,265C 'version':177C,183C,191C,325C 'via':4A,153C 'victim':83B,312C 'weak':97C 'whose':246C 'without':167C","nicknames":[],"mitigations":[],"who_affected":"Deployments of OpenAM Community Edition through `16.0.6` that use the OAuth2 authentication module with account creation enabled are exposed. Usernames shorter than the default minimum password length were not rewritten, so very short admin accounts are not affected. Deployments that do not use the OAuth2 module can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-06-26T17:33:35+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/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-gf57-4mp6-m85x","url":"https://github.com/advisories/GHSA-gf57-4mp6-m85x","severity":"high","published_at":"2026-06-26T17:33:35+00:00","modified_at":"2026-10-28T15:28:55+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-46623","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-46623","severity":null,"published_at":"2026-09-15T10:17:04+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"}