Mar 23, 2026·5 min read·34 visits
An unauthenticated information disclosure vulnerability in AVideo's Permissions plugin allows complete mapping of user groups to plugins via a simple HTTP GET request.
WWBN AVideo versions 26.0 and prior suffer from a missing authorization vulnerability (CWE-862) in the Permissions plugin. Unauthenticated attackers can query the list.json.php endpoint to extract the complete internal permission matrix, detailing the relationships between user groups and plugins. This flaw arises from a failure to implement functional level access control checks that are present in sibling administrative endpoints.
WWBN AVideo is an open-source video platform that utilizes a plugin architecture to extend base functionality. The Permissions plugin manages access control by defining relationships between user groups and various platform plugins. This system dictates which users can access specific features within the application.
In AVideo versions up to and including 26.0, a Missing Authorization vulnerability (CWE-862) exists within the Permissions plugin's administrative interface. Sibling endpoints in the plugin/Permissions/View/Users_groups_permissions/ directory, such as add.json.php and delete.json.php, properly restrict access to administrative users. The list.json.php endpoint omits this authorization gate entirely.
This oversight allows an unauthenticated remote attacker to retrieve the complete mapping of user groups to plugins. The exposed JSON matrix reveals the internal authorization model of the application. This data facilitates targeted privilege escalation attacks by exposing exactly which user groups possess access to which platform extensions.
The vulnerability originates from a failure to implement functional level access control in the list.json.php script. When an HTTP request is made to this endpoint, the PHP script initializes the global application environment by requiring configuration.php. It then proceeds directly to resource retrieval without verifying the session state or user role.
The script calls the static method Users_groups_permissions::getAll(). This method relies on the underlying ObjectYPT database abstraction layer to execute a SELECT * FROM users_groups_permissions SQL query. Because the script does not halt execution or validate the requester's privileges prior to this call, the query executes unconditionally.
The fundamental error is the absence of an explicit authorization boundary. The application relies on the developer to manually include authorization checks in every endpoint, creating a fragile security posture where a single omitted check results in direct data exposure.
Analysis of the plugin/Permissions/View/Users_groups_permissions/list.json.php file reveals the exact missing logic. The vulnerable version of the script consists of basic initialization followed immediately by data extraction.
<?php
require_once '../../../../videos/configuration.php';
require_once $global['systemRootPath'] . 'plugin/Permissions/Objects/Users_groups_permissions.php';
header('Content-Type: application/json');
$rows = Users_groups_permissions::getAll();
?>
{"data": <?php echo json_encode($rows); ?>}The remediation applied in commit b583acdc9a9d1eab461543caa363e1a104fb4516 introduces the necessary validation. The patch first verifies that the Permissions plugin is active using AVideoPlugin::loadPluginIfEnabled('Permissions'). It then enforces the administrative requirement via User::isAdmin(), halting execution and returning an error JSON object if the check fails.
<?php
require_once '../../../../videos/configuration.php';
require_once $global['systemRootPath'] . 'plugin/Permissions/Objects/Users_groups_permissions.php';
+$plugin = AVideoPlugin::loadPluginIfEnabled('Permissions');
+if (!User::isAdmin()) {
+ die(json_encode(['error' => true, 'msg' => 'You cant do this']));
+}
header('Content-Type: application/json');
$rows = Users_groups_permissions::getAll();This fix aligns the list.json.php endpoint with the security model used by other administrative endpoints in the same directory, establishing a consistent authorization boundary.
Exploitation of CVE-2026-33501 requires no authentication, no special network positioning, and no prior knowledge of the target system. An attacker simply issues an HTTP GET request to the vulnerable endpoint. The vulnerability is highly reliable and leaves minimal forensic footprint beyond standard web server access logs.
The exploit can be executed using standard command-line HTTP clients. The following proof-of-concept demonstrates the attack vector:
curl -s https://<target-avideo-instance>/plugin/Permissions/View/Users_groups_permissions/list.json.phpThe server responds with a JSON object containing an array of permission records. Each record links a users_groups_id to a plugins_id, alongside metadata such as type and status.
{
"data": [
{
"id": "1",
"users_groups_id": "2",
"plugins_id": "5",
"type": "1",
"status": "a"
}
]
}The direct impact of CVE-2026-33501 is the unauthorized disclosure of the application's internal authorization model. The CVSS v3.1 base score of 5.3 reflects this scope, characterizing the vulnerability as a low-impact confidentiality breach with no integrity or availability consequences.
While the data exposed does not include user credentials or personally identifiable information (PII), it provides substantial reconnaissance value. By mapping user groups to specific plugins, an attacker gains a blueprint of the application's attack surface. This allows the attacker to identify which user roles possess access to potentially vulnerable extensions.
This vulnerability serves as a stepping stone for complex privilege escalation attacks. An attacker can use the permission matrix to correlate accessible plugins with known vulnerabilities in those plugins, streamlining subsequent exploitation attempts against authenticated attack surfaces.
The vendor addressed this vulnerability in March 2026. Organizations deploying WWBN AVideo must upgrade to the post-26.0 release that incorporates the official patches. The fix is implemented across two specific commits (b583acdc9a9d1eab461543caa363e1a104fb4516 and dc3c825734628bb32550d0daa125f05bacb6829c).
If immediate patching is not feasible, administrators can manually apply the patch by modifying the plugin/Permissions/View/Users_groups_permissions/list.json.php file on the server. The manual remediation involves inserting the AVideoPlugin::loadPluginIfEnabled and User::isAdmin checks directly before the header() declaration.
Network administrators can also mitigate this issue at the web application firewall (WAF) or reverse proxy level. Rules can be configured to block external requests to the plugin/Permissions/View/Users_groups_permissions/ directory, restricting access solely to trusted internal IP ranges or management subnets.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
WWBN AVideo WWBN | <= 26.0 | - |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-862 |
| Attack Vector | Network |
| CVSS Score | 5.3 (Medium) |
| Impact | Confidentiality: Low |
| Exploit Status | Proof of Concept (PoC) Available |
| KEV Status | Not Listed |
The software does not perform an authorization check when an actor attempts to access a resource or perform an action.
The devbridge-autocomplete package (jQuery-Autocomplete) fails to escape category headers and suggestion values when using default formatters formatGroup and formatResult. If suggestions contain untrusted input, arbitrary HTML and JavaScript execute directly in the victim's browser session.
OpenCTI versions prior to 6.1.9 fail to properly restrict GraphQL schema introspection queries due to a weak pattern-matching implementation. An unauthenticated attacker can bypass the introspection block list by stripping whitespace and carriage returns, enabling complete reconnaissance of the GraphQL schema.
An unrestricted file upload vulnerability in Paymenter's support ticket system (prior to version 1.2.11) allows authenticated users to upload arbitrary PHP scripts to a web-accessible directory. The application fails to validate file extensions or MIME types before storing the files, enabling remote code execution under the web server's privilege context.
A technical analysis of CVE-2026-21887, a Server-Side Request Forgery (SSRF) vulnerability in OpenCTI. The flaw occurs in the platform's data ingestion mechanism, which processes user-supplied feed URLs via Axios under a default configuration. Authenticated users with low privileges can exploit this to pivot into internal infrastructure, target metadata services, and scan private networks.
A critical vulnerability exists in the stigmem-node package when running the opt-in stigmem-plugin-multi-tenant plugin. Due to a failure to enforce tenant-scoping filters on database queries within the decay sweep, quarantine moderation, and right-to-be-forgotten (RTBF) subsystems, an authorized caller belonging to one tenant can access, modify, and delete facts belonging to all other tenants. This broken object level authorization (BOLA) vulnerability allows cross-tenant data manipulation and information leakage.
An origin validation error and cross-site request forgery vulnerability in @zenalexa/unicli prior to version 0.225.2 allows cross-origin web applications to execute arbitrary tools on a user's local machine via the legacy stateless HTTP transport.