WWBN AVideo has CORS Origin Reflection with Credentials on Sensitive API Endpoints Enables Cross-Origin Account Takeover
Date: 2026-04
Affected: composer/wwbn/avideo
Attack vector: other
Category: vulnerability-disclosure
Severity: High
CVE: CVE-2026-41056
CWE: CWE-942
CVSS: 8.1 (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N)

## Summary The `allowOrigin($allowAll=true)` function in `objects/functions.php` reflects any arbitrary `Origin` header back in `Access-Control-Allow-Origin` along with `Access-Control-Allow-Credentials: true`. This function is called by both `plugin/API/get.json.php` and `plugin/API/set.json.php` — the primary API endpoints that handle user data retrieval, authentication, livestream credentials, and state-changing operations. Combined with the application's `SameSite=None` session cookie policy, any website can make credentialed cross-origin requests and read authenticated API responses, enabling theft of user PII, livestream keys, and performing state changes on behalf of the victim. ## Details The vulnerable code path is in `objects/functions.php` lines 2773-2791: ```php // objects/functions.php:2773 if ($allowAll) { $requestOrigin = $_SERVER['HTTP_ORIGIN'] ?? ''; if (!empty($requestOrigin)) { header('Access-Control-Allow-Origin: ' . $requestOrigin); header('Access-Control-Allow-Credentials: true'); } else { header('Access-Control-Allow-Origin: *'); } // ... allows all methods and headers ... return; } ``` This is called unconditionally at the top of both API entry points: ```php // plugin/API/get.json.php:12 allowOrigin(true); // plugin/API/set.json.php:12 allowOrigin(true); ``` The comment above the code claims "These endpoints return public ad XML and carry no session-sensitive data" — this is incorrect. The same `


Mitigations:

Architectural layers (MAESTRO):