CVE-2026-46518
Received Received - Intake
Stored XSS in OpenEMR Patient Portal via Multi-Print Feature

Publication date: 2026-06-10

Last updated on: 2026-06-10

Assigner: GitHub, Inc.

Description
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.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-06-10
Last Modified
2026-06-10
Generated
2026-06-10
AI Q&A
2026-06-10
EPSS Evaluated
N/A
NVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
openemr openemr to 8.0.0.1 (exc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-79 The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
CWE-862 The product does not perform an authorization check when an actor attempts to access a resource or perform an action.
Attack-Flow Graph
AI Quick Actions
Instant insights powered by AI
Compliance Impact

The vulnerability allows a patient portal user to execute arbitrary JavaScript in a clinician's authenticated session, potentially exposing sensitive patient data such as demographic information and session tokens. This cross-site scripting (XSS) flaw bypasses audit review workflows and enables unauthorized actions as the clinician, which could lead to unauthorized access or modification of protected health information (PHI).

Such unauthorized access and potential data exposure can negatively impact compliance with regulations like HIPAA, which mandates the protection of patient health information and requires safeguards against unauthorized access. Similarly, GDPR requires strict controls over personal data processing and breach prevention. This vulnerability undermines these controls by allowing attackers to exploit trust boundaries and access sensitive data.

Executive Summary

CVE-2026-46518 is a stored cross-site scripting (XSS) vulnerability in OpenEMR versions prior to 8.0.0.1, specifically in the prescription CSS/HTML multi-print feature.

The vulnerability occurs because patient demographic fields such as name and address are rendered without proper output encoding in the multiprintcss_header() function.

A patient portal user can exploit this by injecting malicious JavaScript into their own patient data via the PUT api/patient/:num endpoint, which bypasses the intended audit review workflow.

When a clinician uses the CSS/HTML multi-print option for the patient's prescription, the injected script executes in the clinician's authenticated browser session.

This allows the attacker to access CSRF tokens, session data, and perform actions as the clinician, effectively crossing the patient-to-clinician trust boundary.

Impact Analysis

This vulnerability can have serious impacts if exploited.

  • An attacker with patient portal access can inject malicious scripts that execute in a clinician's session.
  • The attacker can steal CSRF tokens and session data, potentially hijacking the clinician's session.
  • The attacker can perform unauthorized actions as the clinician, which may include accessing or modifying sensitive medical records.
  • This breaks the trust boundary between patient and clinician, potentially leading to data breaches and unauthorized system control.
Detection Guidance

Detection of this vulnerability involves identifying if patient portal users have injected malicious JavaScript into patient demographic fields via the PUT api/patient/:num endpoint.

One approach is to monitor or log API calls to the PUT api/patient/:num endpoint for unusual or suspicious input containing HTML or JavaScript code.

Additionally, inspecting the stored patient demographic data for embedded scripts or HTML tags can help detect exploitation attempts.

Network commands or queries could include searching web server logs for PUT requests to api/patient/ endpoints with payloads containing script tags or suspicious HTML.

For example, using grep on server logs: `grep -i 'PUT /api/patient/' /var/log/openemr/access.log | grep -E '<script|<.*onerror|<.*onload'` to find potential script injections.

Mitigation Strategies

The primary mitigation step is to upgrade OpenEMR to version 8.0.0.1 or later, where this vulnerability has been patched.

Until the upgrade can be applied, restrict patient portal users' ability to modify demographic fields or disable the CSS/HTML multi-print feature to prevent execution of injected scripts.

Implement monitoring of API usage to detect and block suspicious PUT requests to the patient data endpoint.

Educate clinicians to avoid using the vulnerable multi-print option until the patch is applied.

Chat Assistant
Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-46518. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70
EPSS Chart