AVideo - Arbitrary User Session Hijacking via Meet Plugin uploadRecordedVideo Endpoint
Description
AVideo through 29.0 contains an authorization bypass vulnerability in the Meet plugin's uploadRecordedVideo.json.php endpoint that derives the target users_id from the uploaded filename without verification. An attacker with knowledge of the Meet shared secret can craft a malicious file upload with a filename containing an arbitrary users_id to invoke passwordless User->login() and establish an authenticated session as any user including admin. Attackers can obtain the Meet shared secret through path-traversal vulnerabilities or timing attacks against checkToken.json.php, then POST a crafted file to uploadRecordedVideo.json.php with a filename like '1-anything.mp4' to hijack admin sessions and gain full account takeover.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Affected products
2Patches
Vulnerability mechanics
Root cause
"The upload handler derives the target users_id from the attacker-controlled filename without verification, then calls passwordless User->login() to establish a session as that user."
Attack vector
An attacker first obtains the Meet shared secret, which is computed as `md5($global['systemRootPath'] . $global['salt'] . "meet")` (Meet.php:73) — obtainable via path-traversal CVEs that leak `videos/configuration.php` or via a timing oracle on `checkToken.json.php` [ref_id=1]. With the secret in hand, the attacker POSTs a crafted multipart request to `uploadRecordedVideo.json.php` with `Authorization: Bearer <secret>` and a file whose filename is `1-anything.mp4` (where `1` is the admin's `users_id`). The endpoint passes the shared-secret check, parses `users_id=1` from the filename, and calls `$userObject->login(true, true)` which sets `$_SESSION['user']`, issues a new `PHPSESSID` via `_session_regenerate_id()`, and returns `Set-Cookie` headers. The attacker captures that session cookie and uses it to impersonate the admin user, achieving full account takeover [ref_id=1].
Affected code
The vulnerability resides in `plugin/Meet/uploadRecordedVideo.json.php` (lines 56–65) where `$users_id = explode('-', $_FILES['upl']['name'])[0];` parses the target user identifier from the attacker-controlled filename, and in `objects/user.php` (User::login() no-password branch, lines 1276–1310) which commits a session for that user without any password check. The Meet shared-secret check at line 46 (`$objM->secret != $token`) only authenticates the caller as a trusted recorder but does not verify ownership of the parsed `users_id`.
What the fix does
The suggested fix removes the trust in the filename by requiring a signed claim (e.g., a JWT minted at meeting-create time) that binds `users_id` to the upload request, and replaces the passwordless `User->login()` call with a parameter that credits the upload to the user without establishing a session [ref_id=1]. Additionally, the fix recommends using `hash_equals` for secret comparison to prevent timing attacks, and either removing `checkToken.json.php` or gating it behind admin authentication. These changes ensure that even if the shared secret is compromised, an attacker cannot forge a `users_id` or obtain a session cookie from the upload endpoint.
Preconditions
- configMeet plugin must be enabled (default-off but commonly enabled in deployments using AVideo for video-conferencing recording)
- authAttacker must know the Meet shared secret, computable from videos/configuration.php or recoverable via timing attack on checkToken.json.php
- networkAttacker must be able to send HTTP POST requests to the AVideo server
- inputAttacker controls the filename of the uploaded file, which must follow the pattern <users_id>-
Generated on Jun 21, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
2- github.com/WWBN/AVideo/security/advisories/GHSA-qxvm-r42f-5p8jmitrevendor-advisory
- www.vulncheck.com/advisories/avideo-arbitrary-user-session-hijacking-via-meet-plugin-uploadrecordedvideo-endpointmitrethird-party-advisory
News mentions
0No linked articles in our index yet.