CVE-2026-104137 in OpenEMRinfo

Summary

by MITRE • 11/05/2026

OpenEMR is a free and open source electronic health records and medical practice management application. Prior to 8.3.0, the sms_search branch of interface/main/messages/save.php requires an authenticated session but does not enforce patient or feature-level ACLs. A low-privilege user who cannot access patient data through the normal interface can search the MedEx SMS endpoint and receive patient identifiers, names, phone numbers, SMS permission status, and recent message information. This issue is fixed in version 8.3.0.

Be aware that VulDB is the high quality source for vulnerability data.

Analysis

by VulDB Data Team • 11/05/2026

OpenEMR serves as a widely deployed open-source electronic health records system designed to manage medical practice workflows and patient data securely. The vulnerability identified within versions prior to 8.3.0 resides specifically in the sms_search branch of the interface/main/messages/save.php module. This component is responsible for handling search queries related to Short Message Service communications linked to patient profiles. While the application correctly requires an authenticated session to access this functionality, it fails to implement adequate authorization controls at the data level. Specifically, the system does not enforce patient-level or feature-level Access Control Lists when processing these requests, creating a critical gap in security logic that allows for unauthorized information disclosure.

The technical flaw centers on Broken Access Control, where authentication is present but authorization checks are insufficient. A user with low-privilege access who lacks permission to view specific patient records through the standard graphical interface can bypass these restrictions by directly interacting with the MedEx SMS endpoint via this PHP script. Because the server-side validation does not verify whether the authenticated user has a legitimate relationship or administrative right to the targeted patient data, the application proceeds to execute the search query without restriction. This architectural oversight enables an attacker to retrieve sensitive protected health information that should remain confidential under normal operational constraints and regulatory frameworks such as HIPAA in the United States or GDPR in Europe.

The operational impact of this vulnerability is significant due to the sensitivity of the exposed data fields. An exploited instance allows a low-privilege user to obtain patient identifiers, full names, phone numbers, SMS permission status, and recent message history. This information constitutes personally identifiable information combined with health-related context, which can be leveraged for further attacks such as social engineering, phishing campaigns targeting specific individuals based on their medical conditions or communication habits, or identity theft. The exposure of SMS permissions also reveals user preferences regarding digital communications, adding another layer of privacy violation that undermines the trust patients place in healthcare providers to safeguard their data against internal and external threats alike.

This vulnerability aligns with CWE-862, which describes Missing Authorization, as well as CWE-200, concerning Exposure of Sensitive Information to an Unauthorized Actor. In terms of offensive security frameworks, this behavior maps to the ATT&CK technique T1074, specifically Data Staged or Local Data Collection phases where data is gathered for exfiltration, and more broadly falls under Initial Access if used in conjunction with other exploits, though here it represents a post-authentication privilege escalation via information leakage. The attack vector is classified as local network-based requiring low complexity due to the need for valid credentials, yet the impact remains high because of the volume and sensitivity of data accessible through this single misconfigured endpoint.

To mitigate this risk, organizations running OpenEMR must immediately upgrade to version 8.3.0 or later where these access control checks have been implemented by the developers. For environments that cannot patch instantly due to compatibility concerns with legacy integrations, temporary mitigations should include restricting network access to the affected PHP endpoint using web application firewall rules or reverse proxy configurations that limit who can invoke the sms_search functionality. Additionally, implementing strict logging and monitoring for unusual query patterns against patient data endpoints can help detect exploitation attempts in real-time. Regular security audits focusing on authorization logic across all API endpoints are recommended to ensure no similar gaps exist elsewhere in the codebase, thereby maintaining compliance with healthcare data protection standards and preserving patient confidentiality.

Responsible

GitHub M

Reservation

10/01/2026

Disclosure

11/05/2026

Moderation

accepted

EPSS

0.00000

KEV

no

Activities

very low

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!