AVideo Meet Plugin Authorization Bypass via Filename Parameter
AVideo's Meet plugin contains an authorization bypass vulnerability in the `uploadRecordedVideo.json.php` endpoint that derives `users_id` from the uploaded filename and calls passwordless `User->login()`, allowing any caller with the Meet shared secret to obtain a session as arbitrary users including admin.
AVideo is a video-sharing platform with a Meet plugin for video conferencing integration. The uploadRecordedVideo.json.php endpoint in the Meet plugin is vulnerable to an authorization bypass. This vulnerability allows an attacker with knowledge of the Meet shared secret to authenticate as any user, including an administrator. The vulnerability stems from the endpoint using the filename of the uploaded video to determine the users_id for authentication. An attacker can manipulate this filename to impersonate any user. The shared secret is calculable from the AVideo salt, often leaked via separate path-traversal vulnerabilities (e.g. GHSA-83xq-8jxj-4rxm or GHSA-4wmm-6qxj-fpj4) or recoverable via timing attack on checkToken.json.php. The affected version is AVideo version 29.0 and earlier.
Attack Chain
- Attacker obtains the Meet shared secret through path traversal to read
videos/configuration.phpor by timing attacks against thecheckToken.json.phpendpoint. The secret is derived frommd5($global['systemRootPath'] . $global['salt'] . "meet"). - Attacker crafts a malicious HTTP POST request to
/plugin/Meet/uploadRecordedVideo.json.phpwith theAuthorization: Bearer <Meet secret>header set. - The POST request includes a multipart body with a file field named
upl. The attacker sets the filename of the uploaded file to1-anything.mp4, where1is the targetusers_id(e.g., the admin user). - The server validates the Meet shared secret, but trusts the attacker-controlled filename to determine the
users_idon line 56 ofplugin/Meet/uploadRecordedVideo.json.php. - The server instantiates a
Userobject using the attacker-providedusers_idand calls$userObject->login(true, true), triggering the passwordless login path inobjects/user.php. - The server sets
$_SESSION['user']to the impersonated user’s data, callssetUserCookie(...), and issues a new session ID via_session_regenerate_id(). - The HTTP response includes a
Set-Cookieheader with the newPHPSESSID. - The attacker uses the captured
PHPSESSIDcookie in subsequent requests to access the AVideo platform as the impersonated user, gaining full control of their account.
Impact
Successful exploitation of this vulnerability allows an attacker to gain unauthorized access to any user account on the AVideo platform, including administrator accounts. This can lead to complete system compromise, data breaches, and denial of service. There is no limit to which users_id can be targeted. If the Meet plugin is enabled, all accounts are at risk. An attacker achieving admin privileges can modify video content, access sensitive user data, and manipulate system settings.
Recommendation
- Apply the vendor-provided patch to AVideo that includes the suggested fixes to
plugin/Meet/uploadRecordedVideo.json.phpandobjects/user.phpas detailed in the advisory. - Deploy the “AVideo Meet Plugin Unauthorized Session Creation” Sigma rule to detect exploitation attempts.
- Remove the
checkToken.json.phpendpoint or restrict access to administrators only to mitigate the timing attack vector. - Monitor web server logs for POST requests to
/plugin/Meet/uploadRecordedVideo.json.phpwith unusual filenames in theuplfile field.
Detection coverage 2
AVideo Meet Plugin Unauthorized Session Creation
highDetects unauthorized session creation in AVideo Meet plugin by monitoring POST requests to uploadRecordedVideo.json.php with filenames containing user IDs.
AVideo checkToken.json.php Timing Attack Attempt
mediumDetects potential timing attack attempts against the checkToken.json.php endpoint by monitoring request volume from a single source IP.
Detection queries are available on the platform. Get full rules →