Skip to main content

OpenEMR EUVDEUVD-2026-52345

| CVE-2026-39932 CRITICAL
Eval Injection (CWE-95)
2026-08-03 VulnCheck GHSA-pj78-c8jq-8xhf
9.4
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain OpenEMR admin credentials
  2. Delivery
    Run SQL to alter categories id column to VARCHAR
  3. Exploit
    Insert malicious PHP payload row
  4. Execution
    Any page instantiates CategoryTree
  5. Persist
    Unsanitized eval() executes payload
  6. Impact
    Command execution as web server user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Eval input sanitization
MITRE ATT&CK

1 technique across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires an authenticated OpenEMR administrator account (or equivalent ability to run arbitrary SQL), consistent with CVSS PR:H, plus the target running OpenEMR 8.2.0 or earlier with the standard Tree.class.php/CategoryTree component. The concrete steps are: use SQL execution to ALTER the categories table id column to VARCHAR, then INSERT a PHP payload row. The key limiting factor is the admin/SQL privilege prerequisite - this is not a default-configuration pre-auth RCE. The key amplifier is that once the payload is stored, the malicious eval() fires whenever any page instantiates CategoryTree, including unauthenticated and low-privilege pages, so no special configuration flag needs to be enabled and no further authentication is needed to trigger execution.

Impact

The vendor-supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H, score 9.4) reflects network-reachable, low-complexity exploitation that nonetheless requires high privileges (PR:H) - an administrator account - while producing full confidentiality, integrity and availability impact on both the vulnerable and subsequent systems. The PR:H is the single biggest limiter: an attacker must already hold admin (or the ability to run arbitrary SQL) before planting the payload, so this is a privilege-escalation-to-code-execution and persistence primitive rather than a pre-auth internet worm. Publicly available exploit code raises operational risk and lowers the skill barrier, but POC availability is distinct from active exploitation - this CVE is not in CISA KEV, and no EPSS score was provided, so widespread automated exploitation cannot be asserted. The notable amplifier is that the injected payload executes on unauthenticated pages, meaning post-implant triggering needs no privileges at all; treat this as a high priority for any internet-exposed OpenEMR handling PHI, but weight it behind unauthenticated-RCE issues given the admin prerequisite.

Exploit ScenarioDerived

An attacker who has obtained OpenEMR administrator credentials (via phishing, credential reuse, or a chained lower-severity flaw) uses the admin-accessible SQL execution path to alter the categories table id column to VARCHAR and insert a PHP web-shell payload. On the next request to any page that instantiates CategoryTree - including pages reachable without authentication - the unsanitized eval() runs the payload, giving the attacker command execution as the web server user. A public POC exists, so this can be reproduced quickly against a matching version.

Act Now Prioritize within 24-48h. Why: CRITICAL severity + public POC available.
No patch listed yet 0.8% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 03, 2026

Remote code execution in OpenEMR through 8.2.0 lets an authenticated administrator poison the document category tree so that arbitrary PHP runs as the web server user. The flaw lives in library/classes/Tree.class.php, where an attacker chains SQL execution to change the categories table id column to VARCHAR and store a PHP payload that a later unsanitized eval() executes every time any page - including unauthenticated and low-privilege ones - instantiates CategoryTree, turning a one-time admin action into a persistent server-wide backdoor. Publicly available exploit code exists (documented by VulnCheck and Jiva Security), and CVSS 4.0 is 9.4; no active exploitation is confirmed in CISA KEV at time of analysis.

RemediationAI

Upgrade to a fixed OpenEMR release above 8.2.0 once available; the source data does not include an exact patched version, so no vendor-released fix version is independently confirmed at time of analysis - track the VulnCheck advisory (https://www.vulncheck.com/advisories/openemr-remote-code-execution-via-categorytree-eval-injection) and the OpenEMR project for the tagged release. Until a patch is applied, tightly restrict administrative access and the ability to run raw SQL, since exploitation requires that privilege level; audit the categories table for an id column that has been altered to VARCHAR or that contains PHP code, and restore the column to its integer type to neutralize any planted payload (side effect: legitimate non-numeric category ids, if any custom ones exist, would break - verify before enforcing). Place OpenEMR behind a VPN or IP allowlist so unauthenticated pages that instantiate CategoryTree are not reachable from the internet (trade-off: reduces convenience of patient/remote portals), and enable database and web-server logging to detect the eval() trigger. Review the Jiva Security write-up (https://jivasecurity.com/writeups/openemr-eval-rce-category-tree-cve-2026-39932) for indicators.

Affected VersionsENISA

OpenEMR 0 ≤8.2.0

Affected Packages

euvd openemr no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

OpenEMR is a PHP-based open-source electronic health records and medical practice management system. The vulnerable component is the CategoryTree class in library/classes/Tree.class.php, which builds the document category hierarchy from rows in the categories database table. The root cause is CWE-95 (Improper Neutralization of Directives in Dynamically Evaluated Code, i.e. eval injection): category data read from the database is passed into a PHP eval() call without sanitization. Because the id column is normally an integer, the attacker first uses arbitrary SQL execution to alter the column to VARCHAR, allowing a text PHP payload to be stored where the tree-building logic will later feed it to eval(). The single affected package is identified by CPE cpe:2.3:a:openemr:openemr, with all versions up to and including 8.2.0 in scope.

Know when Openemr gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 9.4 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
vuln.today AI 9.1 CRITICAL

Requires admin/SQL privileges so PR:H; network-reachable and low-complexity; stored payload later executes via unauthenticated pages as the web-server user, justifying S:C with full C/I/A impact.

3.1 AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
High
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
High
Subsequent system: Integrity
High
Subsequent system: Availability
High

DescriptionCVE.org

OpenEMR through 8.2.0 contains a remote code execution vulnerability in the document category tree component (library/classes/Tree.class.php) that allows authenticated administrators to execute arbitrary operating system commands by injecting PHP payloads into the categories database table. Attackers can chain arbitrary SQL execution to alter the id column type to VARCHAR and insert a malicious PHP payload, which is then executed via an unsanitized eval() call whenever any page instantiates CategoryTree, including unauthenticated and low-privilege pages, resulting in command execution as the web server user.

Executive ViewAI

Why It Matters

OpenEMR versions through 8.2.0 contain a critical remote code execution vulnerability (CVE-2026-39932, CVSS 9.4) that allows an authenticated administrator to establish a persistent server-wide backdoor through document category manipulation, enabling arbitrary code execution accessible to all users including unauthenticated ones. This represents complete compromise of confidentiality, integrity, and availability for any healthcare organization running affected versions. Immediate mitigation is required to protect patient data and operational continuity.

Business Impact: Severe
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Restrict administrator console access via network firewall and VPN-only policies; (2) Implement continuous database monitoring and alerting for categories table schema changes (VARCHAR conversions, new columns); (3) Deploy file integrity monitoring on library/classes/Tree.class.php and related files; (4) Disable or restrict document category management features if operationally feasible; (5) Enforce application-level database user permissions with least privilege; (6) Maintain immutable offline backups; (7) Monitor for eval() execution patterns and suspicious PHP execution in web server audit logs.

Threat Intelligence Overview

EPSS Score
0.8%
Top 48% exploitable
Prevalence
Medium
leading open-source EHR, common in clinics but not ubiquitous
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC Yes
EPSS 0.8%
Patch available No
Active threat No
Deciding rule
CRITICAL severity + public POC available
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Very High
Technical Impact
Total

Priority Score

68
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +47
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

CVE-2013-10044 HIGH POC
8.7 Aug 01

An authenticated SQL injection vulnerability exists in OpenEMR ≤ 4.1.1 Patch 14 that allows a low-privileged attacker to

CVE-2026-24898 CRITICAL POC
10.0 Mar 03

Unauthenticated token disclosure in OpenEMR before 8.0.0. CVSS 10.0. PoC and patch available.

CVE-2026-24848 CRITICAL POC
9.9 Mar 03

Path traversal in OpenEMR 7.0.4 disposeDocument() allows file access. PoC available.

CVE-2026-24849 CRITICAL POC
9.9 Feb 25

Path traversal in OpenEMR electronic health records before fix allows authenticated users to read arbitrary files on the

CVE-2026-24908 CRITICAL POC
9.9 Feb 25

SQL injection in OpenEMR electronic health records before fix. Authenticated users can execute arbitrary SQL through the

CVE-2024-22611 CRITICAL POC
9.8 Apr 03

OpenEMR 7.0.2 is vulnerable to SQL Injection via \openemr\library\classes\Pharmacy.class.php, \controllers\C_Pharmacy.cl

CVE-2024-37734 CRITICAL POC
9.8 Jun 26

An issue in OpenEMR 7.0.2 allows a remote attacker to escalate privileges viaa crafted POST request using the noteid par

CVE-2026-25146 CRITICAL POC
9.6 Mar 03

Information disclosure in OpenEMR 5.0.2 to before 8.0.0 exposes sensitive data. PoC and patch available.

CVE-2012-0992 HIGH POC
8.5 Feb 07

interface/fax/fax_dispatch.php in OpenEMR 4.1.0 allows remote authenticated users to execute arbitrary commands via shel

CVE-2015-4453 MEDIUM
5.0 Jul 05

interface/globals.php in OpenEMR 2.x, 3.x, and 4.x before 4.2.0 patch 2 allows remote attackers to bypass authentication

CVE-2018-15152 CRITICAL POC
9.1 Aug 15

Authentication bypass vulnerability in portal/account/register.php in versions of OpenEMR before 5.0.1.4 allows a remote

CVE-2017-9380 HIGH POC
8.8 Jun 02

OpenEMR 5.0.0 and prior allows low-privilege users to upload files of dangerous types which can result in arbitrary code

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy