CVE-2025-67495ZITADEL是一个开源身份基础设施工具,广泛应用于企业级身份认证和授权管理场景。该产品提供完整的用户管理、单点登录(SSO)、多因素认证(MFA)等功能,支持OAuth 2.0、OIDC等标准协议。在ZITADEL 4.0.0-rc.1至4.7.0版本中,存在一个严重的DOM型跨站脚本(XSS)漏洞,漏洞位于logout注销端点。该端点在处理post_logout_redirect GET参数时,未对用户输入进行充分的验证和过滤,直接将参数值传递给前端进行路由处理,导致攻击者可以注入任意JavaScript代码。当用户访问恶意构造的链接时,注入的恶意脚本会在用户浏览器中执行,可能导致会话劫持、敏感信息窃取等严重后果。攻击成功的必要条件是用户在同一浏览器中保持多个活跃会话。值得注意的是,如果用户启用了多因素认证(MFA)或无密码认证(Passwordless),账户接管风险可以得到有效缓解。官方已在4.7.1版本中修复此漏洞,建议所有使用受影响版本的用户尽快升级。
该漏洞属于DOM型XSS(也称为第三类XSS或客户端XSS),与传统反射型或存储型XSS不同,DOM型XSS的恶意代码从未经适当清理的用户输入直接进入页面DOM环境。在ZITADEL的logout端点实现中,代码获取post_logout_redirect参数后,未进行URL验证和白名单检查就直接将其作为重定向目标。更关键的是,这个值被直接写入到DOM中或用于动态脚本生成。攻击者可以构造如下恶意URL: https://target-zitadel-instance.com/logout?post_logout_redirect_uri=javascript:alert(document.cookie)。当受害者访问该链接时,浏览器会执行注入的JavaScript代码。由于logout端点本身无需认证即可访问,攻击者可以诱导已登录用户访问恶意链接。此外,攻击者可能利用URL编码、双重编码或协议处理器(如data:、javascript:等)来绕过部分过滤机制。PoC代码将演示完整的攻击流程,包括构造恶意链接、绕过基础过滤、以及利用浏览器特性执行任意脚本。