CVE-2026-54458

AVideo: Unauthenticated Stored DOM Cross-Site Scripting via Per-Client Metadata Broadcast in YPTSocket Plugin

Published Jul 15, 2026 CVSS 3.1 · 9.6 Critical EPSS < 1% KEV · Not listed
Description
WWBN AVideo is an open source video platform. Versions prior to 29.0 contain a stored DOM Cross-Site Scripting vulnerability in the YPTSocket plugin. Any unauthenticated remote attacker can execute arbitrary JavaScript in the authenticated origin of every administrator currently viewing a page that renders the YPTSocket online-users debug panel. plugin/YPTSocket/getWebSocket.json.php issues a signed WebSocket token to any anonymous caller, and MessageSQLiteV2::onOpen at plugin/YPTSocket/MessageSQLiteV2.php lines 91 and 110 reads the attacker-controlled webSocketSelfURI and page_title query parameters from the WebSocket connection URL with no validation. Both values persist into the in-memory SQLite connections table and broadcast inside the users_id_online array sent to every connected client; on the client, plugin/YPTSocket/script.js::updateSocketUserCard interpolates the broadcast page_title into an HTML template literal that is passed to jQuery $.append(html), which parses attacker bytes into live DOM nodes including <img> with inline event handlers. Successful attackers can can read non-HttpOnly cookies and the CSRF token rendered into the admin dashboard, issue authenticated requests to any admin-only endpoint, exfiltrate the admin dashboard DOM, and chain into any admin-context mutation. When the victim is an AVideo administrator, the attacker turns a single anonymous WebSocket connection into full administrative takeover via the admin's own session. This issue has been patched by https://github.com/WWBN/AVideo/commit/8be71e53ccbe9b84b30870db386fb4d2b11e1c16.

Analysis

AI-generated

Technical impact

A stored DOM Cross‑Site Scripting flaw exists in the YPTSocket plugin of the AVideo open‑source video platform. Any unauthenticated remote attacker can execute arbitrary JavaScript in the authenticated origin of every administrator currently viewing a page that renders the YPTSocket online‑users debug panel. This occurs when the attacker calls the getWebSocket.json.php endpoint, receives a signed WebSocket token, and then opens a WebSocket connection supplying attacker‑controlled query parameters such as webSocketSelfURI and page_title. The MessageSQLiteV2 class in the plugin reads these parameters from the connection URL without validation, persists them in an in‑memory SQLite table, and broadcasts the page_title payload to every connected client. On the client side, updateSocketUserCard interpolates the received page_title into an HTML template literal and appends it to the DOM with jQuery’s $.append. Because no escaping occurs, the attacker can inject arbitrary HTML and JavaScript, including event handlers on an <img> tag. When an administrator views the debug panel, the injected script runs with the administrator’s credentials, allowing the attacker to read non‑HttpOnly cookies and the CSRF token, issue authenticated requests to admin‑only endpoints, exfiltrate the dashboard DOM, and ultimately gain full administrative control of the system. The weakness is a classic Stored XSS (CWE‑79).

Affected Systems

All releases of WWBN AVideo prior to version 29.0 are affected, as the flaw resides in the YPTSocket plugin’s WebSocket handling code. Users running any supporting edition of the platform before the 29.0 release must consider an update or mitigation.

Risk and Exploitability

The CVSS score of 9.6 signals a critical impact, while the EPSS score of less than 1 % suggests that, to date, exploitation is rare. The vulnerability is not listed in the CISA KEV catalog. An attacker can exploit the publicly accessible WebSocket endpoint without authentication, craft a malicious page_title value, and cause any administrator currently on the online‑users debug panel to execute the payload. With the attacker’s code running under the administrator’s session, full administrative takeover is attainable with a single anonymous WebSocket connection.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to AVideo version 29.0 or later, which removes the unauthenticated WebSocket token issuance and sanitizes broadcast data.
  • If immediate upgrade is not possible, restrict access to the getWebSocket.json.php endpoint so that tokens are only issued to authenticated users.
  • Validate and properly escape all user‑controlled parameters, namely webSocketSelfURI and page_title, before storing them or inserting them into any HTML template on the client side.

Generated by OpenCVE AI on July 31, 2026 at 02:33 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-8whc-2wmv-ww35 WWBN AVideo: Unauthenticated Stored DOM Cross-Site Scripting via Per-Client Metadata Broadcast in YPTSocket Plugin
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Wwbn
Wwbn avideo
Vendors & Products Wwbn
Wwbn avideo
Type Values Removed Values Added
Description WWBN AVideo is an open source video platform. Versions prior to 29.0 contain a stored DOM Cross-Site Scripting vulnerability in the YPTSocket plugin. Any unauthenticated remote attacker can execute arbitrary JavaScript in the authenticated origin of every administrator currently viewing a page that renders the YPTSocket online-users debug panel. plugin/YPTSocket/getWebSocket.json.php issues a signed WebSocket token to any anonymous caller, and MessageSQLiteV2::onOpen at plugin/YPTSocket/MessageSQLiteV2.php lines 91 and 110 reads the attacker-controlled webSocketSelfURI and page_title query parameters from the WebSocket connection URL with no validation. Both values persist into the in-memory SQLite connections table and broadcast inside the users_id_online array sent to every connected client; on the client, plugin/YPTSocket/script.js::updateSocketUserCard interpolates the broadcast page_title into an HTML template literal that is passed to jQuery $.append(html), which parses attacker bytes into live DOM nodes including <img> with inline event handlers. Successful attackers can can read non-HttpOnly cookies and the CSRF token rendered into the admin dashboard, issue authenticated requests to any admin-only endpoint, exfiltrate the admin dashboard DOM, and chain into any admin-context mutation. When the victim is an AVideo administrator, the attacker turns a single anonymous WebSocket connection into full administrative takeover via the admin's own session. This issue has been patched by https://github.com/WWBN/AVideo/commit/8be71e53ccbe9b84b30870db386fb4d2b11e1c16.
Title AVideo: Unauthenticated Stored DOM Cross-Site Scripting via Per-Client Metadata Broadcast in YPTSocket Plugin
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 9.6, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:L'}

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Jul 16, 2026, 3:12 PM
Reserved
Jun 15, 2026, 3:30 PM
Status
Deferred
Published
Jul 15, 2026, 10:17 PM
Modified
Oct 24, 2026, 9:10 PM