CVE-2026-18963:Keycloak 密码重置接口跳过邮件验证,未认证攻击者可重置任意账户密码

Red Hat 与开源 Keycloak 项目同步修复了一处位于密码重置流程的关键认证绕过漏洞,编号 CVE-2026-18963,CVSS v3.1 评分 9.1(Critical)。该漏洞位于 keycloak-services 组件的 ResetCredentialEmail.action() 流程中,因状态校验不严谨,允许未认证的远程攻击者在不点击邮件验证链接、不持有受害者邮箱控制权的情况下,直接进入密码更新阶段,把任意用户名(包括管理员账号)重置为攻击者预设的新密码。鉴于 Keycloak 是大量企业 SSO、IDaaS、自托管身份中心的核心组件,单点绕过即可接管整个身份层。

事件概述

漏洞编号:CVE-2026-18963,CWE-640 Weak Password Recovery Mechanism for Forgotten Password。
CVSS v3.1 基础评分:9.1 / Snyk 评分 9.3,攻击向量 AV:N、攻击复杂度 AC:L、所需权限 PR:N、用户交互 UI:N。
披露日期:2026 年 8 月 18 日(NVD),更新于 8 月 20 日;补丁发布日期:2026 年 8 月 19 日。
已知在野利用:EPSS 当前概率约 0.39%-2.79%,尚未列入 CISA KEV,但已有公开 PoC 与 Nuclei 模板可供扫描。
受影响版本:Red Hat Build of Keycloak 26.6 之前 26.6.6-1、26.4 之前 26.4.15-1,上游 Keycloak 26.0.0 至 26.7.2 之间所有构建。
修复版本:上游 Keycloak 26.7.2;Red Hat RHSA-2026:56519 / 56520 / 56523 / 56524。

技术细节

Keycloak 标准 reset-credentials 流程的设计目标,是通过邮件中的签名 action token 来证明请求者确实控制着目标账户的注册邮箱。流程正常顺序为:填写用户名 → 触发邮件 → 用户点击链接带回 action token → 服务端校验 token → 进入密码更新页。

CVE-2026-18963 的根因是步骤顺序约束被打破:ResetCredentialEmail 在处理 reset-credentials action 入口时,过度信任了上一个 authentication session 的中间状态,没有强制校验 “VERIFY_EMAIL” 或 “EXECUTE_ACTION_TOKEN” 步骤是否真正完成。攻击者只要构造一次 reset 请求,让其直接抵达 action 步骤而跳过前置 verify 步骤,就能让会话被推进到密码更新阶段。

最终实战路径(已收录于 Nuclei 模板与 Snyk PoC):

POST /realms/{realm}/login-actions/reset-credentials?execution=reset_credentials
POST /realms/{realm}/login-actions/reset-credentials
Content-Type: application/x-www-form-urlencoded

username=admin  &  new password=AttackerPwd123!  &  password-confirm=AttackerPwd123!

请求中如果正确携带了会话 Cookie,但缺少合法的 action token,服务端依然会执行密码更新,并返回成功页面。攻击者随后即可用新密码以管理员身份登录。

影响评估

Keycloak 通常承担企业内 SSO、面向客户的 IDaaS、API 网关认证、Web 控制台登录等多重身份中心职能。一旦任意一名用户的密码可被远程重置,攻击者将连带获得:

  • 所有依赖该 Realm 的 Web 应用、内部系统、CMS、Git 仓库等单点登录接入;
  • 管理员账号接管,意味着可以签发新客户端、伪造身份、读取密钥;
  • 与 Realm 联邦的外部 OIDC/SAML 信任域(Okta、Azure AD 等)联动凭据失陷;
  • 合规层面:触发 GDPR、SOX、HIPAA 等多部法规下的强制披露义务。

由于完全无需凭据、无需用户交互,扫描器对 Realm 端点 /realms/{realm}/login-actions/reset-credentials 的命中率极高。Snyk EPSS 已将 30 天内被利用的概率评估为 0.39%-2.79%,意味着被批量扫描是大概率事件,定向利用只是时间问题。

修复建议

  • 立即升级:上游 Keycloak 部署升级到 26.7.2;Red Hat 用户按 RHSA-2026:56519 / 56520 / 56523 / 56524 文档升级对应 Operator Bundle;
  • 临时缓解:在 Realm Settings → Login 中关闭 “Forgot password” 入口,由管理员手动发起密码重置;
  • 日志检测:在 Keycloak 审计日志中检索 UPDATE_PASSWORD 事件前是否缺少对应的 VERIFY_EMAIL / EXECUTE_ACTION_TOKEN 事件,对异常账户执行强制会话失效;
  • 重置关键账户:升级完成后,对所有管理员、特权账号的密码与会话进行强制重置,并吊销其历史 Refresh Token;
  • WAF 兜底:在反向代理或 WAF 侧对 /login-actions/reset-credentials 端点加访问频率限制与地理围栏,阻断横向扫描;
  • 多因素补救:启用 WebAuthn / OTP,对所有管理员与高价值账户强制 MFA,避免单独密码重置即可登录;
  • 对外公告:在用户与上下游联邦系统中明确本次事件的修复窗口,避免被供应链信任放大攻击面。

参考来源

  • NVD 详情页:CVE-2026-18963
  • Snyk 漏洞数据库:SNYK-JAVA-ORGKEYCLOAK-19233600
  • Red Hat 公告:RHSA-2026:56519 系列
  • Kudelski Security 技术分析:CVE-2026-18963 Authentication Bypass