Summary
OpenEMR before 8.5.0 contains an authenticated SQL injection vulnerability in the Syndromic Surveillance module that allows users with Clinician-level privileges to read and modify arbitrary database contents by submitting crafted values in the form_icd_codes[] POST parameter to the syndromicsurveillance/index endpoint. Attackers can inject an unquoted numeric IN() clause and UNION DISTINCT SELECT statement using hex-encoded literals to abuse MySQL extractvalue() for error-based exfiltration of bcrypt password hashes and execute stacked queries that reset passwords, resulting in full administrative account takeover.
Remediation
References
- Patchhttps://github.com/openemr/openemr/commit/9b52cc0fc3a4eddd9fa7a096f6a3ac2a57d772d0
- Patchhttps://github.com/openemr/openemr/pull/14329
- Advisoryhttps://github.com/openemr/openemr/security/advisories/GHSA-w99c-jwcm-24hh
- Advisoryhttps://www.vulncheck.com/advisories/openemr-before-sql-injection-via-form-icd-codes
- Referencehttps://github.com/openemr/openemr/releases/tag/v8_5_0