{"items":[{"id":"NVI-00001991","kind":"vulnerability","title":"WWBN AVideo has a SSRF via same-domain hostname with alternate port bypasses isSSRFSafeURL","revision":2,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-j432-4w3j-3w8j","CVE-2026-41060"],"plain_summary":"OSV carries this publisher advisory for wwbn/avideo. This is an aggregated source copy; consult the original publisher and compare update dates.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-02da1b7060d0c60c7975a82ca8bc7a24"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"EPSS","as_of":"2026-11-04T12:03:12.000Z","value":"0.300%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.22835. Missing scores are unknown.","source_id":"sr-02da1b7060d0c60c7975a82ca8bc7a24"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-07720550e4aa76b3bc3adacf360b27d2","url":"https://github.com/advisories/GHSA-j432-4w3j-3w8j","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-j432-4w3j-3w8j","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:42:20.435Z"},{"id":"sr-02da1b7060d0c60c7975a82ca8bc7a24","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-41060","publisher":"FIRST EPSS","observed_at":"2026-11-04T17:58:50.326Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-07720550e4aa76b3bc3adacf360b27d2"],"technology":"wwbn/avideo","known_exclusions":[],"conditions_summary":"## Summary\n\nThe `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.\n\n## Details\n\nCommit `40872e529` fixed an extension-based SSRF bypass by making `isSSRFSafeURL()` unconditional. However, `isSSRFSafeURL()` itself contains a same-domain shortcircuit that returns `true` when the URL's hostname matches `webSiteRootURL`'s hostname, without validating the port:\n\n```php\n// objects/functions.php:4290-4296\nif (!empty($global['webSiteRootURL'])) {\n    $siteHost = strtolower(parse_url($global['webSiteRootURL'], PHP_URL_HOST));\n    if ($host === $siteHost) {\n        _error_log(\"isSSRFSafeURL: allowing same-domain request to {$host} (matches webSiteRootURL)\");\n        return true;  // Returns immediately — port, path, scheme all unchecked\n    }\n}\n```\n\nThe attack flow through `objects","public_affected_ranges":["ECOSYSTEM: introduced 0; last_affected 29.0"]}],"null_published_at":"2026-11-06T07:24:11.240Z","source_updated_at":"2026-05-05T16:11:42.930Z","source_disclosed_at":"2026-04-14T23:22:01.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-10-31T21:42:20.435Z"},{"id":"NVI-00001991","kind":"vulnerability","title":"WWBN AVideo has a SSRF via same-domain hostname with alternate port bypasses isSSRFSafeURL","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-j432-4w3j-3w8j","CVE-2026-41060"],"plain_summary":"OSV carries this publisher advisory for wwbn/avideo. This is an aggregated source copy; consult the original publisher and compare update dates.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-07720550e4aa76b3bc3adacf360b27d2"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-07720550e4aa76b3bc3adacf360b27d2","url":"https://github.com/advisories/GHSA-j432-4w3j-3w8j","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-j432-4w3j-3w8j","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:42:20.435Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-07720550e4aa76b3bc3adacf360b27d2"],"technology":"wwbn/avideo","known_exclusions":[],"conditions_summary":"## Summary\n\nThe `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.\n\n## Details\n\nCommit `40872e529` fixed an extension-based SSRF bypass by making `isSSRFSafeURL()` unconditional. However, `isSSRFSafeURL()` itself contains a same-domain shortcircuit that returns `true` when the URL's hostname matches `webSiteRootURL`'s hostname, without validating the port:\n\n```php\n// objects/functions.php:4290-4296\nif (!empty($global['webSiteRootURL'])) {\n    $siteHost = strtolower(parse_url($global['webSiteRootURL'], PHP_URL_HOST));\n    if ($host === $siteHost) {\n        _error_log(\"isSSRFSafeURL: allowing same-domain request to {$host} (matches webSiteRootURL)\");\n        return true;  // Returns immediately — port, path, scheme all unchecked\n    }\n}\n```\n\nThe attack flow through `objects","public_affected_ranges":["ECOSYSTEM: introduced 0; last_affected 29.0"]}],"null_published_at":"2026-10-31T21:53:28.061Z","source_updated_at":"2026-05-05T16:11:42.930Z","source_disclosed_at":"2026-04-14T23:22:01.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-10-31T21:42:20.435Z"}],"next_cursor":null,"snapshot_revision":"42594"}