CVE-2026-124467: OpenEMR local file inclusion and arbitrary code execution via ESign and fax modules

CVE-2026-124467 · Severity: high · CVSS 8.8 · Published 2026-11-08

OpenEMR is an open-source medical records and practice management system. An authenticated user can achieve remote code execution by chaining two vulnerabilities: uploading a malicious PHP file through the fax module, then exploiting a path-traversal flaw in the ESign module to execute it. This allows a low-privilege user to run arbitrary commands as the web server, potentially compromising patient data and system integrity.

Technologies: OpenEMR. Vendors: OpenEMR.

Quick answers

Is CVE-2026-124467 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-124467 being exploited in the wild.
How severe is CVE-2026-124467?
High severity, with a CVSS score of 8.8, published 8 November 2026.
Which products and versions are affected?
OpenEMR before 8.4.0.
Is there a fix for CVE-2026-124467?
Yes: fixed in 8.4.0. Until then: Disable the fax module if not in use. If the module is required, restrict access to interface/esign/index.php and faxProcessUploads endpoints via firewall or access control lists to limit exposure to trusted users only. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-124467 attacked?
It is attacked over the network, in a web application.
Am I affected by CVE-2026-124467?
Check whether you run OpenEMR at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • Fixed in: 8.4.0

Disable the fax module if not in use. If the module is required, restrict access to interface/esign/index.php and faxProcessUploads endpoints via firewall or access control lists to limit exposure to trusted users only.

Technical details

The vulnerability chains a path-traversal local file inclusion (LFI) in library/ESign/Router.php with an unrestricted file upload in the fax module. The ESign router accepts an unsanitized module parameter, applies only ucfirst() normalization (insufficient to block traversal), and uses it in a require_once statement to load /ESign/<module>/Controller.php. The fax module's faxProcessUploads() writes attacker-controlled filenames to a predictable temp directory (/tmp by default) with no extension validation. An authenticated attacker uploads a PHP file named Controller.php to the fax module, then requests the ESign router with a traversal payload (e.g., module=../../../../../../tmp/send) to include and execute the uploaded file.

Affected products

  • OpenEMR OpenEMR before 8.4.0

Timeline

  • 2026-09-13: advisory
  • 2026-11-08: disclosed

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.