CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-47694

CVE-2026-47694: Stored Cross-Site Scripting in WWBN AVideo Category Descriptions

Alon Barad
Alon Barad
Software Engineer

Jun 4, 2026·7 min read·11 visits

Executive Summary (TL;DR)

WWBN AVideo versions <= 29.0 allow authenticated users to achieve Stored XSS by inserting malicious payloads into category descriptions, executing arbitrary JavaScript when other users view the category page.

A Stored Cross-Site Scripting (XSS) vulnerability exists in WWBN AVideo versions up to and including 29.0. Unsanitized category descriptions are stored in the database and subsequently rendered as raw HTML in the Gallery view plugin, allowing low-privileged authenticated users to execute arbitrary JavaScript in the browsers of visiting users.

Vulnerability Overview

WWBN AVideo is an open-source web application designed for enterprise video hosting and sharing. The platform utilizes a modular, plugin-based architecture to extend media display capabilities. Within this architecture, the Gallery plugin organizes video content into separate categories. The administration and curation of these categories expose a management interface to authenticated users, creating a persistent administrative attack surface.

The application contains a stored cross-site scripting (XSS) vulnerability, classified as CWE-79, within the handling of category descriptions. An authenticated user possessing permission to create or modify categories can insert malicious JavaScript into the description field. This input is stored in the database and subsequently executed within the security context of any user who visits the affected category or gallery view page.

This vulnerability exists independently of previously remediated cross-site scripting issues within video titles or user comments. It represents a persistent risk to platform administrators and visitors alike, as the stored payload executes automatically without direct interaction other than standard page navigation.

Root Cause Analysis

The technical root cause of this vulnerability lies in the complete absence of input validation and output sanitization across the category description data flow. When a user submits a category creation or update request, the input processing script objects/categoryAddNew.json.php accepts the description parameter via HTTP POST without filtering. The value is passed directly to the setDescription method of the Category object.

The setter method in objects/category.php accepts the raw string parameter and binds it directly to the database storage layer. This architecture operates on the assumption that stored data is safe, deferring safety checks to the presentation layer. However, the presentation layer fails to enforce appropriate contextual output encoding, resulting in multiple exploitable injection sinks.

The first critical sink occurs in plugin/Gallery/view/Category.php, where the category description is retrieved and rendered inside a paragraph element. The raw value is processed by the localization function __(), which maps the string to translated language files but returns the raw HTML output when no translation is defined. Because the string is emitted directly via standard PHP echo, the browser interprets injected HTML tags as executable markup.

The second critical sink exists in plugin/Gallery/view/mainAreaCategory.php. The application writes the category description to a hidden div element in the DOM. A jQuery-based alert handler subsequently extracts this content using $("#categoryDescription").html() and injects it dynamically into a modal dialogue box. Because jQuery handles content processed by the .html() method as live DOM nodes rather than plain text, any script tags or event handlers within the stored string execute immediately in the target browser.

Code Analysis

A comparative analysis of the patch merged in commit 6a6ff1f5bff1904f91f612db9f0da083295392b1 reveals the developer's remedial methodology. In plugin/Gallery/view/Category.php, the vulnerable code path was replaced to switch from raw output to HTML-purified output:

// VULNERABLE
<p style="margin-left: 10%; margin-right: 10%; max-height: 200px; overflow-x: auto;">
    <?php echo __($category['description']); ?>
</p>
 
// PATCHED
<p style="margin-left: 10%; margin-right: 10%; max-height: 200px; overflow-x: auto;">
    <?php echo $category['description_html']; ?>
</p>

The patched version replaces the unescaped localized output with $category['description_html']. This field leverages AVideo's integrated HTMLPurifier instance, which acts as an input/output sanitizer to strip malicious tags (such as <script>) while preserving benign HTML formatting.

In plugin/Gallery/view/mainAreaCategory.php, the raw database output was wrapped with standard PHP entity encoding and a custom link helper:

// VULNERABLE
<div id="categoryDescription<?php echo $duid; ?>" style="display: none;">
    <?php echo $videos[0]['category_description']; ?>
</div>
 
// PATCHED
<div id="categoryDescription<?php echo $duid; ?>" style="display: none;">
    <?php echo textToLink(htmlentities($videos[0]['category_description'])); ?>
</div>

While this mitigates standard script injection, security researchers must evaluate the completeness of this patch. The use of htmlentities without explicit configuration parameters (specifically, omitting ENT_QUOTES and the charset parameter) defaults to ENT_COMPAT on legacy PHP environments (PHP < 8.1). This default behaviour does not escape single quotes, which can facilitate attribute-level bypasses if the downstream textToLink() implementation wraps HTML attributes in single quotes. Furthermore, if textToLink accepts javascript: or other URI schemes without sanitization, interactive elements containing payloads can still be rendered.

Exploitation & Attack Methodology

An attacker can exploit this vulnerability by executing a series of coordinated requests. The prerequisite for this attack is an active session with low-level privileges allowing category creation or modification. The attack does not require administrative or system-level roles.

The attacker first crafts a payload designed to trigger execution via standard HTML event handlers. A common proof-of-concept payload uses the onerror attribute of a malformed image element: <img src=x onerror=alert(document.domain)>. The payload is submitted to /objects/categoryAddNew.json.php via a POST request containing the category configuration parameters.

For the stored script to render in the target's browser, the category must contain at least one assigned video, which satisfies the conditional processing checks in the Gallery plugin views. Once the video is assigned, the rendering loop triggers, placing the active payload into the HTML source. When a victim (such as an administrator or general user) visits the Gallery page or category listing, the DOM parser processes the hidden or visible divs, executing the injected script immediately.

Impact Assessment & Threat Modeling

The impact of this vulnerability is characterized by a CVSS v3.1 base score of 5.4 (Medium). The attack vector is Network, with Low complexity, requiring Low-privileged user interaction. The scope of the vulnerability is Changed, because execution occurs inside the victim's client browser, bypassing the boundary of the host web application.

Because execution occurs within the security context of the victim's browser session, an attacker can perform actions on behalf of the victim. If an administrative user views the compromised category, the payload can perform administrative actions, such as creating new administrative accounts, modifying application configurations, or uploading malicious plugins to achieve remote code execution.

Additionally, the payload can access browser storage, including non-HttpOnly cookies and local session tokens, leading to session hijacking. The EPSS score of 0.00035 reflects low immediate exploitation in the wild, but the structural simplicity of the exploit ensures that any exposed, unpatched systems remain soft targets for targeted campaigns.

Remediation & Detection

Remediation of CVE-2026-47694 requires upgrading WWBN AVideo to a version released after May 19, 2026, or manually applying the patch from commit 6a6ff1f5bff1904f91f612db9f0da083295392b1. Organizations unable to update immediately should restrict category creation and edit permissions to trusted, verified administrative staff.

For custom deployments, developers should replace weak escaping functions with strong contextual encoding. The recommended defensive approach is to combine HTMLPurifier for formatted text fields with strict output encoding for plain fields. Ensure that any output written to the DOM is processed through htmlspecialchars using the ENT_QUOTES | ENT_HTML5 flags to prevent attribute breakout attacks.

Furthermore, deploying a robust Content Security Policy (CSP) can mitigate the execution of unauthorized inline scripts. Specifying rules such as script-src 'self' prevents the browser from executing arbitrary inline javascript injected through DOM sinks, limiting the impact of stored XSS vulnerabilities.

Official Patches

WWBNVulnerability Patch Commit

Fix Analysis (1)

Technical Appendix

CVSS Score
5.4/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
EPSS Probability
0.03%
Top 89% most exploited

Affected Systems

WWBN AVideo

Affected Versions Detail

Product
Affected Versions
Fixed Version
AVideo
WWBN
<= 29.06a6ff1f5bff1904f91f612db9f0da083295392b1
AttributeDetail
CWE IDCWE-79
Attack VectorNetwork
CVSS Base Score5.4 (Medium)
EPSS Score0.00035 (10.83% percentile)
ImpactStored Cross-Site Scripting / Session Hijacking
Exploit StatusProof-of-Concept Available
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1189Drive-by Compromise
Initial Access
T1185Browser Session Hijacking
Collection
CWE-79
Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

The application does not neutralize or incorrectly neutralizes user-controlled input before it is placed in output that is used to generate a web page.

Vulnerability Timeline

Fix commit merged by maintainers
2026-05-19
CVE-2026-47694 published
2026-05-29
GHSA-c8h8-vq34-9fw2 advisory published
2026-06-04

References & Sources

  • [1]GHSA-c8h8-vq34-9fw2 Advisory
  • [2]NVD Record
  • [3]CVE.org Detail
  • [4]WWBN AVideo Main Repository

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•2 days ago•CVE-2026-54068
5.9

CVE-2026-54068: Unauthenticated Server-Side Template Injection and SQLite Exfiltration in SiYuan PKM

An authentication bypass in the SiYuan personal knowledge management system before version 3.7.0 exposes a dynamic icon rendering endpoint. This endpoint processes client-supplied Go template directives. By submitting a crafted request, an unauthenticated remote attacker can leverage registered database template functions to execute arbitrary read-only SQL queries and exfiltrate workspace contents.

Amit Schendel
Amit Schendel
13 views•5 min read
•2 days ago•CVE-2026-54069
9.1

CVE-2026-54069: Authentication Bypass in SiYuan Note via Origin Header Spoofing

CVE-2026-54069 is a critical authentication bypass vulnerability in the SiYuan Note personal knowledge management system. The flaw is located in the HTTP server's middleware handling API authorization, which unconditionally trusts requests carrying a 'chrome-extension://' scheme in the Origin HTTP header, granting administrative access without validating API tokens.

Alon Barad
Alon Barad
10 views•5 min read
•2 days ago•CVE-2026-54089
9.1

CVE-2026-54089: Authentication Bypass by Spoofing in File Browser

CVE-2026-54089 is a critical authentication bypass vulnerability in File Browser affecting instances configured with proxy-based authentication. An unauthenticated remote attacker with direct network access can impersonate arbitrary users or register new accounts by spoofing configured HTTP headers.

Amit Schendel
Amit Schendel
8 views•7 min read
•2 days ago•GHSA-99J7-FHR2-XFJ4
10.0

GHSA-99J7-FHR2-XFJ4: Malicious Remote Code Execution Payload in 'exploration' Cargo Crate

The malicious Cargo package 'exploration' was uploaded to the crates.io registry. During compilation or package import, the crate executes code designed to establish an outbound TCP/HTTP connection, download an external second-stage binary, and execute the binary locally on the host machine. This creates an unauthenticated remote code execution vector impacting developer environments and continuous integration pipelines.

Amit Schendel
Amit Schendel
11 views•6 min read
•2 days ago•CVE-2026-54088
9.3

CVE-2026-54088: Pre-Authentication Remote Code Execution in File Browser Hook Authentication

CVE-2026-54088 is a critical command injection vulnerability in File Browser prior to version 2.63.6. When Hook Authentication is enabled, the application interpolates unsanitized credentials into a shell command, allowing unauthenticated remote code execution.

Alon Barad
Alon Barad
10 views•6 min read
•2 days ago•GHSA-QV4M-M73M-8HJ7
8.8

GHSA-qv4m-m73m-8hj7: Authenticated Arbitrary File Upload leading to Remote Code Execution in NotrinosERP

An authenticated remote code execution vulnerability exists in NotrinosERP (versions up to and including 1.0.0) within the Human Resource Management (HRM) module. Users with employee management permissions can upload arbitrary file types, including PHP scripts, which are written directly to a web-accessible directory. This allows for arbitrary code execution in the context of the web-server user.

Alon Barad
Alon Barad
8 views•6 min read