CVE-2026-24908

9.9 CRITICAL

📋 TL;DR

OpenEMR versions before 8.0.0 contain an SQL injection vulnerability in the Patient REST API endpoint that allows authenticated users with API access to execute arbitrary SQL queries through the _sort parameter. This could lead to unauthorized database access, exposure of protected health information (PHI), and credential compromise. The vulnerability affects all OpenEMR installations using versions prior to 8.0.0.

💻 Affected Systems

Products:
  • OpenEMR
Versions: All versions prior to 8.0.0
Operating Systems: All platforms running OpenEMR
Default Config Vulnerable: ⚠️ Yes
Notes: Requires authenticated API access, but this is commonly granted in healthcare environments for integration purposes.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete database compromise leading to exposure of all PHI, credential theft, potential ransomware deployment, and complete system takeover.

🟠

Likely Case

Unauthorized access to patient records, extraction of sensitive health information, and potential credential harvesting from database tables.

🟢

If Mitigated

Limited impact due to proper network segmentation, API access restrictions, and database permission limitations.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

SQL injection through ORDER BY clauses is well-understood and easily weaponized. Requires authenticated API access but no special privileges beyond standard API credentials.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 8.0.0

Vendor Advisory: https://github.com/openemr/openemr/security/advisories/GHSA-rcc2-45v3-qmqm

Restart Required: Yes

Instructions:

1. Backup your OpenEMR installation and database. 2. Download OpenEMR version 8.0.0 or later from the official repository. 3. Follow the OpenEMR upgrade documentation for your specific deployment method. 4. Verify the patch by checking that the _sort parameter validation is properly implemented.

🔧 Temporary Workarounds

Disable Patient REST API Endpoint

all

Temporarily disable the vulnerable Patient REST API endpoint until patching can be completed.

# Modify OpenEMR configuration to disable REST API access
# Location varies by installation - typically in configuration files or .htaccess

Implement Web Application Firewall Rules

linux

Add WAF rules to block SQL injection attempts in the _sort parameter.

# Example ModSecurity rule:
SecRule ARGS:_sort "@detectSQLi" "id:1001,phase:2,deny,status:403,msg:'SQLi attempt in _sort parameter'"

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate OpenEMR from internet access
  • Apply principle of least privilege to API user accounts and database permissions

🔍 How to Verify

Check if Vulnerable:

Check OpenEMR version via admin interface or by examining source files. Versions prior to 8.0.0 are vulnerable.

Check Version:

Check OpenEMR version in admin interface or examine /sites/default/sqlconf.php for version information

Verify Fix Applied:

After upgrading to 8.0.0+, test the Patient REST API endpoint with SQL injection payloads in the _sort parameter to confirm they are properly rejected.

📡 Detection & Monitoring

Log Indicators:

  • Unusual SQL queries in database logs
  • Multiple failed API authentication attempts followed by successful access
  • Unusual patterns in _sort parameter values in web server logs

Network Indicators:

  • Unusual database connections from web server IP
  • Large data transfers from database to external IPs

SIEM Query:

source="web_server_logs" AND (url="*_sort=*" AND (url="*UNION*" OR url="*SELECT*" OR url="*FROM*" OR url="*WHERE*"))

🔗 References

📤 Share & Export