IPBUF安全漏洞报告
English
CVE-2026-37980 CVSS 6.9 中危

CVE-2026-37980 Keycloak存储型XSS漏洞

披露日期: 2026-04-14

漏洞信息

漏洞编号
CVE-2026-37980
漏洞类型
存储型跨站脚本攻击 (Stored XSS)
CVSS评分
6.9 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
Keycloak

相关标签

Stored XSSKeycloakWeb SecurityCWE-79Authentication Bypass

漏洞概述

Keycloak在组织选择登录页面存在一个存储型跨站脚本(XSS)漏洞。拥有`manage-realm`或`manage-organizations`管理特权的远程攻击者,可以通过在`organization.alias`字段中注入恶意JavaScript代码来利用此漏洞。由于该别称被直接放置在内联JavaScript的`onclick`处理器中,当用户查看登录页面时,恶意代码将在其浏览器中执行。成功利用可能导致会话劫持、未授权账户操作或进一步攻击。

技术细节

该漏洞源于Keycloak在处理组织别名(organization.alias)时存在安全缺陷,未能正确过滤用户输入。具体而言,应用程序将管理员可控的`organization.alias`值直接拼接并嵌入到HTML元素的`onclick`事件处理程序中,例如生成的代码类似于`<div onclick="handleSelect('USER_INPUT')">`。具备`manage-realm`或`manage-organizations`高权限的攻击者可以修改组织别名,构造恶意的JavaScript载荷(例如闭合引号并插入任意脚本)。当普通用户访问受影响领域的组织选择登录页面时,浏览器会解析该内联事件处理器,导致恶意脚本在受害者上下文中自动执行。这种存储型XSS漏洞允许攻击者窃取会话Cookie、执行未授权操作或作为进一步内网渗透的跳板。

攻击链分析

STEP 1
步骤1:获取高权限
攻击者需要获得Keycloak的`manage-realm`或`manage-organizations`管理权限。
STEP 2
步骤2:注入恶意载荷
攻击者在管理控制台中创建或编辑组织,将`organization.alias`字段修改为包含恶意JavaScript的XSS载荷(如闭合引号和脚本代码)。
STEP 3
步骤3:载荷存储
恶意载荷被保存到Keycloak数据库中,与该组织关联。
STEP 4
步骤4:触发漏洞
受害者用户访问包含该组织的Keycloak登录页面。
STEP 5
步骤5:执行代码
服务器渲染页面,将`organization.alias`直接输出到HTML的`onclick`属性中。受害者的浏览器解析并执行攻击者注入的JavaScript代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC Concept for CVE-2026-37980 Attacker sets the organization.alias to the following payload: --> ');alert(document.cookie);// <!-- Explanation: The vulnerable code likely looks like: <button onclick="selectOrganization('$ALIAS')"> When the payload is injected, it becomes: <button onclick="selectOrganization('');alert(document.cookie);//')"> This breaks out of the string context and executes the alert. -->

影响范围

Keycloak (具体受影响版本未在提供信息中明确列出)

防御指南

临时缓解措施
在未修补版本中,建议严格限制拥有`manage-realm`或`manage-organizations`权限的管理员账户,并对组织别名的修改进行人工审核。管理员应警惕组织登录页面的异常行为,并建议用户不要点击来源不明的链接。

参考链接

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