对于依赖 Keycloak 进行安全身份和访问管理的组织来说,在一个令人担忧的发展中,在其 SAML 签名验证过程中发现了一个高严重性漏洞。此漏洞被跟踪为 CVE-2024-8698,可能允许恶意行为者绕过身份验证机制,从而导致潜在的权限提升和用户模拟攻击。
该漏洞存在于 Keycloak 的 XMLSignatureUtil 类中,该类负责验证 SAML 签名。该类仅根据签名在 XML 结构中的位置错误地确定签名是应用于整个 SAML 文档还是特定断言。这种疏忽忽略了关键的 “Reference” 元素,该元素明确标识了文档的签名部分。
利用此缺陷,攻击者可以构建恶意 SAML 响应,其中包括有效的签名断言和未签名的断言。通过战略性地放置未签名的断言,他们可以欺骗 Keycloak 的错误验证逻辑接受整个响应,即使关键部分仍未验证。
此漏洞的影响非常严重。在身份提供商 (IdP) 的上下文中,成功利用此漏洞可让攻击者获得对高权限帐户的未授权访问,从而有效地破坏整个系统。同样,在服务提供商 (SP) 中,攻击者可以冒充合法用户,获得对他们无权使用的资源的访问权限。
25.0.5 及以下的 Keycloak 版本容易受到此漏洞的影响。此问题已在版本 25.0.6 中得到解决。强烈建议立即将所有 Keycloak 部署更新到此版本或更高版本。