{"id":"CVE-2026-124469","kind":"vulnerability","aliases":["CVE-2026-124469"],"related":[],"title":"OpenEMR: Fee Sheet drug lookup lets logged-in users run SQL and extract data","description":"OpenEMR before 8.3.0 contains an SQL injection vulnerability in the Fee Sheet drug-inventory lookup (DrugSalesService::sellDrug) that interpolates the prod[N][warehouse] POST field into an ORDER BY clause. Low-privileged authenticated users can submit Fee Sheet product lines with constant subqueries to run a time-based blind oracle, extracting patient data and users_secure bcrypt hashes.","summary":"OpenEMR before 8.3.0 builds an ORDER BY clause from the prod[N][warehouse] field in the Fee Sheet drug-inventory lookup without escaping it. A low-privileged logged-in user can use time-based blind SQL injection to extract patient records and bcrypt password hashes.","severity":"critical","cvss":9.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["healthcare","openemr","package","php","self-hosted"],"not_affected_if":["openemr-8.3.0-or-later"],"how_to_check":"- Check the OpenEMR version in the install and confirm whether it is below `8.3.0`\n- Confirm whether low-privileged users can reach the Fee Sheet pages","fix":"- OpenEMR: upgrade to `8.3.0` or later","status":"open","published_at":"2026-11-08T14:18:15+00:00","first_seen_at":"2026-11-08T14:48:40+00:00","triaged_at":"2026-11-08T14:48:48+00:00","updated_at":"2026-11-08T14:48:48+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-11-08T14:48:48Z","model":"claude-haiku-5-5","output":{"fix":"- OpenEMR: upgrade to `8.3.0` or later","reach":"network","title":"OpenEMR: Fee Sheet drug lookup lets logged-in users run SQL and extract data","impact":"high","summary":"OpenEMR before 8.3.0 builds an ORDER BY clause from the prod[N][warehouse] field in the Fee Sheet drug-inventory lookup without escaping it. A low-privileged logged-in user can use time-based blind SQL injection to extract patient records and bcrypt password hashes.","audience":"businesses","category":"package","nicknames":[],"who_cares":["openemr","healthcare","self-hosted","php"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"patient data and user password hashes readable by any staff login","analyst_note":"Product name and ecosystem not listed; confirm vendor advisory at github.com for exact affected ranges.","how_to_check":"- Check the OpenEMR version in the install and confirm whether it is below `8.3.0`\n- Confirm whether low-privileged users can reach the Fee Sheet pages","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["openemr-8.3.0-or-later"],"who_is_affected":"Clinics and organizations that run OpenEMR before version 8.3.0 with user accounts that can open the Fee Sheet. The flaw needs a logged-in account, so systems where only trusted staff log in are still exposed to those staff. unknown whether hosted or managed OpenEMR deployments are patched by their provider.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"critical"},"cost_usd":0.000757,"input_tokens":4654,"output_tokens":583,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-124469':18A,21A '-2026':17A,20A '8.3.0':31B,80C 'authent':112C 'base':66B,128C 'bcrypt':75B,137C 'blind':67B,129C 'build':32B 'claus':36B,108C 'constant':121C 'contain':81C 'cve':16A,19A 'data':15A,133C 'drug':4A,48B,91C 'drug-inventori':47B,90C 'drugsalesservic':94C 'escap':52B 'extract':14A,71B,131C 'fee':2A,45B,88C,116C 'field':42B,103C 'hash':77B,138C 'healthcar':22B 'host':28B 'inject':69B,84C 'interpol':97C 'inventori':49B,92C 'let':6A 'line':119C 'log':8A,59B 'logged-in':7A,58B 'lookup':5A,50B,93C 'low':56B,110C 'low-privileg':55B,109C 'n':40B,100C 'openemr':1A,23B,29B,78C 'oracl':130C 'order':34B,106C 'packag':24B 'password':76B 'patient':72B,132C 'php':25B 'post':102C 'privileg':57B,111C 'prod':39B,99C 'product':118C 'record':73B 'run':11A,124C 'secur':136C 'self':27B 'self-host':26B 'selldrug':95C 'sheet':3A,46B,89C,117C 'sql':12A,68B,83C 'submit':115C 'subqueri':122C 'time':65B,127C 'time-bas':64B,126C 'use':63B 'user':10A,61B,113C,135C 'vulner':85C 'warehous':41B,101C 'without':51B","nicknames":[],"mitigations":[],"who_affected":"Clinics and organizations that run OpenEMR before version 8.3.0 with user accounts that can open the Fee Sheet. The flaw needs a logged-in account, so systems where only trusted staff log in are still exposed to those staff. unknown whether hosted or managed OpenEMR deployments are patched by their provider.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["critical","healthcare","openemr","package","php","selfhosted"],"campaign_type":null,"search_a":"'-124469':18A,21A '-2026':17A,20A 'cve':16A,19A 'data':15A 'drug':4A 'extract':14A 'fee':2A 'let':6A 'log':8A 'logged-in':7A 'lookup':5A 'openemr':1A 'run':11A 'sheet':3A 'sql':12A 'user':10A","search_b":"'8.3.0':31B 'base':66B 'bcrypt':75B 'blind':67B 'build':32B 'claus':36B 'drug':48B 'drug-inventori':47B 'escap':52B 'extract':71B 'fee':45B 'field':42B 'hash':77B 'healthcar':22B 'host':28B 'inject':69B 'inventori':49B 'log':59B 'logged-in':58B 'lookup':50B 'low':56B 'low-privileg':55B 'n':40B 'openemr':23B,29B 'order':34B 'packag':24B 'password':76B 'patient':72B 'php':25B 'privileg':57B 'prod':39B 'record':73B 'self':27B 'self-host':26B 'sheet':46B 'sql':68B 'time':65B 'time-bas':64B 'use':63B 'user':61B 'warehous':41B 'without':51B","search_c":"'8.3.0':80C 'authent':112C 'base':128C 'bcrypt':137C 'blind':129C 'claus':108C 'constant':121C 'contain':81C 'data':133C 'drug':91C 'drug-inventori':90C 'drugsalesservic':94C 'extract':131C 'fee':88C,116C 'field':103C 'hash':138C 'inject':84C 'interpol':97C 'inventori':92C 'line':119C 'lookup':93C 'low':110C 'low-privileg':109C 'n':100C 'openemr':78C 'oracl':130C 'order':106C 'patient':132C 'post':102C 'privileg':111C 'prod':99C 'product':118C 'run':124C 'secur':136C 'selldrug':95C 'sheet':89C,117C 'sql':83C 'submit':115C 'subqueri':122C 'time':127C 'time-bas':126C 'user':113C,135C 'vulner':85C 'warehous':101C","cause_entry":null,"cause_path":null,"first_public_at":"2026-08-18T08:37:32+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/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-124469","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-124469","severity":null,"published_at":"2026-11-08T14:18:15+00:00","modified_at":"2026-11-08T14:18:15+00:00","first_seen_at":"2026-11-08T14:48:40+00:00","fetched_at":"2026-11-08T14:48:40+00:00","note":null}],"documents":[{"id":102124,"url":"https://github.com/openemr/openemr/security/advisories/GHSA-cg8c-2v5q-29g7","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-08-18T08:37:32+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":102125,"url":"https://www.vulncheck.com/advisories/openemr-before-8.3.0-sql-injection-via-fee-sheet-warehouse-parameter","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"}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}