CVE-2026-46518
Analyzed Analyzed - Analysis Complete

Stored XSS in OpenEMR Patient Portal via Multi-Print Feature

Vulnerability report for CVE-2026-46518, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-06-10

Last updated on: 2026-06-11

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-11
Generated
2026-06-30
AI Q&A
2026-06-10
EPSS Evaluated
2026-06-29
NVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
open-emr openemr to 8.0.0.1 (exc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-862 The product does not perform an authorization check when an actor attempts to access a resource or perform an action.
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.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
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.

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.

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