WWBN AVideo
CVE-2026-40926
HIGH
Severity by source
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L
Classic CSRF: attacker is unauthenticated (PR:N) but needs a logged-in admin to interact (UI:R); write and plugin-execution give I:H, minor A:L, and no data disclosure (C:N).
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
3DescriptionGitHub Advisory
WWBN AVideo is an open source video platform. In versions 29.0 and prior, three admin-only JSON endpoints - objects/categoryAddNew.json.php, objects/categoryDelete.json.php, and objects/pluginRunUpdateScript.json.php - enforce only a role check (Category::canCreateCategory() / User::isAdmin()) and perform state-changing actions against the database without calling isGlobalTokenValid() or forbidIfIsUntrustedRequest(). Peer endpoints in the same directory (pluginSwitch.json.php, pluginRunDatabaseScript.json.php) do enforce the CSRF token, so the missing checks are an omission rather than a design choice. An attacker who lures a logged-in admin to a malicious page can create, update, or delete categories and force execution of any installed plugin's updateScript() method in the admin's session. Commit ee5615153c40628ab3ec6fe04962d1f92e67d3e2 contains a fix.
AnalysisAI
Cross-site request forgery in WWBN AVideo (versions 29.0 and prior) lets an attacker abuse a logged-in admin's session against three state-changing JSON endpoints (categoryAddNew, categoryDelete, and pluginRunUpdateScript) that enforce only a role check and omit the CSRF token validation their sibling endpoints use. By luring an authenticated administrator to a malicious page, an attacker can create, overwrite, or delete video categories and trigger execution of any installed plugin's updateScript() method. Publicly available exploit code exists per the SSVC assessment, though EPSS is very low (0.02%, 5th percentile) and it is not on the CISA KEV list.
Technical ContextAI
AVideo is a PHP open-source video streaming and hosting platform. Its CSRF protection is not enforced by a global framework filter; instead each endpoint must explicitly call forbidIfIsUntrustedRequest() or isGlobalTokenValid() (defined in objects/functions.php:2313), which validates a per-request globalToken parameter. The three vulnerable endpoints in objects/ gated their write and plugin-execution logic behind Category::canCreateCategory() / User::isAdmin() but never invoked the token check, while peers such as pluginSwitch.json.php and pluginRunDatabaseScript.json.php did. This is a textbook CWE-352 (Cross-Site Request Forgery): a server action authorized purely by an ambient session cookie with no unpredictable, request-bound anti-CSRF token. Notably categoryAddNew loads the row via new Category(intval(@$_POST['id'])), so a non-zero id overwrites an existing category rather than only creating one, and pluginRunUpdateScript can invoke any installed plugin's updateScript() routine. The affected product is identified by cpe:2.3:a:wwbn:avideo, and the tags (PHP, CSRF) match the root cause.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed. Apply commit ee5615153c40628ab3ec6fe04962d1f92e67d3e2 (https://github.com/WWBN/AVideo/commit/ee5615153c40628ab3ec6fe04962d1f92e67d3e2), which adds forbidIfIsUntrustedRequest() to the three vulnerable endpoints and also hardens roughly a dozen other admin JSON endpoints in the same change (userDelete, videoDelete, notifySubscribers, configurationClearCache, userGroupsAddNew/Delete, videoStatus/Swap/Refresh/Rotate, and others); track GHSA-ffw8-fwxp-h64w for a packaged release. Until a tagged release ships, compensating controls include restricting access to objects/categoryAddNew.json.php, objects/categoryDelete.json.php, and objects/pluginRunUpdateScript.json.php at the web-server or WAF layer (for example, allow only trusted admin source IPs), and enforcing SameSite=Strict or Lax on the admin session cookie so cross-site requests do not carry it - the trade-off being that strict SameSite can break legitimate cross-origin admin links. Advising admins to log out of the panel when idle and avoid browsing untrusted sites in the same session further narrows the lure window.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
Same weakness CWE-352 – Cross-Site Request Forgery (CSRF)
View allShare
External POC / Exploit Code
Leaving vuln.today
GHSA-ffw8-fwxp-h64w