/

CVE-2026-104133

Severity:

HIGH RISK

(7.1)

Missing Authorization (CWE-862) in OpenEMR DORN Module

CVE-2026-104133

Received

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-862

Impact:

Unauthorized modification and corruption of lab-ordering configuration

Severity:

HIGH RISK

(7.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

OpenEMR's DORN compendium installation endpoint checks authentication and CSRF protections but does not enforce the admin/users access control used by related administration scripts. When the DORN module is enabled, a low-privilege authenticated user may trigger changes that delete lab procedure types and deactivate order types, potentially corrupting lab-ordering configuration.

OpenEMR's DORN compendium installation endpoint checks authentication and CSRF protections but does not enforce the admin/users access control used by related administration scripts. When the DORN module is enabled, a low-privilege authenticated user may trigger changes that delete lab procedure types and deactivate order types, potentially corrupting lab-ordering configuration.

Affected context

The issue is in OpenEMR's DORN module compendium installation flow. It may be present when the module is enabled and the endpoint is reachable by authenticated users who do not have the administrative ACL required by sibling DORN administration scripts. The uninstall operation can alter procedure and order types before the reinstall step.

The issue is in OpenEMR's DORN module compendium installation flow. It may be present when the module is enabled and the endpoint is reachable by authenticated users who do not have the administrative ACL required by sibling DORN administration scripts. The uninstall operation can alter procedure and order types before the reinstall step.

Exploit preconditions

  • Attack surface: The DORN compendium installation endpoint in the web application
  • Required access: An authenticated account; administrative ACL privileges are not required by the vulnerable endpoint
  • Trigger point: Processing a request that supplies a labGuid while the DORN module is enabled
  • Why exploitation is possible: The endpoint checks authentication and CSRF but omits the relevant authorization check, allowing the uninstall operation to run for a low-privilege user
  • Attack surface: The DORN compendium installation endpoint in the web application
  • Required access: An authenticated account; administrative ACL privileges are not required by the vulnerable endpoint
  • Trigger point: Processing a request that supplies a labGuid while the DORN module is enabled
  • Why exploitation is possible: The endpoint checks authentication and CSRF but omits the relevant authorization check, allowing the uninstall operation to run for a low-privilege user

Why this happens

The endpoint does not verify that the authenticated user has the required administrative permission before performing a sensitive operation. This is a missing authorization control, mapped to CWE-862: Missing Authorization. Authentication establishes a user's identity, but does not by itself grant permission to delete or deactivate lab-ordering configuration.

The endpoint does not verify that the authenticated user has the required administrative permission before performing a sensitive operation. This is a missing authorization control, mapped to CWE-862: Missing Authorization. Authentication establishes a user's identity, but does not by itself grant permission to delete or deactivate lab-ordering configuration.

Potential impact

  • Lab procedure types could be deleted or order types deactivated without appropriate authorization.
  • Lab-ordering configuration may become corrupted or unavailable.
  • Administrators may need to restore the compendium and validate affected configuration.
  • Lab procedure types could be deleted or order types deactivated without appropriate authorization.
  • Lab-ordering configuration may become corrupted or unavailable.
  • Administrators may need to restore the compendium and validate affected configuration.

General mitigation guidance

Mitigations generally focus on applying authorization checks consistently to every sensitive operation.

  • Enforce the appropriate administrative ACL at the endpoint before invoking uninstall or reinstall actions.
  • Use centralized, deny-by-default authorization checks rather than relying on authentication or CSRF validation as substitutes for access control.
  • Limit the privileges of application components and accounts that can modify clinical configuration.
  • Validate requested operations and identifiers against the caller's permissions, and audit configuration-changing actions.

Mitigations generally focus on applying authorization checks consistently to every sensitive operation.

  • Enforce the appropriate administrative ACL at the endpoint before invoking uninstall or reinstall actions.
  • Use centralized, deny-by-default authorization checks rather than relying on authentication or CSRF validation as substitutes for access control.
  • Limit the privileges of application components and accounts that can modify clinical configuration.
  • Validate requested operations and identifiers against the caller's permissions, and audit configuration-changing actions.

How teams detect issues like this

  • Use static analysis or endpoint inventories to identify sensitive handlers that check authentication but lack authorization checks.
  • Review code paths that delete, deactivate, or reinstall configuration, comparing their permission checks with sibling administrative endpoints.
  • Add automated tests confirming that users without the required ACL cannot invoke configuration-changing operations.
  • Apply policy checks in code review and CI to require explicit authorization for sensitive actions; automated review tools may help flag inconsistent access-control patterns.
  • Use static analysis or endpoint inventories to identify sensitive handlers that check authentication but lack authorization checks.
  • Review code paths that delete, deactivate, or reinstall configuration, comparing their permission checks with sibling administrative endpoints.
  • Add automated tests confirming that users without the required ACL cannot invoke configuration-changing operations.
  • Apply policy checks in code review and CI to require explicit authorization for sensitive actions; automated review tools may help flag inconsistent access-control patterns.

Sources

SourceLink
github.comgithub.com/openemr/openemr/commit/7973cab3fe3f2fd2374ed71c02605e3c93491c36
github.comgithub.com/openemr/openemr/pull/13200
github.comgithub.com/openemr/openemr/releases/tag/v8_3_0
github.comgithub.com/openemr/openemr/security/advisories/GHSA-jh2v-595q-h9vc

Frequently asked

questions

A low-privilege authenticated user may be able to trigger the vulnerable operation when the DORN module is enabled and the endpoint is accessible.

No. The described issue is that the endpoint omits the admin/users ACL check, so an authenticated user without that administrative permission may be able to invoke the operation.

Require and enforce the appropriate authorization check before any destructive configuration changes take place.

Use centralized, deny-by-default access control, test sensitive endpoints with users of different privilege levels, and review configuration-changing code paths for consistent permission enforcement.

A low-privilege authenticated user may be able to trigger the vulnerable operation when the DORN module is enabled and the endpoint is accessible.

No. The described issue is that the endpoint omits the admin/users ACL check, so an authenticated user without that administrative permission may be able to invoke the operation.

Require and enforce the appropriate authorization check before any destructive configuration changes take place.

Use centralized, deny-by-default access control, test sensitive endpoints with users of different privilege levels, and review configuration-changing code paths for consistent permission enforcement.

Find out what's already
exploitable in your codebase.