/

CVE-2026-54641

Severity:

HIGH RISK

(7.7)

Broken Object Level Authorization (CWE-639) in OpenRemote

CVE-2026-54641

Deferred

Vulnerability type

Category:

Broken Object Level Authorization

CWE:

CWE-639

Impact:

Cross-Tenant Information Disclosure

Severity:

HIGH RISK

(7.7)

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

OpenRemote contains a broken object-level authorization issue in user-management methods that verify an administrator's role but do not confirm that the requested user belongs to the administrator's realm. A realm administrator may therefore retrieve profile data and role assignments for users in another tenant or the master realm.

OpenRemote contains a broken object-level authorization issue in user-management methods that verify an administrator's role but do not confirm that the requested user belongs to the administrator's realm. A realm administrator may therefore retrieve profile data and role assignments for users in another tenant or the master realm.

Affected context

The issue occurs in OpenRemote deployments using the affected user-resource operations for retrieving user profiles, client roles, or realm roles. Risk is present when a caller has the read:admin role and can provide a user identifier that is not scoped to the caller's authenticated realm.

The issue occurs in OpenRemote deployments using the affected user-resource operations for retrieving user profiles, client roles, or realm roles. Risk is present when a caller has the read:admin role and can provide a user identifier that is not scoped to the caller's authenticated realm.

Exploit preconditions

  • Attack surface: OpenRemote manager user-resource API
  • Required access: An authenticated account with the read:admin role, typically a realm administrator
  • Trigger point: Requests to the get, getUserClientRoles, or getUserRealmRoles methods
  • Why exploitation is possible: Authorization checks validate the caller's role but do not verify that the target UUID belongs to the requested and authenticated realm
  • Attack surface: OpenRemote manager user-resource API
  • Required access: An authenticated account with the read:admin role, typically a realm administrator
  • Trigger point: Requests to the get, getUserClientRoles, or getUserRealmRoles methods
  • Why exploitation is possible: Authorization checks validate the caller's role but do not verify that the target UUID belongs to the requested and authenticated realm

Why this happens

The underlying flaw is an object-level authorization failure. The application treats possession of a valid user identifier, combined with a broad administrative role, as sufficient authorization without enforcing tenant or realm ownership for the referenced object. This maps to CWE-639: Authorization Bypass Through User-Controlled Key, because a user-controlled identifier can select an object outside the caller's permitted security boundary.

The underlying flaw is an object-level authorization failure. The application treats possession of a valid user identifier, combined with a broad administrative role, as sufficient authorization without enforcing tenant or realm ownership for the referenced object. This maps to CWE-639: Authorization Bypass Through User-Controlled Key, because a user-controlled identifier can select an object outside the caller's permitted security boundary.

Potential impact

  • Exposure of user profile information across tenant boundaries
  • Disclosure of client-role and realm-role assignments
  • Revealing privileged accounts in another realm or the master realm
  • Increased risk of targeted privilege escalation or follow-on attacks
  • Loss of tenant isolation and violation of administrative data boundaries
  • Exposure of user profile information across tenant boundaries
  • Disclosure of client-role and realm-role assignments
  • Revealing privileged accounts in another realm or the master realm
  • Increased risk of targeted privilege escalation or follow-on attacks
  • Loss of tenant isolation and violation of administrative data boundaries

General mitigation guidance

Mitigation generally focuses on enforcing authorization at the object and tenant boundary rather than relying only on caller roles.

Common defensive patterns include:

  • Confirming that every requested user identifier belongs to the caller's authenticated realm
  • Deriving tenant or realm scope from trusted server-side identity context
  • Applying consistent object-level authorization to profile and role retrieval operations
  • Returning uniform denial responses for objects outside the caller's scope
  • Limiting administrative roles and separating master-realm privileges from tenant administration
  • Adding authorization tests for cross-tenant and cross-realm access attempts

Mitigation generally focuses on enforcing authorization at the object and tenant boundary rather than relying only on caller roles.

Common defensive patterns include:

  • Confirming that every requested user identifier belongs to the caller's authenticated realm
  • Deriving tenant or realm scope from trusted server-side identity context
  • Applying consistent object-level authorization to profile and role retrieval operations
  • Returning uniform denial responses for objects outside the caller's scope
  • Limiting administrative roles and separating master-realm privileges from tenant administration
  • Adding authorization tests for cross-tenant and cross-realm access attempts

How teams detect issues like this

Organizations can identify similar issues through:

  • Static analysis and code review checks for authorization decisions based only on user-supplied identifiers
  • Review of resource methods that accept UUIDs or other object keys without an explicit tenant-scope comparison
  • Integration tests that attempt access to objects in another realm and the master realm
  • API policy enforcement requiring tenant context to be verified before data retrieval
  • Audit-log analysis for repeated cross-realm object lookups or denied authorization events

Automated security review tools may help flag missing ownership checks, but authorization behavior should also be validated with runtime tests.

Organizations can identify similar issues through:

  • Static analysis and code review checks for authorization decisions based only on user-supplied identifiers
  • Review of resource methods that accept UUIDs or other object keys without an explicit tenant-scope comparison
  • Integration tests that attempt access to objects in another realm and the master realm
  • API policy enforcement requiring tenant context to be verified before data retrieval
  • Audit-log analysis for repeated cross-realm object lookups or denied authorization events

Automated security review tools may help flag missing ownership checks, but authorization behavior should also be validated with runtime tests.

Sources

SourceLink
github.comgithub.com/openremote/core/commit/de89b8d3af272d717bf297934c2cbc97243f08b7
github.comgithub.com/openremote/core/releases/tag/1.24.2
github.comgithub.com/openremote/core/security/advisories/GHSA-xqr9-4wvv-gvch

Frequently asked

questions

It may be remotely exploitable through the OpenRemote manager API when the attacker has an authenticated account with the required administrative role and can submit requests for user identifiers.

The attacker generally needs a valid realm-administrator account in the affected deployment. They do not need legitimate administrative access to the target realm if the authorization check fails to enforce realm ownership.

Enforce object-level authorization by verifying that the target user belongs to the caller's authenticated realm before returning profile or role data.

Treat every object identifier as untrusted, centralize tenant-scope checks, apply least privilege, and include cross-tenant authorization tests in code review and continuous integration.

It may be remotely exploitable through the OpenRemote manager API when the attacker has an authenticated account with the required administrative role and can submit requests for user identifiers.

The attacker generally needs a valid realm-administrator account in the affected deployment. They do not need legitimate administrative access to the target realm if the authorization check fails to enforce realm ownership.

Enforce object-level authorization by verifying that the target user belongs to the caller's authenticated realm before returning profile or role data.

Treat every object identifier as untrusted, centralize tenant-scope checks, apply least privilege, and include cross-tenant authorization tests in code review and continuous integration.

Find out what's already
exploitable in your codebase.