WWBN AVideo
CVE-2026-41060
HIGH
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
Network-reachable low-complexity SSRF requires an authenticated upload user (PR:L); reaching a separate internal service is a scope change (S:C) with read-only exfiltration (C:H, I:N, A:N).
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
3DescriptionGitHub Advisory
WWBN AVideo is an open source video platform. In versions 29.0 and below, the isSSRFSafeURL() function in objects/functions.php contains a same-domain shortcircuit (lines 4290-4296) that allows any URL whose hostname matches webSiteRootURL to bypass all SSRF protections. Because the check compares only the hostname and ignores the port, an attacker can reach arbitrary ports on the AVideo server by using the site's public hostname with a non-standard port. The response body is saved to a web-accessible path, enabling full exfiltration. Commit a0156a6398362086390d949190f9d52a823000ba fixes the issue.
AnalysisAI
Server-side request forgery in WWBN AVideo 29.0 and earlier lets an authenticated upload-capable user bypass the isSSRFSafeURL() same-domain shortcircuit by supplying the site's own public hostname with a non-standard port, causing the server to fetch arbitrary internal ports and save the response to a web-accessible cache path for full exfiltration. The flaw carries a CVSS 7.7 (scope-changing confidentiality impact) and publicly available exploit code exists via the GitHub Security Advisory, though it is not listed in CISA KEV and EPSS probability is negligible (0.03%, 8th percentile).
Technical ContextAI
The vulnerability lives in objects/functions.php within isSSRFSafeURL(), the PHP guard AVideo uses to vet outbound URLs before url_get_contents() fetches them. A prior fix (commit 40872e529) made the SSRF check unconditional, but the check itself contained a same-origin allowlist that returned true whenever a URL's hostname equaled the configured webSiteRootURL host - comparing only the hostname and never the port, scheme, or path. This is a classic CWE-918 (Server-Side Request Forgery) allowlist-bypass root cause: an origin check that is too coarse. Because parse_url() host matching ignored the port, http(s)://<public-host>:<any-port>/ satisfied the check, letting the server reach any TCP port bound on its own interface. The reachable sink is objects/aVideoEncoder.json.php, where $_REQUEST['downloadURL'] flows through downloadVideoFromDownloadURL() and the fetched body is written under Video::getStoragePath().'cache/tmpFile/'.basename(downloadURL), a directory inside the web-accessible videos storage tree. CPE cpe:2.3:a:wwbn:avideo:*:*:*:*:*:*:*:* confirms the affected product line.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply commit a0156a6398362086390d949190f9d52a823000ba, which extends the same-origin check to require that BOTH hostname and port match webSiteRootURL before allowing the request. If you cannot deploy from source immediately, apply specific compensating controls: restrict who can reach the sink by disabling public/self-service account registration and revoking upload permission from untrusted users (removes the PR:L precondition, at the cost of blocking legitimate uploaders); place the AVideo host so that no sensitive internal services listen on other ports of its interface, or firewall the AVideo server's outbound/loopback access to those ports (breaks the SSRF target but may affect co-located services); and deny web access to the cache/tmpFile/ directory under the videos storage path to block retrieval of exfiltrated responses (prevents the read-back, though the internal fetch may still occur). Track the vendor advisory GHSA-j432-4w3j-3w8j (https://github.com/WWBN/AVideo/security/advisories/GHSA-j432-4w3j-3w8j) for a tagged release and upgrade to it once published.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
Same weakness CWE-918 – Server-Side Request Forgery (SSRF)
View allShare
External POC / Exploit Code
Leaving vuln.today
GHSA-j432-4w3j-3w8j