<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>OpenEMR (&lt; 8.4.0) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/openemr--8.4.0/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Sun, 08 Nov 2026 23:20:40 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/openemr--8.4.0/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>OpenEMR: Local file inclusion and remote code execution (CVE-2026-124467)</title><link>https://feed.craftedsignal.io/briefs/2026-11-openemr-lfi/</link><pubDate>Sun, 08 Nov 2026 23:20:40 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-11-openemr-lfi/</guid><description>OpenEMR versions prior to 8.4.0 contain a local file inclusion vulnerability in the ESign router, allowing authenticated attackers to execute arbitrary code via a malicious file upload.</description><content:encoded><![CDATA[<p>OpenEMR versions before 8.4.0 contain a local file inclusion (LFI) vulnerability in the ESign router component located in <code>library/ESign/Router.php</code>. The vulnerability arises because the <code>module</code> parameter is passed into a <code>require_once</code> statement without sanitization. Additionally, the application's fax module (<code>faxProcessUploads</code>) allows the writing of files with attacker-controlled content to a predictable temporary path without validating file extensions. An authenticated attacker can combine these flaws to upload a malicious PHP file masquerading as a controller, and then trigger its execution by requesting the ESign index file with a path-traversal payload in the <code>module</code> parameter.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker authenticates to the OpenEMR instance.</li>
<li>Attacker interacts with the fax module via <code>faxProcessUploads</code>.</li>
<li>Attacker uploads a file containing malicious PHP code.</li>
<li>The application saves the file to a predictable temporary directory on the server.</li>
<li>Attacker makes a request to <code>interface/esign/index.php</code>.</li>
<li>Attacker provides a path-traversal string in the <code>module</code> parameter to point to the uploaded PHP file.</li>
<li><code>library/ESign/Router.php</code> executes <code>require_once</code> on the malicious file, resulting in remote code execution.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows an authenticated attacker to achieve remote code execution on the underlying server, potentially leading to full system compromise.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade OpenEMR to version 8.4.0 or later immediately to address the vulnerabilities in the ESign router and fax module.</li>
<li>Review access logs for requests to <code>interface/esign/index.php</code> containing path traversal sequences (e.g., <code>../</code>, <code>..%2f</code>).</li>
<li>Audit the temporary directory used by the fax module for unexpected <code>.php</code> files.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>lfi</category><category>rce</category><category>web-vulnerability</category></item><item><title>OpenEMR: Missing authorization in portal onsite-document APIs (CVE-2026-124484)</title><link>https://feed.craftedsignal.io/briefs/2026-11-openemr-auth-bypass-26f41790/</link><pubDate>Sun, 08 Nov 2026 15:36:31 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-11-openemr-auth-bypass-26f41790/</guid><description>OpenEMR versions prior to 8.4.0 contain a missing authorization flaw allowing authenticated users to access and modify cross-patient records by manipulating API parameters.</description><content:encoded><![CDATA[<p>OpenEMR versions before 8.4.0 contain an authorization vulnerability in the portal onsite-document API endpoints. The vulnerability allows an authenticated core user to access, list, read, or overwrite cross-patient documents, signatures, and template data. This is achieved by omitting the 'patientId' parameter from API requests and providing arbitrary record IDs.</p>
<h2 id="impact">Impact</h2>
<p>Successful exploitation results in unauthorized access to sensitive medical records and the ability to modify or overwrite patient document data and signatures, potentially leading to unauthorized data exposure and integrity loss.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Patch OpenEMR to version 8.4.0 or later immediately to remediate the authorization check flaw.</li>
<li>Audit web server logs for requests to portal onsite-document API endpoints that lack a 'patientId' parameter.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category></item><item><title>OpenEMR: Incorrect authorization in prescription REST API (CVE-2026-124483)</title><link>https://feed.craftedsignal.io/briefs/2026-11-openemr-auth-bypass-ba3c3f5b/</link><pubDate>Sun, 08 Nov 2026 15:36:23 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-11-openemr-auth-bypass-ba3c3f5b/</guid><description>OpenEMR versions prior to 8.4.0 contain an incorrect authorization flaw in the prescription REST API, allowing authenticated staff to forge or deactivate patient prescriptions.</description><content:encoded><![CDATA[<p>OpenEMR versions before 8.4.0 contain an incorrect authorization vulnerability in the prescription REST API. The API improperly validates requests by checking the patients.med ACL instead of the intended patients.rx ACL and fails to verify required permission bits. This allows an authenticated staff user with basic read-only access to perform unauthorized actions, including the enumeration of prescription UUIDs, the forging of prescriptions for any patient, and the deactivation of existing prescriptions across the system.</p>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows authenticated staff users to manipulate prescription data, which could result in unauthorized medical prescriptions or the disruption of existing patient care. The scope of the vulnerability is tenant-wide.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade OpenEMR to version 8.4.0 or later to apply the fix for CVE-2026-124483.</li>
<li>Until patching is complete, audit access logs for high-frequency or unauthorized access to prescription REST API endpoints by users who do not require such access for their roles.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>web-application</category><category>medical-software</category><category>authorization-bypass</category><category>cve-2026-124483</category></item><item><title>OpenEMR: FHIR API authorization bypass (CVE-2026-124480)</title><link>https://feed.craftedsignal.io/briefs/2026-11-openemr-auth-bypass-18ffda42/</link><pubDate>Sun, 08 Nov 2026 15:36:16 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-11-openemr-auth-bypass-18ffda42/</guid><description>OpenEMR versions before 8.4.0 contain an authorization bypass vulnerability allowing authenticated users to exfiltrate cross-patient questionnaire data via the FHIR API.</description><content:encoded><![CDATA[<p>OpenEMR versions prior to 8.4.0 contain an authorization bypass vulnerability in the FHIR API implementation. Authenticated users with low privileges can bypass FHIR scope restrictions by reusing the 'api_csrf_token_js' value from a session in an 'APICSRFTOKEN' HTTP header. This enables unauthorized access to cross-patient 'QuestionnaireResponse' data, leading to the potential exfiltration of sensitive protected health information (PHI) via the 'GET /fhir/QuestionnaireResponse' endpoint.</p>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows low-privileged users to exfiltrate site-wide PHI contained within FHIR QuestionnaireResponse objects, bypassing existing scope controls.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to OpenEMR 8.4.0 or later to remediate the authorization logic in the FHIR API.</li>
<li>Audit access logs for the 'GET /fhir/QuestionnaireResponse' endpoint to identify patterns of unauthorized enumeration by low-privileged accounts.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category></item><item><title>OpenEMR: Server-side request forgery in OAuth2 client registration (CVE-2026-124466)</title><link>https://feed.craftedsignal.io/briefs/2026-11-openemr-ssrf/</link><pubDate>Sun, 08 Nov 2026 15:34:48 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-11-openemr-ssrf/</guid><description>OpenEMR versions prior to 8.4.0 contain an SSRF vulnerability in the OAuth2 client registration process that allows unauthenticated attackers to probe internal services and cloud metadata endpoints.</description><content:encoded><![CDATA[<p>OpenEMR versions before 8.4.0 are susceptible to a server-side request forgery (SSRF) vulnerability. The flaw exists within the OAuth2 client registration mechanism, where an unvalidated <code>jwks_uri</code> can be registered. An unauthenticated attacker can subsequently invoke the token introspection endpoint using an unsigned <code>client_assertion</code>, forcing the OpenEMR server to initiate HTTP requests to arbitrary destinations. This can be used to perform internal network reconnaissance or access sensitive cloud metadata services.</p>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows unauthenticated attackers to interact with internal-only services or cloud metadata endpoints (e.g., 169.254.169.254) from the perspective of the vulnerable server, potentially leading to unauthorized data access or credential exfiltration.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade OpenEMR to version 8.4.0 or later immediately.</li>
<li>Audit OAuth2 client registration logs for suspicious <code>jwks_uri</code> entries pointing to unexpected domains or internal IP ranges.</li>
<li>Restrict the server's egress traffic via network security groups to prevent unauthorized outbound connections to internal service endpoints or cloud metadata services.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category></item><item><title>OpenEMR: SQL injection via mass assignment in patient portal (CVE-2026-124444)</title><link>https://feed.craftedsignal.io/briefs/2026-11-openemr-sql-injection/</link><pubDate>Sun, 08 Nov 2026 15:31:22 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-11-openemr-sql-injection/</guid><description>OpenEMR versions before 8.4.0 contain a mass assignment vulnerability in the patient portal OnsiteDocument query API that facilitates SQL injection.</description><content:encoded>&lt;p>OpenEMR before 8.4.0 contains a mass assignment vulnerability in the patient portal OnsiteDocument query API. The flaw allows request parameters to set bitwise criteria filters that are placed unquoted into the SQL WHERE clause. Authenticated patient portal users can exploit this to perform SQL injection and read any database table, including other patients' records and staff password hashes.&lt;/p>
</content:encoded><category domain="severity">high</category><category domain="type">advisory</category></item></channel></rss>