GHSA-3mjv-375j-6h92

Suggest an improvement
Source
https://github.com/advisories/GHSA-3mjv-375j-6h92
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-3mjv-375j-6h92/GHSA-3mjv-375j-6h92.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-3mjv-375j-6h92
Aliases
  • CVE-2026-45731
Published
2026-05-18T19:01:59Z
Modified
2026-06-09T10:45:14.088400034Z
Severity
  • 4.9 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N CVSS Calculator
  • 6.9 (Medium) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N CVSS Calculator
Summary
AVideo: Authenticated Arbitrary File Read in view/update.php
Details

Summary

view/update.php reads $_POST['updateFile'] as a relative path under updatedb/ and passes it to PHP's file() for line-by-line execution as part of a database migration. An authenticated administrator can abuse this to read arbitrary text files reachable from the web-server process — especially valuable on misconfigured deployments where /etc/passwd, .env, or other sibling-app configs are reachable relative to the AVideo directory.

Details

view/update.php, lines 134-145 (excerpt):

if (!empty($_POST['updateFile'])) { $dir = Video::getStoragePath() . "cache"; rrmdir($dir); /* …unrelated cache-clear… */

if (file_exists($logfile . "log")) {
    unlink($logfile . "log");
    // ...
}
$lines = file("{$global['systemRootPath']}updatedb/{$_POST['updateFile']}");

The User::isAdmin() and adminSecurityCheck(true) guards at lines 12-15 enforce admin auth, but $_POST['updateFile'] is concatenated into a path without any sanitization. file() returns the file's contents as an array of lines; the script subsequently iterates them and echoes the SQL it would run.

PoC

POST /view/update.php Content-Type: application/x-www-form-urlencoded

updateFile=../../../../etc/passwd Result: the script attempts to load /etc/passwd (relative to {systemRootPath}updatedb/), echoing each line in the migration-runner HTML output. $_POST['updateFile'] traversal accepted, no extension guard, no in-array whitelist.

Attempting ../../../../proc/self/environ similarly reveals web-server environment variables on Linux.

Impact

Verified on the current master branch of WWBN/AVideo (commit bc0340662…). Likely affected: every release where view/update.php contains the $_POST['updateFile'] consumer — pattern predates 2024.

Database specific
{
    "github_reviewed_at": "2026-05-18T19:01:59Z",
    "severity": "MODERATE",
    "cwe_ids": [
        "CWE-22"
    ],
    "github_reviewed": true,
    "nvd_published_at": "2026-05-29T14:16:31Z"
}
References

Affected packages

Packagist / WWBN/AVideo

Package

Name
WWBN/AVideo
Purl
pkg:composer/WWBN%2FAVideo

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Last affected
29.0

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-3mjv-375j-6h92/GHSA-3mjv-375j-6h92.json"