Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain write:admin in any realm
-
DeliveryEnumerate master realm users
-
ExploitCraft cross-realm API request
-
InstallExploit missing authz check
-
C2Assign admin role to target user
-
ExecuteAuthenticate as master admin
-
ImpactFull Keycloak compromise
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Access control enforcement
MITRE ATT&CK
1 technique across 1 tactic: Defense Evasion The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Attacker must hold the write:admin client role in any Keycloak realm configured within the OpenRemote deployment. Attacker must possess or control a user UUID in the target realm they wish to compromise (typically master realm) - this could be their own low-privilege account in master, a service account, or any user whose credentials they can obtain after privilege escalation. Multi-realm Keycloak deployment is required; single-realm deployments do not expose the cross-realm attack surface. The Manager API endpoint /api/{realm}/user/{target-realm}/userRealmRoles/{userId} must be network-accessible to the attacker, which is the default configuration in standard OpenRemote deployments. Exploitation does NOT require the attacker to already have admin privileges (contradicting CVSS PR:N) but DOES require low-privilege authenticated access (write:admin role), suggesting CVSS vector may be misscored. The high attack complexity (AC:H) reflects the need to discover valid user UUIDs in the target realm and understand the multi-realm architecture, though Keycloak APIs often expose user enumeration capabilities that lower this barrier. |
| Impact | This represents a critical privilege escalation path despite the CVSS 7.0 (High) base score. The CVSS vector CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:L indicates network-accessible exploitation with high attack complexity and no privileges required, which appears inconsistent with the actual exploitation conditions. The description clearly states an attacker must first possess write:admin role in any realm and control a user UUID in the target realm - both PR:L (low privileges required) prerequisites not reflected in PR:N. This discrepancy suggests the CVSS vector may be incorrectly scored or the attack scenario involves an unauthenticated step not detailed in the description. Real-world risk is HIGH for multi-tenant OpenRemote deployments where different realms represent trust boundaries (e.g., separate customer environments). The attack grants complete Keycloak master realm control, enabling the attacker to create users, modify all realm configurations, and pivot to infrastructure access. EPSS data not available. Not listed in CISA KEV, indicating no confirmed widespread exploitation, though the detailed PoC in GitHub advisory GHSA-49vv-25qx-mg44 significantly lowers the barrier to exploitation. Attack complexity is rated High (AC:H) likely due to requiring specific knowledge of target user UUIDs and realm names, but this is easily obtainable through reconnaissance in most deployments. The high integrity impact (I:H) accurately reflects the severity of unauthorized realm role manipulation. |
| Exploit ScenarioDerived | An attacker creates a user account in a newly provisioned Keycloak realm (e.g., 'tenant-acme') and obtains the write:admin OpenRemote client role through legitimate access or social engineering. They enumerate the master realm via Keycloak's public endpoints to discover a low-privilege user UUID (e.g., a service account or dormant user). Using their tenant-acme credentials, they authenticate to the OpenRemote Manager API and craft a PUT request to /api/tenant-acme/user/master/userRealmRoles/{target-uuid} with payload ["admin"]. The vulnerable updateUserRealmRoles handler processes the 'master' realm parameter without validating authorization, granting the admin role in master realm to the target user UUID. The attacker then authenticates as that master realm user and gains full Keycloak administrator access, enabling them to create backdoor accounts, extract secrets, modify authentication flows, or compromise all tenant realms. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Apr 22, 2026
OpenRemote Manager allows privilege escalation to Keycloak master realm administrator through improper authorization in the Manager API. Users with write:admin permission in any non-master realm can manipulate realm role assignments in other realms, including master, by exploiting missing authorization checks in the updateUserRealmRoles endpoint. An attacker controlling any user in the master realm can grant themselves admin privileges, achieving full Keycloak administrator access. Vendor-released patch version 1.22.1 addresses this vulnerability. No public exploit code identified at time of analysis, though a detailed proof-of-concept is documented in the advisory.
RemediationAI
Upgrade OpenRemote Manager to version 1.22.1 or later, which implements proper authorization checks to validate that callers can only administer realms for which they have appropriate permissions. The patch is available via the GitHub release at https://github.com/openremote/openremote/releases/tag/1.22.1 and advisory at https://github.com/openremote/openremote/security/advisories/GHSA-49vv-25qx-mg44. For environments unable to immediately upgrade, implement compensating controls by restricting network access to the Manager API endpoint /api/{realm}/user/{target-realm}/userRealmRoles/{userId} to only trusted administrator networks or localhost, though this significantly degrades functionality. Alternatively, use a reverse proxy or API gateway to enforce additional authorization checks verifying that the authenticated user's realm matches the {target-realm} path parameter before forwarding requests to the Manager API - however this requires custom development and thorough testing to avoid breaking legitimate cross-realm administrative workflows. Audit existing Keycloak realm role assignments, particularly in the master realm, for unauthorized admin role grants that may indicate prior exploitation. Review application logs for suspicious PUT requests to /api/*/user/master/userRealmRoles/* paths originating from non-master realm authentication contexts.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in maven, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
OpenRemote Manager (pkg:maven/io.openremote:openremote-manager) is a Java-based IoT platform that integrates with Keycloak for identity and access management across multiple realms. The vulnerability exists in the UserResourceImpl.java REST API handler, specifically the updateUserRealmRoles method. This endpoint accepts a {realm} path parameter but fails to validate whether the authenticated caller has administrative privileges for that target realm - a classic CWE-284 (Improper Access Control) flaw. The Java code directly forwards the realm parameter to identityService.getIdentityProvider().updateUserRealmRoles() without checking if the caller's write:admin permission scope includes that realm. In Keycloak's multi-tenant architecture, realm isolation is security-critical; the master realm has elevated privileges to manage all other realms. By exploiting this missing authorization boundary check, an attacker with write:admin in realm A can issue API calls targeting realm B (including master), effectively bypassing Keycloak's intended realm isolation model.
Know when Java 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
AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:L
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
Lifecycle Timeline
3DescriptionGitHub Advisory
Summary
A user who has write:admin in one Keycloak realm can call the Manager API to update Keycloak realm roles for users in another realm, including master. The handler uses the {realm} path segment when talking to the identity provider but does not check that the caller may administer that realm. This could result in a privilege escalation to master realm administrator if the attacker controls any user in master realm.
Details
In manager/src/main/java/org/openremote/manager/security/UserResourceImpl.java, there is no check to validate if the caller should be able to administer a realm they're trying to update.
@Override
public void updateUserRealmRoles(RequestParams requestParams, String realm, String userId, String[] roles) {
try {
identityService.getIdentityProvider().updateUserRealmRoles(
realm,
userId,
roles);
} catch (ClientErrorException ex) {
ex.printStackTrace(System.out);
throw new WebApplicationException(ex.getCause(), ex.getResponse().getStatus());
} catch (Exception ex) {
throw new WebApplicationException(ex);
}
}PoC
- Create a new Keycloak realm other than
master. Add a user and grant that user the OpenRemote client rolewrite:admin. Remember the realm name (call itNEW_REALM). - In Keycloak realm
master, pick a low-privilege user (noadminrealm role). Copy that user’s UUID (<master-user-uuid>). - Authenticate as the user from step 1 and obtain a Bearer access token (
<token>) forNEW_REALM. - Replace placeholders and run:
curl -k -X PUT "https://<host>/api/<NEW_REALM>/user/master/userRealmRoles/<master-user-uuid>" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '["admin"]'- In the Keycloak Admin Console, realm master, that user, Role mapping. Confirm the admin realm role is assigned.
Impact
An attacker with the OpenRemote client role write:admin in any realm can call this API with {realm} set to another realm (for example master) and change Keycloak realm roles for users there. That can grant admin on master to a user UUID they target, which gives Keycloak administrator access for the master realm.
Blast Radius
ecosystem impact- 5 maven packages depend on io.openremote:openremote-manager (5 direct, 0 indirect)
Ecosystem-wide dependent count for version 1.22.1.
Executive ViewAI
OpenRemote Manager contains a privilege escalation vulnerability allowing users with basic administrative permissions in non-master realms to escalate themselves to Keycloak master realm administrator, potentially compromising identity management for the entire organization. This affects any deployment where OpenRemote integrates with Keycloak, enabling attackers to seize control of authentication infrastructure and access all dependent applications and systems.
Vendor-released patch: OpenRemote Manager version 1.22.1. Interim mitigations pending patch deployment: (1) Implement network segmentation restricting Manager API access to trusted administrative networks only; (2) disable or remove non-essential user accounts with write:admin permissions in non-master realms; (3) enable comprehensive audit logging on all updateUserRealmRoles API calls and review for anomalies; (4) enforce multi-factor authentication for all Keycloak master realm administrative accounts.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
EUVD-2026-25096
GHSA-49vv-25qx-mg44
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB