{"items":[{"id":"NVI-00007368","kind":"vulnerability","title":"AVideo: Authenticated Arbitrary File Read in view/update.php","revision":4,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected.","NVD lastModified does not establish freshness of every associated CPE record."],"lifecycle":"active","identifiers":["GHSA-3mjv-375j-6h92","CVE-2026-45731"],"plain_summary":"GitHub lists this reviewed advisory for WWBN/AVideo. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","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-00c05b32a177cfb1be816f6d82b3b165"],"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":"CVSS","as_of":"2026-06-09T10:28:39.000Z","value":"4.9 medium","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-20f13fc8baf1309a51a0e50cce466c84"},{"kind":"CVSS","as_of":"2026-07-21T12:10:00.090Z","value":"4.9 MEDIUM (3.1)","meaning":"nvd@nist.gov severity; no combined Null risk score.","source_id":"sr-c9dbd2df1f8c3cb73fea6d18519d9a52"},{"kind":"CVSS","as_of":"2026-07-21T12:10:00.090Z","value":"6.9 MEDIUM (4.0)","meaning":"security-advisories@github.com severity; no combined Null risk score.","source_id":"sr-c9dbd2df1f8c3cb73fea6d18519d9a52"},{"kind":"EPSS","as_of":"2026-11-05T12:03:04.000Z","value":"0.469%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.40762. Missing scores are unknown.","source_id":"sr-00c05b32a177cfb1be816f6d82b3b165"}],"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-20f13fc8baf1309a51a0e50cce466c84","url":"https://github.com/advisories/GHSA-3mjv-375j-6h92","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-3mjv-375j-6h92","publisher":"GitHub Advisory Database","observed_at":"2026-11-06T20:58:31.464Z"},{"id":"sr-d9022c7c4a467f2f3f974773a16e52f1","url":"https://github.com/advisories/GHSA-3mjv-375j-6h92","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-3mjv-375j-6h92","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:41:49.657Z"},{"id":"sr-c9dbd2df1f8c3cb73fea6d18519d9a52","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-45731","basis":"official_catalog","notes":"This product uses data from the NVD API but is not endorsed or certified by the NVD.","title":"CVE-2026-45731","publisher":"NIST National Vulnerability Database","observed_at":"2026-11-01T07:24:11.754Z"},{"id":"sr-00c05b32a177cfb1be816f6d82b3b165","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-45731","publisher":"FIRST EPSS","observed_at":"2026-11-06T00:24:57.657Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-20f13fc8baf1309a51a0e50cce466c84"],"technology":"WWBN/AVideo","known_exclusions":[],"conditions_summary":"### Summary\nview/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.\n\n### Details\nview/update.php, lines 134-145 (excerpt):\n\nif (!empty($_POST['updateFile'])) {\n    $dir = Video::getStoragePath() . \"cache\";\n    rrmdir($dir);\n    /* …unrelated cache-clear… */\n\n    if (file_exists($logfile . \"log\")) {\n        unlink($logfile . \"log\");\n        // ...\n    }\n    $lines = file(\"{$global['systemRootPath']}updatedb/{$_POST['updateFile']}\");\nThe 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.\n\n### PoC\nPOST /view/update.php\nContent-Type: application/x-www-form-urlencoded\n\nupdateFi","public_affected_ranges":["<= 29.0"]},{"certainty":"source_listed","source_ids":["sr-d9022c7c4a467f2f3f974773a16e52f1"],"technology":"WWBN/AVideo","known_exclusions":[],"conditions_summary":"### Summary\nview/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.\n\n### Details\nview/update.php, lines 134-145 (excerpt):\n\nif (!empty($_POST['updateFile'])) {\n    $dir = Video::getStoragePath() . \"cache\";\n    rrmdir($dir);\n    /* …unrelated cache-clear… */\n\n    if (file_exists($logfile . \"log\")) {\n        unlink($logfile . \"log\");\n        // ...\n    }\n    $lines = file(\"{$global['systemRootPath']}updatedb/{$_POST['updateFile']}\");\nThe 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.\n\n### PoC\nPOST /view/update.php\nContent-Type: application/x-www-form-urlencoded\n\nupdateFi","public_affected_ranges":["ECOSYSTEM: introduced 0; last_affected 29.0"]}],"null_published_at":"2026-11-07T22:29:23.427Z","source_updated_at":"2026-06-09T10:28:39.000Z","source_disclosed_at":"2026-05-18T19:01:59.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Source facts changed; compare the preserved prior revision.","null_first_observed_at":"2026-10-31T21:41:49.657Z"},{"id":"NVI-00007368","kind":"vulnerability","title":"AVideo: Authenticated Arbitrary File Read in view/update.php","revision":3,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-3mjv-375j-6h92","CVE-2026-45731"],"plain_summary":"GitHub lists this reviewed advisory for WWBN/AVideo. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","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-00c05b32a177cfb1be816f6d82b3b165"],"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":"CVSS","as_of":"2026-06-09T10:28:39.000Z","value":"4.9 medium","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-20f13fc8baf1309a51a0e50cce466c84"},{"kind":"EPSS","as_of":"2026-11-05T12:03:04.000Z","value":"0.469%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.40762. Missing scores are unknown.","source_id":"sr-00c05b32a177cfb1be816f6d82b3b165"}],"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-20f13fc8baf1309a51a0e50cce466c84","url":"https://github.com/advisories/GHSA-3mjv-375j-6h92","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-3mjv-375j-6h92","publisher":"GitHub Advisory Database","observed_at":"2026-11-06T20:58:31.464Z"},{"id":"sr-d9022c7c4a467f2f3f974773a16e52f1","url":"https://github.com/advisories/GHSA-3mjv-375j-6h92","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-3mjv-375j-6h92","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:41:49.657Z"},{"id":"sr-00c05b32a177cfb1be816f6d82b3b165","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-45731","publisher":"FIRST EPSS","observed_at":"2026-11-06T00:24:57.657Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-20f13fc8baf1309a51a0e50cce466c84"],"technology":"WWBN/AVideo","known_exclusions":[],"conditions_summary":"### Summary\nview/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.\n\n### Details\nview/update.php, lines 134-145 (excerpt):\n\nif (!empty($_POST['updateFile'])) {\n    $dir = Video::getStoragePath() . \"cache\";\n    rrmdir($dir);\n    /* …unrelated cache-clear… */\n\n    if (file_exists($logfile . \"log\")) {\n        unlink($logfile . \"log\");\n        // ...\n    }\n    $lines = file(\"{$global['systemRootPath']}updatedb/{$_POST['updateFile']}\");\nThe 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.\n\n### PoC\nPOST /view/update.php\nContent-Type: application/x-www-form-urlencoded\n\nupdateFi","public_affected_ranges":["<= 29.0"]},{"certainty":"source_listed","source_ids":["sr-d9022c7c4a467f2f3f974773a16e52f1"],"technology":"WWBN/AVideo","known_exclusions":[],"conditions_summary":"### Summary\nview/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.\n\n### Details\nview/update.php, lines 134-145 (excerpt):\n\nif (!empty($_POST['updateFile'])) {\n    $dir = Video::getStoragePath() . \"cache\";\n    rrmdir($dir);\n    /* …unrelated cache-clear… */\n\n    if (file_exists($logfile . \"log\")) {\n        unlink($logfile . \"log\");\n        // ...\n    }\n    $lines = file(\"{$global['systemRootPath']}updatedb/{$_POST['updateFile']}\");\nThe 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.\n\n### PoC\nPOST /view/update.php\nContent-Type: application/x-www-form-urlencoded\n\nupdateFi","public_affected_ranges":["ECOSYSTEM: introduced 0; last_affected 29.0"]}],"null_published_at":"2026-11-07T07:07:42.510Z","source_updated_at":"2026-06-09T10:28:39.000Z","source_disclosed_at":"2026-05-18T19:01:59.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:41:49.657Z"},{"id":"NVI-00007368","kind":"vulnerability","title":"AVideo: Authenticated Arbitrary File Read in view/update.php","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-3mjv-375j-6h92","CVE-2026-45731"],"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-d9022c7c4a467f2f3f974773a16e52f1"],"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-d9022c7c4a467f2f3f974773a16e52f1","url":"https://github.com/advisories/GHSA-3mjv-375j-6h92","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-3mjv-375j-6h92","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:41:49.657Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-d9022c7c4a467f2f3f974773a16e52f1"],"technology":"WWBN/AVideo","known_exclusions":[],"conditions_summary":"### Summary\nview/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.\n\n### Details\nview/update.php, lines 134-145 (excerpt):\n\nif (!empty($_POST['updateFile'])) {\n    $dir = Video::getStoragePath() . \"cache\";\n    rrmdir($dir);\n    /* …unrelated cache-clear… */\n\n    if (file_exists($logfile . \"log\")) {\n        unlink($logfile . \"log\");\n        // ...\n    }\n    $lines = file(\"{$global['systemRootPath']}updatedb/{$_POST['updateFile']}\");\nThe 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.\n\n### PoC\nPOST /view/update.php\nContent-Type: application/x-www-form-urlencoded\n\nupdateFi","public_affected_ranges":["ECOSYSTEM: introduced 0; last_affected 29.0"]}],"null_published_at":"2026-10-31T22:13:14.333Z","source_updated_at":"2026-09-10T03:51:04.396Z","source_disclosed_at":"2026-05-18T19:01:59.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:41:49.657Z"}],"next_cursor":null,"snapshot_revision":"40769"}