Skip to main content

OpenEMR CVE-2026-46518

HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-06-09 GitHub_M
8.7
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Register or log in to patient portal
  2. Delivery
    Send PUT api/patient/:num with HTML payload in name/address
  3. Exploit
    Payload stored in patient_data, audit review bypassed
  4. Install
    Clinician opens prescription multi-print view
  5. C2
    multiprintcss_header() renders payload unencoded
  6. Execute
    Script executes in clinician's authenticated session
  7. Impact
    Exfiltrate CSRF/session and act as clinician

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires (1) an authenticated patient portal account on the target OpenEMR instance (PR:L) with permission to call the PUT api/patient/:num REST endpoint, (2) the OpenEMR patient portal and REST API to be enabled and reachable by the attacker, and (3) a clinician to subsequently open the prescription CSS/HTML multi-print view for the attacker-controlled patient record (UI:R) so multiprintcss_header() renders the unsanitized name/address. Limiting factors: exploitation is not automatable (SSVC Automatable:no) because it depends on a clinician action against a specific patient; instances that do not expose the patient portal externally, that disable self-registration, or that do not use the prescription multi-print feature are substantially less exposed.

Impact

Signals are mixed but coherent. CVSS 8.7 (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N) reflects a network-reachable stored XSS that needs only a low-privileged portal account and a clinician opening the prescription print view, with scope change because execution moves from the portal trust zone into the clinician UI. EPSS 0.03% (9th percentile) and SSVC Exploitation:poc / Automatable:no / Technical Impact:partial indicate this is unlikely to be sprayed at scale - exploitation needs an existing patient relationship and a clinician interaction. There is no public exploit identified at time of analysis and the issue is not in CISA KEV. Net assessment: not a 'drop everything' emergency for mass exploitation, but a high-priority patch for any OpenEMR instance exposing the patient portal externally, because successful exploitation cleanly hijacks a clinician session in a regulated PHI environment. UI:R is real (a clinician must open the multi-print view), which is the main mitigating factor.

Exploit ScenarioDerived

A registered patient portal user (or attacker who self-registers, where permitted) calls PUT api/patient/:num with a name or address field containing a script payload such as an event-handler-bearing image tag, bypassing the normal audit-review queue. Later, a clinician opens the prescription CSS/HTML multi-print view for that patient; the payload executes in the clinician's authenticated OpenEMR session and exfiltrates the CSRF token and session cookie, or issues authenticated requests (create users, modify records) on the clinician's behalf. SSVC marks exploitation as POC and no public exploit is identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv3 – Jun 11, 2026

Stored cross-site scripting in OpenEMR before 8.0.0.1 lets an authenticated patient portal user inject HTML/JavaScript into demographic fields via the PUT api/patient/:num endpoint, which fires later in a clinician's authenticated session when the prescription CSS/HTML multi-print feature renders the patient name and address without output encoding. Because the payload executes inside the main OpenEMR UI under the clinician's session, the attacker crosses the patient-to-clinician trust boundary and can steal CSRF tokens, exfiltrate session data, and perform privileged actions as the clinician. SSVC currently rates exploitation as POC, no public exploit identified at time of analysis, and EPSS is 0.03% (9th percentile), but the cross-tenant trust crossing in a healthcare app makes the issue material for any internet-exposed deployment.

Earlier versions of this analysis (2)
v2 Jun 11, 2026 - 18:43 cvss changed CVSS 8.7

Stored cross-site scripting in OpenEMR prior to 8.0.0.1 lets an authenticated patient portal user inject arbitrary JavaScript that executes inside a clinician's authenticated session when the prescription CSS/HTML multi-print feature renders patient demographics. SSVC classifies exploitation as POC with partial technical impact, and no public exploit code has been identified at time of analysis; EPSS is very low (0.03%) consistent with a targeted, authenticated cross-tenant attack rather than mass exploitation.

v1 Jun 09, 2026 - 23:50 CVSS 7.7

Stored cross-site scripting in OpenEMR prior to version 8.0.0.1 allows portal patients to inject persistent JavaScript that executes in an authenticated clinician's browser session, crossing the patient-to-clinician trust boundary. The flaw resides in the prescription multi-print feature where patient demographic fields render without output encoding, and the PUT api/patient/:num endpoint lets portal users write attacker-controlled HTML directly into patient_data, bypassing the intended audit review workflow. No public exploit identified at time of analysis, though the vendor advisory (GHSA-4gh4-q39r-45wf) documents the issue and CVSS 7.7 reflects the cross-scope impact.

RemediationAI

Vendor-released patch: upgrade OpenEMR to 8.0.0.1 or later, as described in advisory https://github.com/openemr/openemr/security/advisories/GHSA-4gh4-q39r-45wf. If immediate upgrade is not possible, disable or restrict the patient portal's PUT api/patient/:num endpoint at the reverse proxy / API gateway so portal users cannot directly write demographics (side effect: portal-initiated demographic self-updates will stop working until the patched audit-review workflow is restored), and avoid using the prescription CSS/HTML multi-print feature for patients whose demographics were edited via the portal during the exposure window. Audit existing patient_data name and address fields for HTML/JavaScript content and sanitize stored values before any clinician next opens the multi-print view; enforcing a strict Content-Security-Policy that disallows inline script on the main OpenEMR UI will further reduce blast radius but may break legitimate inline-script usage in older themes.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

OpenEMR is a widely deployed open-source electronic health records and practice management web application written in PHP. The root cause is classic CWE-79 (Improper Neutralization of Input During Web Page Generation) in the multiprintcss_header() function, which concatenates patient demographic strings (name, address) directly into HTML output without HTML-entity encoding. The injection path bypasses OpenEMR's audit-review workflow that normally gates portal-supplied changes to patient_data: the PUT api/patient/:num REST endpoint writes attacker-controlled values straight into the demographics table, so when a clinician later opens the prescription multi-print CSS/HTML view, the stored payload renders into the parent OpenEMR origin. The CPE cpe:2.3:a:openemr:openemr:*:*:*:*:*:*:*:* covers all OpenEMR versions prior to the fixed 8.0.0.1 release.

Know when Openemr gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

NVD PRIMARY 8.7 HIGH
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
vuln.today AI 8.7 HIGH

Network-reachable stored XSS exploitable by a low-privileged portal user (PR:L); requires clinician to open multi-print view (UI:R); scope changes to clinician UI with high C/I, no availability impact.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

3
Analysis Updated
Jun 11, 2026 - 18:43 vuln.today
v3 - CVSS changed
Analysis Updated
Jun 11, 2026 - 18:43 vuln.today
v2 - CVSS changed
CVSS changed
Jun 11, 2026 - 18:37 NVD
7.7 (HIGH) 8.7 (HIGH)

DescriptionNVD

OpenEMR is a free and open source electronic health records and medical practice management application. Prior to version 8.0.0.1, a stored cross-site scripting vulnerability in the prescription CSS/HTML multi-print feature allows a patient portal user to execute arbitrary JavaScript in a clinician's browser session. Patient demographic fields (name, address) are rendered without output encoding in multiprintcss_header(), and portal patients can write attacker-controlled HTML directly into patient_data by calling the PUT api/patient/:num endpoint, which bypasses the intended audit review workflow. Because the XSS fires in the clinician's authenticated session on the main OpenEMR interface, the attacker can access CSRF tokens, session data, and perform actions as the clinician - crossing the patient-to-clinician trust boundary. This issue has been patched in version 8.0.0.1.

Executive ViewAI

Why It Matters

OpenEMR versions prior to 8.0.0.1 contain a stored cross-site scripting vulnerability in the patient portal that enables patient users to inject malicious code executing in clinician sessions. This crosses the trust boundary between patients and clinical staff, creating exposure to account compromise, unauthorized prescriptions, and unauthorized access to patient records. Healthcare organizations operating any version of OpenEMR must implement immediate controls or evaluate upgrade paths.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Implement interim controls: (1) restrict or disable prescription multi-print rendering from patient portal; (2) apply strict output encoding to patient name and address fields in all clinical staff-facing views; (3) implement audit logging and alerting for demographic field modifications from patient portal; (4) deploy server-side render of prescription previews without JavaScript execution capability; (5) use XSS detection signatures to identify payloads in patient demographic fields; (6) establish session isolation and anomaly detection for clinician account activity to catch unauthorized clinical actions post-compromise.

Threat Intelligence Overview

EPSS Score
0.0%
Top 91% exploitable
Data Quality
6 sources
Confidence: High
NVD CVE.org EPSS Vulnrichment GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.

Affected Products (CPE)NVD

cpe:2.3:a:openemr:openemr:*:*:*:*:*:*:*:*
CVE-2013-10044 HIGH POC
8.7 Aug 01

An authenticated SQL injection vulnerability exists in OpenEMR ≤ 4.1.1 Patch 14 that allows a low-privileged attacker to

CVE-2026-24898 CRITICAL POC
10.0 Mar 03

Unauthenticated token disclosure in OpenEMR before 8.0.0. CVSS 10.0. PoC and patch available.

CVE-2026-24848 CRITICAL POC
9.9 Mar 03

Path traversal in OpenEMR 7.0.4 disposeDocument() allows file access. PoC available.

CVE-2026-24849 CRITICAL POC
9.9 Feb 25

Path traversal in OpenEMR electronic health records before fix allows authenticated users to read arbitrary files on the

CVE-2026-24908 CRITICAL POC
9.9 Feb 25

SQL injection in OpenEMR electronic health records before fix. Authenticated users can execute arbitrary SQL through the

CVE-2024-22611 CRITICAL POC
9.8 Apr 03

OpenEMR 7.0.2 is vulnerable to SQL Injection via \openemr\library\classes\Pharmacy.class.php, \controllers\C_Pharmacy.cl

CVE-2024-37734 CRITICAL POC
9.8 Jun 26

An issue in OpenEMR 7.0.2 allows a remote attacker to escalate privileges viaa crafted POST request using the noteid par

CVE-2026-25146 CRITICAL POC
9.6 Mar 03

Information disclosure in OpenEMR 5.0.2 to before 8.0.0 exposes sensitive data. PoC and patch available.

CVE-2026-39932 CRITICAL POC
9.4 Aug 03

Remote code execution in OpenEMR through 8.2.0 lets an authenticated administrator poison the document category tree so

CVE-2012-0992 HIGH POC
8.5 Feb 07

interface/fax/fax_dispatch.php in OpenEMR 4.1.0 allows remote authenticated users to execute arbitrary commands via shel

CVE-2015-4453 MEDIUM
5.0 Jul 05

interface/globals.php in OpenEMR 2.x, 3.x, and 4.x before 4.2.0 patch 2 allows remote attackers to bypass authentication

CVE-2018-15152 CRITICAL POC
9.1 Aug 15

Authentication bypass vulnerability in portal/account/register.php in versions of OpenEMR before 5.0.1.4 allows a remote

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy