CVE-2020-13569

8.8 HIGH

📋 TL;DR

This CSRF vulnerability in OpenEMR's GACL functionality allows attackers to trick authenticated users into performing unintended actions by sending specially crafted HTTP requests. It affects OpenEMR 5.0.2 and development version 6.0.0, potentially enabling attackers to execute arbitrary requests with the victim's privileges.

💻 Affected Systems

Products:
  • OpenEMR
Versions: 5.0.2 and development version 6.0.0 (commit babec93f600ff1394f91ccd512bcad85832eb6ce)
Operating Systems: All platforms running OpenEMR
Default Config Vulnerable: ⚠️ Yes
Notes: Affects the GACL (Granular Access Control List) functionality specifically. Requires user authentication for exploitation.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of the OpenEMR system, allowing attackers to modify patient records, access sensitive health data, or execute administrative functions as the victim user.

🟠

Likely Case

Unauthorized modification of patient data, configuration changes, or privilege escalation within the OpenEMR application.

🟢

If Mitigated

Limited impact with proper CSRF protections, same-origin policies, and user awareness training in place.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires the victim to be authenticated and visit a malicious page while logged into OpenEMR.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: OpenEMR 5.0.2.1 and later versions

Vendor Advisory: https://www.open-emr.org/wiki/index.php/OpenEMR_Patches

Restart Required: No

Instructions:

1. Update to OpenEMR 5.0.2.1 or later. 2. Apply CSRF protection tokens to all GACL-related forms and endpoints. 3. Verify the fix by testing GACL functionality with CSRF testing tools.

🔧 Temporary Workarounds

Implement CSRF Protection Headers

all

Add SameSite cookie attributes and CSRF tokens to mitigate attack surface

Set-Cookie: session=value; SameSite=Strict; Secure; HttpOnly

Restrict GACL Access

all

Limit access to GACL functionality to administrative users only

Modify OpenEMR ACL configuration to restrict GACL module access

🧯 If You Can't Patch

  • Implement web application firewall (WAF) rules to detect and block CSRF patterns
  • Educate users about CSRF risks and safe browsing practices when accessing OpenEMR

🔍 How to Verify

Check if Vulnerable:

Check OpenEMR version via admin interface or by examining source code version markers. If running 5.0.2 or development version 6.0.0 with vulnerable commit, system is vulnerable.

Check Version:

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

Verify Fix Applied:

Test GACL functionality with CSRF testing tools like OWASP ZAP or Burp Suite to confirm CSRF tokens are properly implemented.

📡 Detection & Monitoring

Log Indicators:

  • Multiple GACL-related requests from same user in short timeframe
  • GACL modifications from unexpected IP addresses or user agents

Network Indicators:

  • HTTP POST requests to GACL endpoints without proper referrer headers or CSRF tokens
  • Cross-origin requests to OpenEMR GACL functionality

SIEM Query:

source="openemr" AND (uri_path="*gacl*" OR uri_path="*acl*") AND http_method="POST" AND NOT (referrer="*openemr*")

🔗 References

📤 Share & Export