Keycloak 项目在短时间内相继发布了两个包含安全修复的维护版本。26.7.4(9 月 16 日)修复了本文所述的六个漏洞,26.7.5(9 月 30 日)又修复了更多漏洞:其发布说明列出了 14 项安全修复,其中四项涉及依赖项。10 月 1 日又发布了 26.8.0。因此,运营方的目标是 26.7.5 或更高版本。26.7.4 修复的漏洞之一,允许一个只拥有受限管理权限的账户冒充 Realm 管理员。
本文面向自行运营 Keycloak 的组织——无论是将其用作员工的集中登录、客户门户的登录,还是业务应用的登录。本文对 26.7.4 修复的六个漏洞进行梳理,并说明更新前后应当做什么。
为什么身份提供方值得特别关注
身份提供方(IdP)不是众多服务中的普通一员。它签发所有接入应用都信任的令牌。控制了 IdP 的人,不必逐个攻击应用:他可以以任何他想要的身份登录其中任何一个应用,还可以篡改登录过程而不被任何人察觉。
因此,在安全架构中,这样的系统被归入最高保护等级。例如,Microsoft 在其 Enterprise Access Model 中将集中式身份系统归入由以前的“Tier 0”演变而来的控制平面。由此,IdP 的关键程度可与域控制器相提并论。这引出三条实务规则:那里的更新不推迟,那里的管理权限格外严格地分配,那里的管理入口不可从互联网访问。一个在业务应用中“仅仅”是权限提升的漏洞,在 IdP 中就是对其后所连接一切的权限提升。
26.7.4 修复的六个漏洞
以下评级来自该项目的 Issue 和 GitHub Advisory Database。
CVE-2026-17526——经由 Impersonation 角色的权限提升(高,CVSS 7.2)。拥有“impersonation”角色的用户可以冒充 Realm 管理员,并据 Advisory 中的描述由此获得对该 Realm 的完全管理控制权——包括对用户、客户端和角色的管理。这是杠杆效应最大的一个漏洞,因为它把一个有意加以限制的角色变成了一个不受限制的角色。
CVE-2026-74909——绕过 Policy Enforcer(高,CVSS 8.1)。Policy Enforcer 未能正确规范化包含某些编码字符的路径,例如经百分号编码的分号。已登录的用户因此可以触发一条比预期更宽松的策略,并访问受保护的端点。该项目明确将这一修复称为对此前一次不完整修复的补正。这与通过 Keycloak Policy Enforcer 实施访问规则的应用相关。
CVE-2026-90997——一次性凭证的重复使用(高)。受影响的是配合 MySQL 或 MariaDB 使用的无状态运行模式。由于对受影响数据库行的计数方式不同,重放保护无法识别已经使用过的凭证。涉及的包括 JWT 客户端断言、DPoP 证明以及不可重复使用的 TOTP 代码:截获此类凭证的人,可以在令牌端点或登录流程中再次使用它。据 Issue 所述,令牌撤销不受影响。
CVE-2026-79651——经由语言标签的拒绝服务(高,CVSS 7.5)。本地化端点会把来自未登录请求的任意语言标签存入一个无上限的内存缓存。大量不同的标签就足以让服务器崩溃。
CVE-2026-18212——SAML Redirect Binding 中的内存泄漏(在 GitHub Advisory Database 中为 CVSS 7.5,在项目 Issue 中标记为“medium”)。处理 SAML 请求时,本机内存未被释放。无需登录的重复错误请求会耗尽内存,直到操作系统终止该进程。
CVE-2026-19607——经由用户名冲突造成的账户锁定(中,CVSS 5.3)。在通过外部身份提供方首次登录的流程中,攻击者可以在外部提供方处注册一个匹配的用户名,从而引发冲突,把合法用户锁在门外。这与所有用户经由外部身份提供方登录的 Realm 相关——例如通过与合作伙伴的联合认证或社交登录。
六个漏洞中有两个无需登录即可被利用来使服务崩溃。对于一个集中式登录服务而言,宕机也绝非小事:IdP 一停,所有依赖它的东西都会停。
现在应当做什么
- 升级到 26.7.5 或更高版本。 该项目指出,更新前应参阅迁移指南,其中有完整的变更列表。请在更新之前而不是之后阅读它,并在配置贴近实际的 Staging 实例上测试更新——尤其是身份提供方接入、SAML 客户端和自定义主题。
- 确定当前版本。 发布说明没有给出受影响的版本范围。因此,请假定 26.7.4 之前的任何版本都可能受影响,并针对 26.4 和 26.6 版本线检查制造商是否提供已修复的版本。
- 检查 Impersonation 角色,而且要在更新之前。 “impersonation”角色是每个 Realm 中内置客户端“realm-management”的客户端角色;对于跨 Realm 的管理,主 Realm 中的
<Realm-Name>-realm客户端上有相应的角色。请查明哪些用户、组和复合角色直接或间接包含了它。文档给出的典型用途是技术支持:从受影响用户的视角复现问题。因此,请特别检查服务台和支持账户。在受影响的版本中,每一个拥有该角色的账户都能把自己变成 Realm 管理员。 - 查找痕迹。 Keycloak 会在被冒充的会话中,将实施冒充的账户的标识和用户名记录为会话注记。只要您记录了管理事件和登录事件,请检查是否有管理员账户被冒充,以及是否在此背景下更改过角色、客户端或身份提供方设置。
- 此后严控该角色。 即使在更新之后也同样如此:能够冒充的人,就能以另一个人的身份登录。请只在确有需要的地方授予该角色,并使用细粒度管理权限,从根本上排除冒充管理员的可能。
- 检查数据库和运行模式。 如果您在无状态模式下配合 MySQL 或 MariaDB 运行,CVE-2026-90997 会直接影响您。
规划更新,但不要推迟
IdP 更新涉及每一次登录,正因如此,它常常被推迟。该项目的 Upgrading 指南给出了指导框架。自 Keycloak 26.6.0 起,补丁版本支持滚动更新(Rolling Updates);在您的环境中能否使用,请参阅关于滚动更新的指南。已经在 26.7 上的用户,在该版本线内或许可以不中断地更新;从 26.6 升级到 26.7 属于次版本升级,根据 Upgrading Guide 需要停机。
该指南还写明,应先更新服务器,再更新适配器。在每次更新之前,指南都要求对安装(配置、主题)以及数据库进行备份。其背景对回退规划很重要:Keycloak 不支持回滚数据库变更。需要回退的人,要从备份中恢复旧的安装和数据库。因此,这份备份不是附属品,而是唯一的回退路径。请在开始之前创建它,并确认它能够恢复。
管理入口不应暴露在互联网上
该权限提升以一个拥有管理权限的账户为前提。这类账户越少、通往管理控制台的路径越少,攻击面就越小——不仅针对这个漏洞,也针对下一个。登录页面必须可访问,而管理控制台通常不必。管理账户应置于多因素身份验证之后,其授予情况应纳入定期的重新认证。
sector7 如何提供支持
我们在角色与权限方案、特权账户管理以及采用多因素身份验证的安全登录流程方面为您提供支持。这还包括定期的漏洞扫描,以及通过补丁管理进行按优先级排序的修复。详情请见网络安全。
来源
- Keycloak 26.7.4 released – Keycloak 项目,2026-09-16
- Keycloak 26.7.5 released – Keycloak 项目,2026-09-30
- Release 26.7.5 – Keycloak(GitHub),2026-09-30
- Issue #52838: CVE-2026-17526, Privilege escalation: the „impersonation“ role can impersonate a realm administrator – Keycloak(GitHub),2026-09-16
- Issue #52834: CVE-2026-90997, Default MySQL/MariaDB row counts make stateless replay gates accept reused artifacts – Keycloak(GitHub),2026-09-16
- Issue #52839: CVE-2026-18212, SAML Redirect DEFLATE helpers leak native zlib state – Keycloak(GitHub),2026-09-16
- GHSA-j7cq-x5cp-qpcx (CVE-2026-17526) – GitHub Advisory Database,2026-09-16
- GHSA-5639-qg9x-rw29 (CVE-2026-74909) – GitHub Advisory Database,2026-09-16
- GHSA-8qv5-pjhw-3gx4 (CVE-2026-79651) – GitHub Advisory Database,2026-09-16
- GHSA-wgrv-cjmx-4vfw (CVE-2026-18212) – GitHub Advisory Database,2026-09-16
- GHSA-h87q-rx56-87wm (CVE-2026-19607) – GitHub Advisory Database,2026-09-16
- Server Administration Guide: Impersonating a user, realm-management roles – Keycloak 项目,现行版本
- Securing privileged access: Enterprise access model – Microsoft Learn,截至 2026-05-06
- Upgrading Guide: Migration changes – Keycloak 项目,现行版本
- Keycloak 26.8.0 released – Keycloak 项目,2026-10-01