{"id":"CVE-2026-124453","kind":"vulnerability","aliases":["CVE-2026-124453"],"related":[],"title":"OpenEMR: patient portal lets logged-in patients change other patients' settings","description":"OpenEMR before 8.3.0 contains an insecure direct object reference vulnerability in portal/lib/persist.php that allows authenticated portal patients to write settings for other patients. Attackers can modify the setting_patient parameter in a JSON POST request to another patient's PID, altering that patient's portal settings such as the portal theme.","summary":"OpenEMR before 8.3.0 has an insecure direct object reference in portal/lib/persist.php. An authenticated patient can change portal settings of another patient by altering the patient ID in a JSON POST request.","severity":"high","cvss":7.1,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["healthcare","openemr","patient-portal","runtime","self-hosted"],"not_affected_if":["managed-hosting","openemr-8.3.0-or-later","portal-disabled"],"how_to_check":"- Check the OpenEMR version in use; it is affected if it is below `8.3.0`.\n- Look for `portal/lib/persist.php` in the OpenEMR install directory.","fix":"- OpenEMR: upgrade to `8.3.0` or later.","status":"open","published_at":"2026-11-08T14:18:12+00:00","first_seen_at":"2026-11-08T14:48:39+00:00","triaged_at":"2026-11-08T14:49:47+00:00","updated_at":"2026-11-08T14:49:47+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-11-08T14:49:47Z","model":"claude-haiku-5-5","output":{"fix":"- OpenEMR: upgrade to `8.3.0` or later.","reach":"network","title":"OpenEMR: patient portal lets logged-in patients change other patients' settings","impact":"low","summary":"OpenEMR before 8.3.0 has an insecure direct object reference in portal/lib/persist.php. An authenticated patient can change portal settings of another patient by altering the patient ID in a JSON POST request.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["openemr","self-hosted","healthcare","patient-portal"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"a patient alters another patient's portal settings","analyst_note":"","how_to_check":"- Check the OpenEMR version in use; it is affected if it is below `8.3.0`.\n- Look for `portal/lib/persist.php` in the OpenEMR install directory.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["openemr-8.3.0-or-later","portal-disabled","managed-hosting"],"who_is_affected":"Clinics and hospitals running a self-hosted OpenEMR instance with the patient portal enabled. The flaw requires a logged-in patient portal account, so instances with the portal disabled are not exposed through this path.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000714,"input_tokens":4608,"output_tokens":507,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-124453':15A,18A '-2026':14A,17A '8.3.0':30B,61C 'allow':72C 'alter':50B,99C 'anoth':47B,95C 'attack':82C 'authent':40B,73C 'chang':9A,43B 'contain':62C 'cve':13A,16A 'direct':34B,65C 'healthcar':19B 'host':27B 'id':53B 'insecur':33B,64C 'json':56B,91C 'let':4A 'log':6A 'logged-in':5A 'modifi':84C 'object':35B,66C 'openemr':1A,20B,28B,59C 'paramet':88C 'patient':2A,8A,11A,22B,41B,48B,52B,75C,81C,87C,96C,101C 'patient-port':21B 'pid':98C 'portal':3A,23B,44B,74C,103C,108C 'portal/lib/persist.php':38B,70C 'post':57B,92C 'refer':36B,67C 'request':58B,93C 'runtim':24B 'self':26B 'self-host':25B 'set':12A,45B,78C,86C,104C 'theme':109C 'vulner':68C 'write':77C","nicknames":[],"mitigations":[],"who_affected":"Clinics and hospitals running a self-hosted OpenEMR instance with the patient portal enabled. The flaw requires a logged-in patient portal account, so instances with the portal disabled are not exposed through this path.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["healthcare","high","openemr","patientportal","runtime","selfhosted"],"campaign_type":null,"search_a":"'-124453':15A,18A '-2026':14A,17A 'chang':9A 'cve':13A,16A 'let':4A 'log':6A 'logged-in':5A 'openemr':1A 'patient':2A,8A,11A 'portal':3A 'set':12A","search_b":"'8.3.0':30B 'alter':50B 'anoth':47B 'authent':40B 'chang':43B 'direct':34B 'healthcar':19B 'host':27B 'id':53B 'insecur':33B 'json':56B 'object':35B 'openemr':20B,28B 'patient':22B,41B,48B,52B 'patient-port':21B 'portal':23B,44B 'portal/lib/persist.php':38B 'post':57B 'refer':36B 'request':58B 'runtim':24B 'self':26B 'self-host':25B 'set':45B","search_c":"'8.3.0':61C 'allow':72C 'alter':99C 'anoth':95C 'attack':82C 'authent':73C 'contain':62C 'direct':65C 'insecur':64C 'json':91C 'modifi':84C 'object':66C 'openemr':59C 'paramet':88C 'patient':75C,81C,87C,96C,101C 'pid':98C 'portal':74C,103C,108C 'portal/lib/persist.php':70C 'post':92C 'refer':67C 'request':93C 'set':78C,86C,104C 'theme':109C 'vulner':68C 'write':77C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-08-18T09:10:19+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/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":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-124453","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-124453","severity":null,"published_at":"2026-11-08T14:18:12+00:00","modified_at":"2026-11-08T14:18:12+00:00","first_seen_at":"2026-11-08T14:48:39+00:00","fetched_at":"2026-11-08T14:48:39+00:00","note":null}],"documents":[{"id":102091,"url":"https://github.com/openemr/openemr/security/advisories/GHSA-rrw3-g25h-x68h","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-08-18T09:10:19+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":102092,"url":"https://www.vulncheck.com/advisories/openemr-before-8.3.0-idor-in-portal-patient-settings-via-persist-php","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}