{"id":"GHSA-c8h8-vq34-9fw2","aliases":["CVE-2026-47694"],"title":"WWBN AVideo: Stored XSS via unescaped Gallery category description","titleSource":"OSV","descriptionSource":"OSV","declaredSeverity":"MODERATE","description":"### Summary\n\n  AVideo stores category descriptions from user input and later renders `category_description` as raw HTML in the Gallery view. A user who can create or edit\ncategories can store JavaScript in a category description, which executes when another user views the affected Gallery/category page.\n\n  This is a stored XSS in the category `description` field, separate from previously fixed XSS issues in video titles or comments.\n\n  ### Details\n\n  Source:\n\n  `objects/categoryAddNew.json.php`\n\n  ```php\n  $objCat->setDescription($_POST['description']);\n\n  Storage setter:\n\n  objects/category.php\n\n  public function setDescription($description)\n  {\n      $this->description = $description;\n  }\n```\n  Sink:\n\n  `plugin/Gallery/view/mainAreaCategory.php`\n```\n  <div id=\"categoryDescription<?php echo $duid; ?>\" style=\"display: none;\"><?php echo $videos[0]['category_description']; ?></div>\n```\n  The value is rendered without `htmlspecialchars()`, `htmlentities()`, `HTMLPurifier`, or equivalent output encoding.\n\n  ### PoC\n\n  Prerequisites:\n\n  - AVideo current master / v29.0\n  - User account with permission to create or edit categories\n  - Gallery plugin/view enabled\n  - At least one video assigned to the affected category\n\n  Steps:\n\n  1. Log in as a user who can create or edit categories.\n  2. Create or edit a category.\n  3. Set the category description to:\n```\n  <img src=x onerror=alert(document.domain)>\n```\n  4. Save the category.\n  5. Assign at least one video to that category.\n  6. Open the Gallery/category page that renders the category section.\n  7. The payload is inserted into the page as raw HTML and JavaScript executes.\n\n  ### Impact\n\n  An attacker with category edit permission can execute JavaScript in the browser of users or administrators who view the affected Gallery/category page. This can\n  be used to perform actions as the victim, steal same-origin data accessible to JavaScript, or abuse administrative UI actions if an administrator views the\n  malicious category.\n\n### Recommended fix\n\n- Sanitize category descriptions on input with the same HTML policy used for video descriptions, or store plain text only.\n- Encode on output:\n\n```php\necho htmlspecialchars($videos[0]['category_description'], ENT_QUOTES, 'UTF-8');\n```\n\n- If limited HTML is intended, run the description through HTMLPurifier before storage or before render.\n- Add regression tests for category description rendering in Gallery views.","severity":"medium","score":5.4,"published":"2026-06-04T18:46:31.000Z","modified":"2026-09-10T03:51:08.419Z","withdrawn":false,"knownExploited":false,"affected":[{"ecosystem":"Packagist","name":"WWBN/AVideo","sources":[{"name":"OSV · GHSA-c8h8-vq34-9fw2","url":"https://osv.dev/vulnerability/GHSA-c8h8-vq34-9fw2"}],"ranges":[{"events":[{"introduced":"0"},{"last_affected":"29.0"}],"type":"ECOSYSTEM"}],"versions":[],"fixed":[]}],"sourceAffected":[],"references":["https://github.com/WWBN/AVideo/security/advisories/GHSA-c8h8-vq34-9fw2","https://nvd.nist.gov/vuln/detail/CVE-2026-47694","https://github.com/WWBN/AVideo/commit/6a6ff1f5bff1904f91f612db9f0da083295392b1","https://github.com/WWBN/AVideo"],"sources":[{"name":"OSV","id":"GHSA-c8h8-vq34-9fw2","modified":"2026-09-10T03:51:08.419797686Z","url":"https://osv.dev/vulnerability/GHSA-c8h8-vq34-9fw2"}],"assessments":[{"source":"OSV","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","score":5.4}],"products":[],"remediation":[],"kev":{"status":"not-listed","checkedAt":"2026-10-28T21:10:33.929Z"},"coverage":[{"source":"NVD","status":"not-checked"},{"source":"GHSA","status":"not-checked"},{"source":"EUVD","status":"not-checked"},{"source":"EPSS","status":"not-checked"}],"evidence":[]}