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.
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)
Software afectado
Haz clic en una tecnología para ver todas sus vulnerabilidades.
| Plataforma | Paquete | Versiones vulnerables | Corregida en |
|---|---|---|---|
| Paquete de Composer | wwbn/avideo | <= 26.0 | sin corrección |
Referencias
- Vector CVSS
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N- Debilidad (CWE)
CWE-312- Plataforma
- Composer
- Paquete
wwbn/avideo- Publicada
- 26.03.2026
- Actualizado
- 11.10.2026 10:22
Fuentes y licencias
OSV / GitHub Advisory Database - GHSA-363v-5rh8-23wg - CC BY 4.0
Historial de vulnerabilidades: wwbn/avideo
Todas las vulnerabilidades publicadas de este paquete (Paquete de Composer), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.
- Entradas en total
- 160
- Primera → última
- 04.2022 06.2026
- Sin corrección
- 143
- Explotada en ataques
- 0
Distribución por gravedad
- Crítica 14
- Alta 61
- Media 83
- Baja 2
Divulgaciones por año
- 2022: 2
- 2023: 5
- 2024: 5
- 2025: 0
- 2026: 148
-
AVideo has Plaintext Video Password Storage esta entrada
Identifica las vulnerabilidades de tu aplicación
Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.