{"id":"CVE-2026-103939","kind":"vulnerability","aliases":["CVE-2026-103939"],"related":[],"title":"OpenEMR: Weno module lets any user empty the pharmacy directory","description":"OpenEMR is a free and open source electronic health records and medical practice management application. Prior to 8.3.0, interface/modules/custom_modules/oe-module-weno/scripts/file_download.php has no ACL or CSRF check and ignores the result of validateAdminCredentials(). When the Weno module is enabled, the default GET path calls PharmacyService::removeWenoPharmacies() before attempting a refetch, allowing any authenticated user to truncate the weno_pharmacy table and allowing a cross-site request to trigger the same operation through a logged-in victim. A failed later download can leave the e-prescribing pharmacy directory empty and unavailable. This issue is fixed in version 8.3.0.","summary":"OpenEMR's Weno e-prescribing module has a download script with no access check or CSRF protection, so any logged-in user, or a cross-site request triggered through a logged-in victim, can delete the weno_pharmacy table. A failed re-download can leave the pharmacy directory empty and e-prescribing unavailable.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["healthcare","openemr","php","runtime","self-hosted"],"not_affected_if":["openemr-8.3.0-or-later","weno-module-disabled"],"how_to_check":"- Check the OpenEMR version in the application's version settings or `composer.json`; versions below `8.3.0` are affected.\n- Confirm the Weno module is enabled under the module manager (`interface/modules/custom_modules/oe-module-weno` exists).","fix":"- OpenEMR: upgrade 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:27+00:00","updated_at":"2026-11-05T20:43:27+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-11-05T20:43:27Z","model":"claude-haiku-5-5","output":{"fix":"- OpenEMR: upgrade to `8.3.0` or later.","reach":"network","title":"OpenEMR: Weno module lets any user empty the pharmacy directory","impact":"low","summary":"OpenEMR's Weno e-prescribing module has a download script with no access check or CSRF protection, so any logged-in user, or a cross-site request triggered through a logged-in victim, can delete the weno_pharmacy table. A failed re-download can leave the pharmacy directory empty and e-prescribing unavailable.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["openemr","healthcare","self-hosted","php"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"pharmacy directory table deleted, e-prescribing unavailable","analyst_note":"","how_to_check":"- Check the OpenEMR version in the application's version settings or `composer.json`; versions below `8.3.0` are affected.\n- Confirm the Weno module is enabled under the module manager (`interface/modules/custom_modules/oe-module-weno` exists).\n- unknown for any other check.","plain_action":"","needs_analyst":false,"not_affected_if":["weno-module-disabled","openemr-8.3.0-or-later"],"who_is_affected":"Clinics and practices running OpenEMR before 8.3.0 with the Weno e-prescribing module enabled. Installations without the Weno module, or running 8.3.0 or later, are not affected.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000718,"input_tokens":4389,"output_tokens":559,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-103939':13A,16A '-2026':12A,15A '8.3.0':100C,180C 'access':37B 'acl':104C 'allow':131C,142C 'applic':97C 'attempt':128C 'authent':133C 'call':124C 'check':38B,107C 'cross':51B,145C 'cross-sit':50B,144C 'csrf':40B,106C 'cve':11A,14A 'default':121C 'delet':62B 'directori':10A,76B,170C 'download':33B,71B,162C 'e':28B,80B,167C 'e-prescrib':27B,79B,166C 'electron':90C 'empti':7A,77B,171C 'enabl':119C 'fail':68B,160C 'fix':177C 'free':86C 'get':122C 'health':91C 'healthcar':17B 'host':23B 'ignor':109C 'interface/modules/custom_modules/oe-module-weno/scripts/file_download.php':101C 'issu':175C 'later':161C 'leav':73B,164C 'let':4A 'log':45B,58B,156C 'logged-in':44B,57B,155C 'manag':96C 'medic':94C 'modul':3A,30B,117C 'open':88C 'openemr':1A,18B,24B,83C 'oper':152C 'path':123C 'pharmaci':9A,65B,75B,139C,169C 'pharmacyservic':125C 'php':19B 'practic':95C 'prescrib':29B,81B,168C 'prior':98C 'protect':41B 're':70B 're-download':69B 'record':92C 'refetch':130C 'removewenopharmaci':126C 'request':53B,147C 'result':111C 'runtim':20B 'script':34B 'self':22B 'self-host':21B 'site':52B,146C 'sourc':89C 'tabl':66B,140C 'trigger':54B,149C 'truncat':136C 'unavail':82B,173C 'user':6A,47B,134C 'validateadmincredenti':113C 'version':179C 'victim':60B,158C 'weno':2A,26B,64B,116C,138C","nicknames":[],"mitigations":[],"who_affected":"Clinics and practices running OpenEMR before 8.3.0 with the Weno e-prescribing module enabled. Installations without the Weno module, or running 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-18T08:48:33+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-103939","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-103939","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":79807,"url":"https://github.com/openemr/openemr/commit/f760adc7bddaf9d118e1a0d40590e686783ed21b","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":79812,"url":"https://github.com/openemr/openemr/security/advisories/GHSA-xhv3-qr55-56h3","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-08-18T08:48:33+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"}