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



GHSA-6W2R-CFPC-23R5

GHSA-6w2r-cfpc-23r5: Unauthenticated IDOR in AVideo Playlist Endpoints

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 7, 2026·5 min read·30 visits

Executive Summary (TL;DR)

Unauthenticated attackers can dump private playlists (Favorites, Watch Later) of any AVideo user by querying specific JSON endpoints with a target User ID. Fixed in version 25.0.

A critical Insecure Direct Object Reference (IDOR) vulnerability exists in the AVideo platform (formerly YouPHPTube) prior to version 25.0. The flaw allows unauthenticated remote attackers to retrieve private playlist information—including 'Watch Later' lists, 'Favorites', and custom private collections—for any user on the system. The vulnerability resides in the `/objects/playlistsFromUser.json.php` and `/objects/playlistsFromUserVideos.json.php` endpoints, which fail to validate the requester's identity or authorization level before querying the database with a flag that exposes non-public data.

Vulnerability Overview

AVideo (formerly YouPHPTube) is an open-source video sharing platform widely used for hosting streaming content. A significant access control vulnerability has been identified in the platform's API endpoints responsible for retrieving user playlists. Specifically, the endpoints /objects/playlistsFromUser.json.php and /objects/playlistsFromUserVideos.json.php are exposed to unauthenticated requests and lack necessary authorization checks.

The core issue is a failure to restrict access to sensitive user data based on the session's privileges. When these scripts are accessed, they unconditionally query the backend for all playlists associated with a provided users_id, including those explicitly marked as private. This behavior constitutes an Insecure Direct Object Reference (IDOR), as the system relies on user-supplied input (the User ID) to retrieve objects without verifying that the requester is authorized to view those specific objects.

This vulnerability allows any external actor to map out the private content preferences and curation activities of the platform's user base. While it does not allow for the modification of data (integrity) or denial of service (availability), the breach of confidentiality regarding user activity is absolute for the affected endpoints.

Root Cause Analysis

The vulnerability stems from a logical error in how the PlayList::getAllFromUser method is invoked within the public-facing API scripts. In AVideo's architecture, this method accepts a user ID and a boolean flag, commonly referred to as $publicOnly. When this flag is set to true, the method filters the database query to return only public playlists. When set to false, it returns all playlists, including private system lists like 'Watch Later' and 'Favorites'.

In the vulnerable versions (pre-25.0), the code in objects/playlistsFromUser.json.php hardcoded this parameter to false without any preceding authentication logic:

// Vulnerable implementation
$row = PlayList::getAllFromUser($_GET['users_id'], false);

The developers implicitly trusted that the endpoint would handle public/private distinction or intended for this endpoint to be internal-only, yet it was exposed publicly. There was no check to see if User::isLogged() was true, nor was there a comparison between the currently logged-in user's ID and the requested users_id. This effectively effectively bypassed the application's intended privacy model, treating every request as if it came from the playlist owner or an administrator.

Code Analysis: Vulnerable vs. Fixed

The remediation for this issue involved introducing an explicit authorization gate before querying the database. The patch logic ensures that the $publicOnly flag defaults to true (safe) and is only toggled to false (unsafe/full access) if strict conditions are met.

Vulnerable Code (Before Patch):

The original code directly consumed the GET parameter and queried the database with the unsafe flag.

// objects/playlistsFromUser.json.php (Pre-v25.0)
 
if (empty($_GET['users_id'])) {
    die("You need a user");
}
 
// CRITICAL FLAW: The second argument 'false' forces the backend
// to return ALL playlists, including private ones. No auth check exists.
$row = PlayList::getAllFromUser($_GET['users_id'], false);
 
echo json_encode($row);

Patched Code (Version 25.0):

The fix, introduced in commit 12adc66913724736937a61130ae2779c299445ca, implements a standard Access Control List (ACL) check.

// objects/playlistsFromUser.json.php (Patched)
 
$users_id = intval($_GET['users_id']);
 
// 1. Default to SAFE mode (Public playlists only)
$publicOnly = true;
 
// 2. Check Authentication and Authorization
// If the user is logged in AND (is the owner of the ID OR is an Admin)
if (User::isLogged() && (User::isAdmin() || User::getId() == $users_id)) {
    // 3. Allow access to private playlists
    $publicOnly = false;
}
 
// 4. Execute query with the determined flag
$row = PlayList::getAllFromUser($users_id, $publicOnly);
 
echo json_encode($row);

This change ensures that an unauthenticated attacker, or an authenticated user requesting another user's data, will only receive public playlists, preserving the confidentiality of private collections.

Exploitation Methodology

Exploiting this vulnerability requires no special tools, authentication, or race conditions. It is a standard GET request manipulatable via a web browser or command-line HTTP client. The attacker only needs to know or guess a valid users_id. Since user IDs are often sequential integers, an attacker can easily iterate through the entire user base.

Proof of Concept:

The following curl command retrieves the private playlists for User ID 1 (typically the administrator):

curl -s "https://target-avideo-site.com/objects/playlistsFromUser.json.php?users_id=1" | jq

Expected Response (Vulnerable):

The server returns a JSON array containing private system playlists. Note the status fields indicating 'private', 'watch_later', or 'favorite'.

[
  {
    "id": 45,
    "name": "Watch Later",
    "status": "watch_later",
    "users_id": 1,
    "videos": [...]
  },
  {
    "id": 46,
    "name": "My Secret Project",
    "status": "private",
    "users_id": 1,
    "videos": [...]
  }
]

In a secured environment, or against the patched version, the response would either be empty or contain only playlists where status is 'public'.

Impact Assessment

The primary impact of GHSA-6w2r-cfpc-23r5 is Confidentiality Loss. While the vulnerability does not allow for Remote Code Execution (RCE) or data modification, the privacy implications are significant for a social platform.

Specific Consequences:

  • Privacy Violation: Users expect their 'Watch Later' and 'Favorite' lists to be private. Exposure of this data can reveal personal interests, political affiliations, or sensitive habits.
  • User Enumeration: Attackers can validate the existence of user IDs by observing the difference between an empty response (invalid user) and a response containing empty arrays (valid user with no playlists) or actual data.
  • Social Engineering: The metadata retrieved (names of private playlists, specific videos bookmarked) provides highly specific context that can be used to craft convincing phishing emails targeting specific users.

Severity Scoring:

  • CVSS v4.0: 6.9 (Medium)
  • Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P
  • Note: The severity is capped at Medium/High because the scope is limited to playlist metadata. However, the ease of exploitation (Network, Unauthenticated, Low Complexity) makes it a high-priority fix for privacy-conscious deployments.

Official Patches

WWBNGitHub Commit: Fix for IDOR in playlist objects

Fix Analysis (1)

Technical Appendix

CVSS Score
6.9/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P

Affected Systems

AVideo < 25.0

Affected Versions Detail

Product
Affected Versions
Fixed Version
AVideo
WWBN
< 25.025.0
AttributeDetail
CWE IDCWE-639 (Authorization Bypass Through User-Controlled Key)
CVSS v4.06.9 (Medium)
Attack VectorNetwork (Unauthenticated)
ImpactInformation Disclosure (Confidentiality)
Affected Componentobjects/playlistsFromUser.json.php
Fix Version25.0

MITRE ATT&CK Mapping

T1596Search Open Technical Databases
Reconnaissance
T1087Account Discovery
Discovery
CWE-639
Insecure Direct Object Reference (IDOR)

The application allows an attacker to access a resource (playlists) by directly referencing its identifier (user_id) without verifying access rights.

Vulnerability Timeline

Fix commit pushed to repository
2026-03-06
GitHub Advisory GHSA-6w2r-cfpc-23r5 published
2026-03-07

References & Sources

  • [1]GitHub Security Advisory GHSA-6w2r-cfpc-23r5
  • [2]OSV Vulnerability 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

•8 minutes ago•CVE-2026-56677
8.6

CVE-2026-56677: Unauthenticated Server-Side Request Forgery in 9Router OIDC Test Endpoint

A high-severity security vulnerability exists in 9Router, an AI router and token saver dashboard. When dashboard authentication features are disabled or left in default configurations, the application exposes administrative testing routines directly to the public internet. Unauthenticated network adversaries can exploit the OIDC configuration validation endpoint to initiate arbitrary HTTP requests, routing unauthorized traffic to local loops, adjacent container ports, and cloud resource metadata interfaces.

Amit Schendel
Amit Schendel
0 views•5 min read
•about 1 hour ago•CVE-2026-64849
9.3

CVE-2026-64849: Server-Side Request Forgery (SSRF) in MLflow Webhooks via DNS Rebinding

CVE-2026-64849 is a critical Server-Side Request Forgery (SSRF) vulnerability affecting MLflow tracking servers prior to version 3.15.0. It allows unauthenticated remote attackers to bypass outbound request destination filters using DNS rebinding or HTTP redirects. This exposure risks compromising sensitive cloud infrastructure metadata and internal microservices.

Alon Barad
Alon Barad
2 views•5 min read
•about 2 hours ago•CVE-2026-69146
6.5

CVE-2026-69146: Missing Authorization Bypass in MLflow Basic Authentication Middleware

This technical report details a missing authorization vulnerability (CVE-2026-69146 / GHSA-3p64-6gvh-82v5) affecting the MLflow platform from version 3.13.0 to 3.15.0. When MLflow is configured with the built-in basic-auth plugin, authenticated users can bypass run-level UPDATE authorization checks, enabling unauthorized dataset and model lineage metadata injection.

Alon Barad
Alon Barad
2 views•7 min read
•about 3 hours ago•CVE-2026-69148
7.1

CVE-2026-69148: Broken Object Level Authorization (BOLA) in MLflow Model Registry

MLflow prior to version 3.15.0 fails to perform proper authorization checks when registering model versions, allowing authenticated users with access to a registered model to link and access artifacts from runs and models belonging to other users without authorization.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 4 hours ago•CVE-2026-59893
7.5

CVE-2026-59893: Regular Expression Denial of Service in sqlparse Lexer

A high-severity Regular Expression Denial of Service (ReDoS) vulnerability in the sqlparse Python library prior to version 0.6.0 allows unauthenticated remote attackers to trigger CPU exhaustion and application denial of service via crafted SQL inputs containing unmatched dollar-quoted literals or unclosed multiline comments.

Alon Barad
Alon Barad
4 views•6 min read
•about 5 hours ago•GHSA-FHGH-WQ4Q-R37X
7.8

GHSA-FHGH-WQ4Q-R37X: Remote Code Execution via Sigstore Signature Verification Bypass in uniget CLI

A high-severity logic inversion flaw in the uniget CLI completely bypasses Sigstore cryptographic signature verification on metadata files by default. If an attacker can poison the package metadata cache or repository, they can execute arbitrary OS commands under the privileges of the active user.

Alon Barad
Alon Barad
5 views•5 min read