mediumCVSS 5.4Vulnerability

GHSA-x2pw-9c38-cp2j

## Summary Multiple AVideo JSON endpoints under `objects/` accept state-changing requests via `$_REQUEST`/`$_GET` and persist changes tied to the caller's session user, without any anti-CSRF token, origin check, or referer check. A malicious page visited by a logged-in victim can silently: 1. Cast/flip the victim's like/dislike on any comment (`objects/comments_like.json.php`). 2. Post a comment authored by the victim on any video, with attacker-chosen text (`objects/commentAddNew.json.php`). 3. Delete assets from any category (`objects/categoryDeleteAssets.json.php`) when the victim has category management rights. Each endpoint is reachable from a browser via a simple `<img src="…">` tag or form submission, so exploitation only requires the victim to load an attacker-controlled HTML resource. ## Details AVideo exposes a helper, `forbidIfIsUntrustedRequest()` (`objects/functionsSecurity.php:138`), that rejects cross-origin requests when the `Referer`/`Origin` does not match `webSiteRootURL`. It is only invoked in one file in the tree — `objects/userUpdate.json.php:18` — and is *not* applied to the endpoints below. There is also an `isGlobalTokenValid()` helper (`objects/functions.php:2313`) intended for CSRF-style token checks; none of the affected endpoints call it. `allowOrigin()` only sets CORS response headers and does not prevent cookie-bearing top-level or image requests from reaching the server. ### 1. `objects/comments_like.json.php` — CSRF → forced like/dislike ```php // objects/comments_like.json.php 15: if (empty($_POST['comments_id']) && !empty($_GET['comments_id'])) { 16: $_POST['comments_id'] = $_GET['comments_id']; 17: } 18: 19: $like = new CommentsLike($_GET['like'], $_POST['comments_id']); 20: echo json_encode(CommentsLike::getLikes($_POST['comments_id'])); ``` The endpoint deliberately promotes `$_GET['comments_id']` to `$_POST['comments_id']` so the call works for either verb. `CommentsLike::__construct` (`objects/comments_like.php:18`

Properties

ghsa_id
GHSA-x2pw-9c38-cp2j
severity
medium
summary
WWBN AVideo: Missing CSRF Protection on State-Changing JSON Endpoints Enables Forced Comment Creation, Vote Manipulation, and Category Asset Deletion
cvss_score
5.4
cve_id
GHSA-x2pw-9c38-cp2j
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L
is_ghsa_only
true
ghsa_published
2026-04-14T23:12:53Z
source_url
https://github.com/advisories/GHSA-x2pw-9c38-cp2j
ghsa_updated
2026-04-14T23:12:54Z

Related Entities (4)

AFFECTS (1)

[Software]composer/WWBN/AVideo

VULNERABLE_TO (1)

[Software]composer/WWBN/AVideo

HAS_WEAKNESS (1)

[Weakness]Cross-Site Request Forgery (CSRF)

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph

GHSA-x2pw-9c38-cp2j (CVSS 5.4) — Ninja Signal Threat Intelligence | Ninja Signal