Executive Summary
A rate-limiting bypass vulnerability (CVE-2026-82644) has been disclosed in WWBN AVideo, an open-source video platform, affecting the current build (e01e41ecc) and earlier. The flaw lives in the enforceRateLimit() function that is supposed to protect login.json.php and 13 other endpoints from brute-force attacks. Because the underlying attempt counter silently discards writes for any client the platform classifies as a bot, an attacker can trivially disable rate limiting and submit unlimited login attempts. The issue carries a CVSS score as high as 8.7 (NVD lists 7.5), and was assigned by VulnCheck.
Vulnerability Overview
| Attribute | Value |
|---|---|
| CVE ID | CVE-2026-82644 |
| CVSS Score | 7.5–8.7 (High) |
| Type | Improper Restriction of Excessive Authentication Attempts |
| Component | enforceRateLimit(), backed by ObjectYPT::setCacheGlobal |
| Attack Vector | Network (remote, unauthenticated) |
| Privileges Required | None |
| User Interaction | None |
| Related Advisory | GHSA-6893-mcgv-9p2x |
Technical Details
enforceRateLimit() tracks failed attempts per client using a cache layer (ObjectYPT::setCacheGlobal). Before recording an attempt, the function checks whether the requesting client looks like a bot via isBot(). If isBot() returns true, the cache write is skipped entirely — meaning that client's attempt counter never increments and the rate limit never fires.
The problem is that isBot() is far too permissive:
- A request with no
User-Agentheader at all is treated as a bot by default. - Common tool identifiers such as
curl,bot,crawler, andspiderare also matched as bots.
Since tools like curl send a User-Agent: curl/x.y.z string by default, an attacker doesn't even need to craft anything unusual — the default behavior of common scripting and command-line HTTP clients is enough to permanently bypass the rate limiter.
1. Attacker sends login attempts to login.json.php (or one of 13 other endpoints)
2. Request omits User-Agent, or uses curl's default User-Agent string
3. enforceRateLimit() calls isBot() -> returns true
4. Attempt counter write is silently discarded via ObjectYPT::setCacheGlobal
5. No lockout is ever triggered, regardless of attempt volume
6. Attacker performs unrestricted password-guessing against valid accountsA closely related flaw disclosed at the same time, CVE-2026-82643, compounds the risk: plugin/Live/api/preauthorize.json.php accepts credentials over GET without rate limiting, letting attackers repeatedly submit correct credentials to trigger uncapped two-factor confirmation emails while also brute-forcing accounts.
Impact
| Impact | Description |
|---|---|
| Account Takeover | Unlimited password guessing against any account with no lockout |
| Credential Stuffing | Leaked credential lists can be tested at unlimited speed |
| 2FA Email Flooding | Related CVE-2026-82643 allows spamming of two-factor confirmation emails |
| No Authentication Required | Fully exploitable by an anonymous, unauthenticated attacker |
Remediation
WWBN has not published a patched build referenced in public advisories as of this writing. Until an official fix is confirmed, apply the following mitigations:
- Front the application with a WAF or reverse proxy that enforces its own rate limiting independent of the application-layer counter, keyed on IP address rather than client-reported headers.
- Do not trust
User-Agentfor security decisions — if you maintain a fork or custom build, key rate-limit tracking on IP address and session, and treat missing/bot-like User-Agent strings as higher risk, not an exemption. - Enforce strong, unique passwords and MFA on all accounts to reduce the impact of unrestricted guessing.
- Monitor authentication logs for high-volume login attempts from a single source, especially those with missing or generic (
curl,bot,crawler) User-Agent strings. - Restrict access to
login.json.phpand admin endpoints at the network layer where public exposure isn't required.
Detection
| Indicator | Description |
|---|---|
High-frequency requests to login.json.php with missing or generic User-Agent headers | Signature of the bypass technique |
Repeated GET requests to plugin/Live/api/preauthorize.json.php | Possible exploitation of the related CVE-2026-82643 |
| Spikes in failed login attempts with no corresponding account lockouts | Rate limiting is likely being bypassed |