Descripción
AVideo es una plataforma para compartir videos. En versiones anteriores a 8.1.0, el endpoint de transmisión en vivo `view/videosListToLive.php` acepta un streamer indicado por el atacante en `webSiteRootURL`, llama a `Login::run` en `objects/Login.php` y confía en el JSON devuelto como estado de sesión. Un atacante remoto no autenticado que pueda alojar un servicio HTTP accesible por el codificador puede otorgarse a sí mismo `isLogged` y `canStream` sin credenciales legítimas. El endpoint solo requiere valores no vacíos de `playlists_id` y `APISecret`; `APISecret` se reenvía en lugar de compararse con un secreto almacenado. Esta ruta nunca llama a `Streamer::isURLAllowed` y, por lo tanto, funciona independientemente de la lista de streamers permitidos del operador. Obtiene una segunda respuesta de lista de videos controlada por el atacante e interpola `videos[].path` sin escapar los argumentos de shell en los comandos `ffprobe` y `ffmpeg` que se pasan a `exec`; `isAudio` llama a `isVideo` para llegar al comando `ffprobe`. Las rutas que contienen delimitadores de shell ejecutan comandos arbitrarios del sistema operativo como el usuario del servidor web. El filtro de solicitudes no inspecciona el JSON de la lista de videos. Esto puede divulgar credenciales de la base de datos y credenciales de streamers almacenadas, comprometer la plataforma de origen usando esas credenciales, modificar archivos propiedad del usuario del servidor web, establecer persistencia y provocar la denegación del servicio del codificador. Este problema se corrigió en la versión 8.1.0.
Qué hacer
Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.
Versiones afectadas
- AVideo-Encoder Afectadas: < 8.1.0
Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.
Referencias
- Referencia en github.comgithub.com/WWBN/AVideo-Encoder/security/advisories/GHSA-rf63-6vwm-wv8p
- Referencia en github.comgithub.com/WWBN/AVideo-Encoder/commit/99b8ad9b66fe5726cababbe29dce9d9…
- Referencia en github.comgithub.com/WWBN/AVideo-Encoder/releases/tag/v8.1.0
Ver el texto original en inglés (CVE.org)
AVideo-Encoder: unauthenticated command execution through streamer login trust
AVideo is a video-sharing Platform. Prior to 8.1.0, the live-streaming endpoint `view/videosListToLive.php` accepts an attacker-named streamer in `webSiteRootURL`, calls `Login::run` in `objects/Login.php`, and trusts the returned JSON as session state. An unauthenticated remote attacker who can host an HTTP service reachable by the encoder can self-grant `isLogged` and `canStream` without legitimate credentials. The endpoint requires only nonempty `playlists_id` and `APISecret` values; `APISecret` is forwarded rather than checked against a stored secret. This path never calls `Streamer::isURLAllowed` and therefore works regardless of the operator's streamer allowlist. It fetches a second attacker-controlled video-list response and interpolates `videos[].path` without shell argument escaping into `ffprobe` and `ffmpeg` commands passed to `exec`; `isAudio` calls `isVideo` to reach the `ffprobe` command. Paths containing shell delimiters execute arbitrary operating-system commands as the web-server user. The request filter does not inspect the video-list JSON. This can disclose database and stored streamer credentials, compromise the upstream platform using those credentials, modify files owned by the web-server user, establish persistence, and deny encoder service. This issue is fixed in version 8.1.0.