{"id":"CVE-2026-103021","kind":"vulnerability","aliases":["CVE-2026-103021"],"related":[],"title":"OpenEMR: unauthenticated login parameter lets attackers enumerate valid usernames","description":"OpenEMR is a free and open source electronic health records and medical practice management application. From 6.0.0 until 8.3.0, interface/globals.php uses the unauthenticated authUser login parameter to populate temp_authuserid and load that account's user_settings before authentication succeeds. Existing usernames can therefore cause an additional database query and may apply visible customized settings, while nonexistent usernames skip that behavior. A remote unauthenticated actor can use timing or page differences to enumerate valid accounts for later credential attacks. This issue is fixed in version 8.3.0.","summary":"OpenEMR loads a user's settings from an unauthenticated login parameter before sign-in succeeds, so existing and nonexistent usernames behave differently. A remote attacker can use timing or page differences to list valid accounts for later password attacks.","severity":"medium","cvss":5.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["healthcare","openemr","php","runtime","self-hosted"],"not_affected_if":["internal-only-network","version-8.3.0-or-later"],"how_to_check":"- Check the installed OpenEMR version in the application's version or footer information; versions from `6.0.0` through `8.2.x` are in the affected range.\n- Look at `interface/globals.php` in the OpenEMR source tree for the unauthenticated `authUser` handling.","fix":"- OpenEMR: move to `8.3.0` or later.","status":"open","published_at":"2026-11-05T20:17:38+00:00","first_seen_at":"2026-11-05T20:40:43+00:00","triaged_at":"2026-11-05T20:43:31+00:00","updated_at":"2026-11-05T20:43:31+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-11-05T20:43:31Z","model":"claude-haiku-5-5","output":{"fix":"- OpenEMR: move to `8.3.0` or later.","reach":"internet","title":"OpenEMR: unauthenticated login parameter lets attackers enumerate valid usernames","impact":"low","summary":"OpenEMR loads a user's settings from an unauthenticated login parameter before sign-in succeeds, so existing and nonexistent usernames behave differently. A remote attacker can use timing or page differences to list valid accounts for later password attacks.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["openemr","healthcare","self-hosted","php"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"attacker learns valid usernames for later password attacks","analyst_note":"","how_to_check":"- Check the installed OpenEMR version in the application's version or footer information; versions from `6.0.0` through `8.2.x` are in the affected range.\n- Look at `interface/globals.php` in the OpenEMR source tree for the unauthenticated `authUser` handling.","plain_action":"","needs_analyst":false,"not_affected_if":["version-8.3.0-or-later","internal-only-network"],"who_is_affected":"Any OpenEMR deployment from 6.0.0 up to but not including 8.3.0 that is reachable over a network is exposed, since the flaw is in the login page code path in interface/globals.php. Deployments that are not reachable from the internet or other untrusted networks carry less risk. Teams on 8.3.0 or later are not affected.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000716,"input_tokens":4343,"output_tokens":564,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-103021':12A,15A '-2026':11A,14A '6.0.0':79C '8.3.0':81C,148C 'account':58B,96C,137C 'actor':127C 'addit':109C 'appli':114C 'applic':77C 'attack':6A,48B,62B,141C 'authent':101C 'authus':86C 'authuserid':92C 'behav':44B 'behavior':123C 'caus':107C 'credenti':140C 'custom':116C 'cve':10A,13A 'databas':110C 'differ':45B,54B,133C 'electron':70C 'enumer':7A,135C 'exist':40B,103C 'fix':145C 'free':66C 'health':71C 'healthcar':16B 'host':22B 'interface/globals.php':82C 'issu':143C 'later':60B,139C 'let':5A 'list':56B 'load':24B,94C 'login':3A,32B,87C 'manag':76C 'may':113C 'medic':74C 'nonexist':42B,119C 'open':68C 'openemr':1A,17B,23B,63C 'page':53B,132C 'paramet':4A,33B,88C 'password':61B 'php':18B 'popul':90C 'practic':75C 'queri':111C 'record':72C 'remot':47B,125C 'runtim':19B 'self':21B 'self-host':20B 'set':28B,99C,117C 'sign':36B 'sign-in':35B 'skip':121C 'sourc':69C 'succeed':38B,102C 'temp':91C 'therefor':106C 'time':51B,130C 'unauthent':2A,31B,85C,126C 'use':50B,83C,129C 'user':26B,98C 'usernam':9A,43B,104C,120C 'valid':8A,57B,136C 'version':147C 'visibl':115C","nicknames":[],"mitigations":[],"who_affected":"Any OpenEMR deployment from 6.0.0 up to but not including 8.3.0 that is reachable over a network is exposed, since the flaw is in the login page code path in interface/globals.php. Deployments that are not reachable from the internet or other untrusted networks carry less risk. Teams on 8.3.0 or later are not affected.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["healthcare","medium","openemr","php","runtime","selfhosted"],"campaign_type":null,"first_public_at":"2026-08-18T09:06:44+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-103021","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-103021","severity":null,"published_at":"2026-11-05T20:17:38+00:00","modified_at":"2026-11-05T20:17:38+00:00","first_seen_at":"2026-11-05T20:40:43+00:00","fetched_at":"2026-11-05T20:40:43+00:00","note":null}],"documents":[{"id":79795,"url":"https://github.com/openemr/openemr/commit/50f789fad45ada625fe8d0faf0c7a9c15ef52aa5","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":79793,"url":"https://github.com/openemr/openemr/releases/tag/v8_3_0","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":79803,"url":"https://github.com/openemr/openemr/security/advisories/GHSA-rr38-hpxq-wwff","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-08-18T09:06:44+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}