CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-34247

CVE-2026-34247: Insecure Direct Object Reference and Information Disclosure in WWBN AVideo

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 29, 2026·7 min read·91 visits

Executive Summary (TL;DR)

An IDOR flaw in WWBN AVideo's uploadPoster.php allows low-privileged authenticated users to overwrite stream posters and extract private broadcast keys of other users via WebSocket broadcasts.

WWBN AVideo versions up to and including 26.0 suffer from a Missing Authorization (IDOR) vulnerability in the plugin/Live/uploadPoster.php endpoint. An authenticated attacker can overwrite the poster image of any scheduled live stream. Furthermore, the exploitation triggers a WebSocket broadcast that leaks the victim's private broadcast key and user ID to all connected clients.

Vulnerability Overview

WWBN AVideo is an open-source video platform that allows users to host and manage video content, including live streaming capabilities. The platform utilizes various plugins to extend its functionality. The Live plugin, responsible for managing scheduled broadcasts, exposes an endpoint at plugin/Live/uploadPoster.php for users to upload custom poster images for their upcoming live streams.

An architectural flaw exists in the authorization model of this endpoint, classified under CWE-862 (Missing Authorization). The application correctly verifies that the user making the request possesses a valid session, but it fails to verify that the authenticated user owns the specific resource they are attempting to modify. This failure creates an Insecure Direct Object Reference (IDOR) vulnerability.

Exploitation of this vulnerability produces a dual-impact scenario. The primary mechanism allows an attacker to overwrite the visual assets of any scheduled stream by manipulating a single integer parameter. The secondary mechanism is an information disclosure triggered by the application's internal event system. Upon successfully processing the malicious file upload, the application broadcasts an unsecured notification containing highly sensitive credentials belonging to the victim.

Root Cause Analysis

The vulnerability originates in the input processing and authorization phases of the plugin/Live/uploadPoster.php script. When a user submits a poster upload request, the application retrieves the live_schedule_id and live_servers_id parameters directly from the $_REQUEST array using the intval() function. This initial processing sanitizes the input to ensure it is an integer, but it performs no validation regarding the relationship between the requesting user and the provided schedule ID.

The script subsequently calls the User::isLogged() method. This function confirms the presence of a valid authentication token, satisfying the requirement that the user is logged into the system. However, the script terminates its authorization checks at this stage. It proceeds to utilize the unvalidated $live_schedule_id to construct the file path for the target poster image. The application executes a move_uploaded_file operation against this path, directly overwriting the existing asset associated with the targeted schedule ID.

The critical information disclosure occurs in the post-upload execution flow. After successfully moving the file, the script instantiates a Live_schedule object corresponding to the modified ID. It then invokes the Live::notifySocketStats method. This method generates a socketLiveOFFCallback message intended to update client interfaces. The application broadcasts this payload over WebSockets to all connected clients. The payload inherently includes the state data of the modified schedule, which exposes the users_id and the private broadcast key of the schedule's owner.

This behavior highlights an inconsistency within the application's internal security posture. Other components within the AVideo platform correctly implement resource ownership validation. Endpoints such as plugin/Live/uploadPoster.json.php properly restrict access by requiring the user to be an administrator or the explicit owner of the object, indicating that the vulnerability in uploadPoster.php is an isolated implementation oversight rather than a systemic design flaw.

Code Analysis

The vulnerable implementation relies exclusively on global authentication state without contextual authorization. The initial logic simply verifies if the session is active before proceeding with file operations.

$live_servers_id = intval($_REQUEST['live_servers_id']);
$live_schedule_id = intval($_REQUEST['live_schedule_id']);
 
if (!User::isLogged()) {
    $obj->msg = 'You cant edit this file';
    die(json_encode($obj));
}

The vendor addressed this flaw in commit 5fcb3bdf59f26d65e203cfbc8a685356ba300b60. The patch introduces a precise contextual authorization check immediately following the global session verification. The patched code instantiates the target object and compares the owner's ID against the current session ID.

--- a/plugin/Live/uploadPoster.php
+++ b/plugin/Live/uploadPoster.php
@@ -16,6 +16,14 @@
     die(json_encode($obj));
 }
 
+if (!empty($live_schedule_id)) {
+    $ls = new Live_schedule($live_schedule_id);
+    if (!User::isAdmin() && $ls->getUsers_id() != User::getId()) {
+        $obj->msg = 'You cant edit this file';
+        die(json_encode($obj));
+    }
+}
+
 $live = AVideoPlugin::loadPluginIfEnabled("Live");

This remediation ensures that the live_schedule_id parameter cannot be manipulated to access unowned resources. The application first checks if the parameter is provided. If it is, the code initializes a Live_schedule object and retrieves the identifier of the legitimate owner via $ls->getUsers_id(). The logic then enforces a strict condition: unless the requesting user possesses administrative privileges (User::isAdmin()), their user ID (User::getId()) must exactly match the owner's ID. Requests failing this condition are terminated immediately.

Exploitation

Exploitation requires the attacker to possess a low-privileged account on the target AVideo instance. The attack methodology consists of three distinct phases: authentication, payload delivery via IDOR, and data extraction via WebSocket monitoring.

In the authentication phase, the attacker authenticates with the platform to obtain a valid session cookie. This satisfies the User::isLogged() check within the target script. The attacker then targets a known or enumerable live_schedule_id belonging to the victim. Since the schedule IDs are sequential integers, they are highly susceptible to simple enumeration.

The attacker constructs a multipart/form-data POST request directed at /plugin/Live/uploadPoster.php. The request includes a benign or malicious image file, the targeted live_schedule_id, and a live_servers_id value (typically 0).

curl -b cookies.txt \
  -F 'file_data=@malicious_poster.jpg' \
  -F 'live_schedule_id=1' \
  -F 'live_servers_id=0' \
  'https://target-avideo.com/plugin/Live/uploadPoster.php'

Simultaneously, the attacker monitors the application's WebSocket communications. Upon successful processing of the payload, the server triggers the Live::notifySocketStats routine. The attacker observes the incoming socketLiveOFFCallback message, which contains the victim's internal user ID and private broadcast key.

{
  "key": "VICTIM_PRIVATE_BROADCAST_KEY",
  "users_id": 123,
  "stats": { ... }
}

Impact Assessment

The vulnerability introduces a complex security impact combining integrity loss and severe confidentiality breach. The primary mechanism constitutes a low-level integrity violation. By overwriting scheduled stream posters, an attacker can deface the platform, display inappropriate content, or conduct social engineering campaigns against viewers expecting legitimate broadcast material.

The secondary mechanism poses a significantly higher operational risk. The exposure of the private broadcast key via the global WebSocket broadcast completely compromises the security boundary of the victim's live stream. The broadcast key operates as a direct authentication token for the streaming ingest server (such as RTMP).

Possession of this key allows an attacker to hijack the victim's stream entirely. The attacker can push arbitrary video feeds to the ingest server under the victim's identity. If the attacker initiates their broadcast before the legitimate owner, they can effectively deny service to the victim, as the streaming server will reject the legitimate owner's subsequent connection attempts.

The CVSS v3.1 vector is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N, resulting in a base score of 5.4 (Medium). The Confidentiality impact is rated Low in the standardized vector because the vulnerability leaks specific credentials rather than providing systemic read access. However, within the context of the platform's core streaming functionality, the operational severity of this credential disclosure is substantial.

Remediation

The vendor has addressed this vulnerability in versions of WWBN AVideo released subsequent to version 26.0. System administrators must prioritize upgrading their AVideo installations to version 26.1 or the latest available stable release. The official patch introduces proper authorization checks that explicitly validate resource ownership before permitting modifications.

In environments where immediate upgrading is structurally prohibitive, administrators can apply the patch manually. This involves editing the plugin/Live/uploadPoster.php file and inserting the Live_schedule authorization logic directly below the existing User::isLogged() check. The requisite code snippet is available in the official commit diff 5fcb3bdf59f26d65e203cfbc8a685356ba300b60.

Security teams should implement specific monitoring rules to detect exploitation attempts. Web application firewalls and access logs should be configured to flag anomalous HTTP POST requests targeting /plugin/Live/uploadPoster.php. A high frequency of requests from a single authenticated session referencing varying live_schedule_id parameters serves as a strong indicator of enumeration and exploitation activity.

Official Patches

WWBNOfficial Fix Commit

Fix Analysis (1)

Technical Appendix

CVSS Score
5.4/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
EPSS Probability
0.01%
Top 99% most exploited

Affected Systems

WWBN AVideo

Affected Versions Detail

Product
Affected Versions
Fixed Version
AVideo
WWBN
<= 26.026.1
AttributeDetail
CWE IDCWE-862
Attack VectorNetwork
CVSS Score5.4
EPSS Score0.00009
ImpactInformation Disclosure & File Overwrite
Exploit StatusPoC Available
Privileges RequiredLow

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-862
Missing Authorization

The software does not perform an authorization check when an actor attempts to access a resource or perform an action.

Vulnerability Timeline

Vulnerability disclosed and fix commit pushed
2026-03-27
CVE-2026-34247 published in NVD
2026-03-27
Detailed security advisory and PoC released via GitHub (GHSA-g3hj-mf85-679g)
2026-03-29

References & Sources

  • [1]GitHub Security Advisory
  • [2]NVD Record
  • [3]CVE.org Record
  • [4]OSV Record

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 6 hours ago•CVE-2026-53493
6.9

CVE-2026-53493: Uncontrolled Resource Consumption in containerd Image-Pull Descriptor Graph Resolution

containerd is an open-source container runtime. Prior to versions 1.7.36, 2.0.13, 2.2.9, 2.3.6, and 2.4.1, a crafted OCI index graph can force very high CPU/memory usage during PullImage (before container start), causing long ContainerCreating stalls and, at larger sizes, node/runtime instability. The vulnerability occurs because containerd's image-pull descriptor graph resolution handlers processed OCI image indices and manifests recursively without enforcing boundaries on traversal depth or breadth, and without maintaining a global visited registry to count duplicate references.

Alon Barad
Alon Barad
6 views•6 min read
•about 7 hours ago•GHSA-62MM-XWMV-CRHG
7.5

GHSA-62MM-XWMV-CRHG: Unauthenticated Path Traversal in Khoj Static File Serving Endpoint

An unauthenticated path traversal vulnerability exists in the Khoj AI assistant platform via the static file serving endpoint `/home/{file_path:path}`. Due to improper path sanitization when handling user input with Python's pathlib module, a remote attacker can read arbitrary files from the server's filesystem.

Alon Barad
Alon Barad
4 views•5 min read
•about 8 hours ago•CVE-2026-100369
8.4

CVE-2026-100369: Argument Injection Vulnerability in CliInvoke Process Runner Factories

An argument injection vulnerability (CWE-88) in CliInvoke and AlastairLundy.CliInvoke allows local attackers to execute arbitrary system commands. By injecting double-quote characters into target file paths or arguments, attackers can terminate operating-system-level quoted boundaries and introduce new commands when shell runners are utilized.

Amit Schendel
Amit Schendel
5 views•5 min read
•about 9 hours ago•CVE-2026-100368
8.4

CVE-2026-100368: OS Command Injection in CliInvoke Shell Wrappers

An OS command injection vulnerability exists in the PowerShell and Cmd shell wrappers of the CliInvoke .NET library (specifically the CliInvoke.Specializations package). Under vulnerable configurations, arguments and targets are passed as a single flat string to ProcessStartInfo.Arguments, permitting double-quote breakout and execution of arbitrary secondary commands with host process privileges.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 10 hours ago•GHSA-VV77-66RF-PM86
8.8

GHSA-vv77-66rf-pm86: Gas Draining Vulnerability in mpp Multi-Party Payments Library

A critical-severity input validation vulnerability in the Elixir multi-party payment library `mpp` allows unauthenticated remote attackers to exhaust the transaction fee payer's wallet balance. By submitting a crafted Ethereum transaction envelope with artificially inflated gas parameters, an attacker can force the server to co-sign and commit to pay exorbitant fees, leading to severe financial loss and Denial of Service.

Amit Schendel
Amit Schendel
5 views•5 min read
•about 11 hours ago•GHSA-QPXH-FF8M-C62V
7.5

GHSA-QPXH-FF8M-C62V: Gas Draining and Resource Exhaustion in ZenHive mpp Library

A critical gas draining vulnerability exists in the ZenHive mpp (Multi-Payment Protocol) library prior to version v0.6.0. By omitting validation of EIP-2930 access lists in custom 0x76 transaction envelopes, the library allows malicious clients to pad transaction payloads with dummy addresses, draining the gas sponsor's hot wallet.

Amit Schendel
Amit Schendel
4 views•8 min read