CVE-2026-33867: AVideo has Plaintext Video Password Storage
Summary AVideo allows content owners to password-protect individual videos. The video password is stored in the database in plaintext — no hashing, salting, or encryption is applied. If an attacker gains read access to the database (via SQL injection, a database backup, or misconfigured access controls), they obtain all video passwords in cleartext.
Published Mar 26, 2026 · Updated Mar 27, 2026
Affected packages
wwbn/avideo
- Ecosystem
- Composer (PHP)
- Affected
- <= 26.0
- Fixed in
- No patched version yet
- Check
composer show wwbn/avideo
Advisory details
From the GitHub Advisory Database (CC BY 4.0).
Summary
AVideo allows content owners to password-protect individual videos. The video password is stored in the database in plaintext — no hashing, salting, or encryption is applied. If an attacker gains read access to the database (via SQL injection, a database backup, or misconfigured access controls), they obtain all video passwords in cleartext.
Details
File: objects/video.php
Vulnerable setter:
public function setVideo_password($video_password)
{
AVideoPlugin::onVideoSetVideo_password($this->id, $this->video_password, $video_password);
$this->video_password = trim($video_password);
}Vulnerable getter:
public function getVideo_password()
{
if (empty($this->video_password)) {
return '';
}
return trim($this->video_password);
}The value assigned to $this->video_password is only trim()-ed before being persisted to the database column video_password in the videos table. There is no call to any hashing function (e.g., password_hash(), sha256, or similar).
When a visitor enters a password to access a protected video, the comparison is done directly against the stored plaintext:
// Comparison at access check:
if ($video->getVideo_password() === $_POST['password']) { ... }This means:
- Any database read (SQL injection, backup leak, hosting panel access) exposes all video passwords as cleartext.
- Video passwords are often reused by users across other services, making this a credential harvesting risk.
- The plaintext value is also present in application memory and any query logs.
PoC
- Set a password on any video via the AVideo admin/creator UI.
- Query the database:
SELECT clean_title, video_password FROM videos WHERE video_password != ''; - All video passwords are returned in plaintext — no cracking required.
Alternatively, exploit any of the SQL injection vulnerabilities already reported in this repository to extract the video_password column directly.
Impact
- Type: Cleartext Storage of Sensitive Information (CWE-312)
- Severity: High
- Authentication required: No — any database read access (including via SQL injection by unauthenticated users) exposes all passwords
- Impact: Full exposure of all video access passwords; credential reuse attacks against users who share passwords across services
- Fix: Hash video passwords on write using
password_hash($video_password, PASSWORD_BCRYPT)and verify on read usingpassword_verify($_POST['password'], $stored_hash)
Credited to athuljayaram.
References
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. No analysis has been written for this entry yet. Methodology
More Composer (PHP) vulnerabilities
All Composer (PHP) entriesCVE-2026-40911
WWBN AVideo YPTSocket WebSocket Broadcast Relay Leads to Unauthenticated Cross-User JavaScript Execution via Client-Side eval() Sinks
critical10.0No fixApr 14, 2026CVE-2026-33716
AVideo Allows Unauthenticated Live Stream Control via Token Verification URL Override in control.json.php
critical9.4No fixMar 25, 2026CVE-2026-33478
AVideo Multi-Chain Attack: Unauthenticated Remote Code Execution via Clone Key Disclosure, Database Dump, and Command Injection
critical10.0No fixMar 20, 2026CVE-2026-33502
AVideo has Unauthenticated SSRF via plugin/Live/test.php
critical9.3No fixMar 20, 2026CVE-2026-33351
AVideo has Unauthenticated SSRF via `webSiteRootURL` Parameter in saveDVR.json.php, Chaining to Verification Bypass
critical9.1No fixMar 19, 2026CVE-2026-33352
AVideo has an Unauthenticated SQL Injection via `doNotShowCats` Parameter (Backslash Escape Bypass)
critical9.8No fixMar 19, 2026
