WWBN AVideo
CVE-2026-40935
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessEstablish unauthenticated PHP session with AVideo server
-
DeliveryRequest /getCaptcha.php?ql=1 to force 1-character CAPTCHA into session
-
ExploitIterate all 33 alphabet symbols in CAPTCHA submission field
-
ExecutionFailed attempts leave session token unconsumed
-
PersistCorrect guess bypasses Captcha::validation()
-
ImpactSubmit password reset or registration as automated bot
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V6 - Authentication CAPTCHA/guessable mechanism
|
| Exploitation Conditions | No special server configuration is required - the vulnerability is present in any default AVideo 29.0 or prior deployment that has CAPTCHA-protected endpoints enabled (user registration, password recovery, or contact form). The attacker must be able to establish a PHP session with the server (unauthenticated, requires only network access) and issue HTTP GET requests to /objects/getCaptcha.php with the ql=1 parameter before submitting to a CAPTCHA-validated endpoint. The primary limiting factor is per-session scope: each brute-force attempt requires a fresh CAPTCHA generation step, but since session creation itself requires no authentication, this is not a meaningful barrier. Exploitation is bounded only by the 33-symbol alphabet when ql=1, giving a deterministic worst-case of 33 requests per target action. |
| Impact | The CVSS 3.1 score of 5.3 (Medium) correctly captures the narrow integrity impact: the vulnerability does not directly expose data or crash the server but removes the only bot-protection layer from several sensitive endpoints. The EPSS score of 0.03% (8th percentile) suggests low observed exploitation probability at time of analysis, likely reflecting AVideo's limited deployment scale rather than genuine attack difficulty. In contrast, the SSVC decision framework independently rates the attack as automatable with POC-level exploitation, which is consistent with the code evidence - the attack requires no specialized tooling, no authentication, and fewer than 33 HTTP requests per session. Real-world risk concentrates on account takeover via automated password reset, bulk spam registrations, and contact form abuse. There is no CVSS/description conflict: the network vector, low complexity, and no-privilege ratings are all consistent with the actual exploit mechanics. The key limiting factor is deployment prevalence - AVideo is a niche self-hosted platform, constraining the aggregate attack surface compared to a similar flaw in a ubiquitous product. |
| Exploit ScenarioDerived | An unauthenticated attacker targeting the AVideo password recovery form sends a single request to /objects/getCaptcha.php?ql=1 within their session, causing the server to store a one-character token drawn from a 33-symbol alphabet. The attacker then submits password reset requests iterating through all 33 possible characters in the CAPTCHA field; because failed attempts leave the session token intact, the correct character is found within 33 requests and CAPTCHA validation passes, enabling automated account takeover. No POC tool has been publicly released, but the attack is fully reproducible with any scripted HTTP client given the advisory's technical detail. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 24, 2026
CAPTCHA bypass in WWBN AVideo 29.0 and prior enables unauthenticated attackers to defeat bot protection on user registration, password recovery, and contact form endpoints in at most 33 HTTP requests per session. Two cooperating flaws are responsible: the getCaptcha.php endpoint accepts the word-length parameter directly from the query string without bounds checking, allowing an attacker to force a 1-character CAPTCHA, and failed validation attempts do not invalidate the stored session token, enabling exhaustive brute-forcing of the 33-symbol alphabet. No CISA KEV listing exists, though SSVC rates the attack as automatable with POC-level exploitation, and the effective attack complexity is trivially low regardless of the AC:L CVSS rating.
RemediationAI
The upstream fix is available in commit bf1c76989e6a9054be4f0eb009d68f0f2464b453 at https://github.com/WWBN/AVideo/commit/bf1c76989e6a9054be4f0eb009d68f0f2464b453; however, no tagged release version incorporating this fix has been independently confirmed - the composer package wwbn/avideo lists the fix version as None, so version-pinned remediation via Composer is not yet verifiable. Operators should apply the commit directly from the repository. As immediate compensating controls: patch objects/getCaptcha.php to enforce integer-cast clamping on ql (minimum 5, maximum 8), and patch objects/captcha.php to unconditionally call unset($_SESSION['palavra']) at the top of the validation method before any comparison, ensuring failed attempts always consume the token. A secondary control is to implement per-session or per-IP rate limiting at the WAF or web server layer on CAPTCHA-protected endpoints, limiting submissions to a small number (e.g., 5) per session - note this may cause friction for legitimate users with poor network stability. Monitor the AVideo GitHub releases page for a tagged version that includes this fix.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in composer
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
AVideo is a PHP-based open source self-hosted video platform (cpe:2.3:a:wwbn:avideo:*:*:*:*:*:*:*:*). The root cause is CWE-804 (Guessable CAPTCHA), arising from two cooperating defects in getCaptcha.php and captcha.php. In getCaptcha.php, the ql (quantity of letters) parameter is read from $_GET with no type coercion, minimum, or upper bound: requesting ql=1 instructs the server to generate a single-character CAPTCHA word stored in the caller's PHP session. In Captcha::validation(), the session token ($_SESSION['palavra']) is only unset on a successful match, not on failure, so an attacker can replay guesses against the same session-bound token indefinitely. The alphabet used is 33 unique case-insensitive characters - A-Z minus O, plus digits 2-9 - meaning a 1-character CAPTCHA is exhaustible in at most 33 requests. The fix in commit bf1c76989e6a9054be4f0eb009d68f0f2464b453 clamps ql to [5, 8] via integer casting and moves token invalidation to unconditionally fire on any validation attempt, regardless of outcome.
Know when Avideo gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Network-accessible with no authentication or user interaction required; integrity impact is low (CAPTCHA bypass enabling form abuse) with no confidentiality or availability effect.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
WWBN AVideo is an open source video platform. In versions 29.0 and prior, objects/getCaptcha.php accepts the CAPTCHA length (ql) directly from the query string with no clamping or sanitization, letting any unauthenticated client force the server to generate a 1-character CAPTCHA word. Combined with a case-insensitive strcasecmp comparison over a ~33-character alphabet and the fact that failed validations do NOT consume the stored session token, an attacker can trivially brute-force the CAPTCHA on any endpoint that relies on Captcha::validation() (user registration, password recovery, contact form, etc.) in at most ~33 requests per session. Commit bf1c76989e6a9054be4f0eb009d68f0f2464b453 contains a fix.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Affected Products (CPE)CVE.org
A cross-site scripting (xss) vulnerability exists in the functiongetOpenGraph videoName functionality of WWBN AVideo 11.
An issue in WWBN AVideo v.12.4 through v.14.2 allows a remote attacker to execute arbitrary code via the systemRootPath
A directory traversal vulnerability exists in the unzipDirectory functionality of WWBN AVideo 11.6 and dev master commit
An insufficient entropy vulnerability exists in the salt generation functionality of WWBN AVideo dev master commit 15fed
Unauthenticated SQL injection in AVideo before 24.0.
OS injection vulnerability in World Wide Broadcast Network AVideo version before 12.4, allows attackers to execute arbit
A reflected cross-site scripting (xss) vulnerability exists in the charts tab selection functionality of WWBN AVideo 11.
A cross-site scripting (xss) vulnerability exists in the channelBody.php user name functionality of WWBN AVideo 11.6 and
A cross-site scripting (xss) vulnerability exists in the videoAddNew functionality of WWBN AVideo 11.6 and dev master co
An insufficient entropy vulnerability exists in the userRecoverPass.php recoverPass generation functionality of WWBN AVi
WWBN AVideo is an open source video platform. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable
AVideo is an open source video platform. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, low
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB