| Advisory ID | github_osv/GHSA-f4f9-627c-jh33 |
| Aliases |
CVE-2026-39369
|
| Summary | WWBN AVideo's GIF poster fetch bypasses traversal scrubbing and exposes local files through public media URLs ## Summary `objects/aVideoEncoderReceiveImage.json.php` allowed an authenticated uploader to fetch attacker-controlled same-origin `/videos/...` URLs, bypass traversal scrubbing, and expose server-local files through the GIF poster storage path. The vulnerable GIF branch could be abused to read local files such as `/etc/passwd` or application source files and republish those bytes through a normal public GIF media URL. ## Details The vulnerable chain was: 1. `objects/aVideoEncoderReceiveImage.json.php` accepted attacker-controlled `downloadURL_gifimage` 2. traversal scrubbing used `str_replace('../', '', ...)`, which was bypassable with overlapping input such as `....//` 3. same-origin `/videos/...` URLs were accepted 4. `url_get_contents()` and `try_get_contents_from_local()` resolved the request into a local filesystem read 5. the fetched bytes were written into the GIF destination 6. invalid GIF cleanup used the wrong variable, so the non-image payload remained on disk This made the GIF poster path a local file disclosure primitive with public retrieval. ## Proof of concept 1. Log in as an uploader and create an owned video row through the normal encoder flow. 2. Send: ```text POST /objects/aVideoEncoderReceiveImage.json.php downloadURL_gifimage=https://localhost/videos/....//....//....//....//....//....//etc/passwd ``` 3. Query: ```text GET /objects/videos.json.php?showAll=1 ``` 4. Recover the generated GIF URL from `videosURL.gif.url`. 5. Download that GIF URL. 6. Observe that the body matches the target local file, such as `/etc/passwd`, byte-for-byte. ## Impact An authenticated uploader can read server-local files and republish them through a public GIF media URL by supplying a crafted same-origin `/videos/...` path to `downloadURL_gifimage`. Because traversal scrubbing was bypassable and the fetched bytes were written to the GIF destination without effective invalid-image cleanup, successful exploitation allows disclosure of files such as `/etc/passwd`, readable application source code, or deployment-specific configuration accessible to the application. ## Recommended fix - Reject any remote image URL whose decoded path contains traversal markers - Do not allow attacker-controlled same-origin `/videos/...` fetches to resolve into local file reads - Constrain any local shortcut path handling with `realpath()` and strict base-directory allowlists - Validate GIF content before saving it into public media storage - Ensure invalid-image cleanup checks the correct destination path |
| Status | Published |
| Exploitability | 0.5 |
| Weighted Severity | 6.8 |
| Risk | 3.4 |
| Affected and Fixed Packages | Package Details |
| Introduced and Fixed Package Commit Patches | Package Commit Patches Details |
| System | Score | Found at |
|---|---|---|
| cvssv3.1 | 7.6 | https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-f4f9-627c-jh33/GHSA-f4f9-627c-jh33.json |
| generic_textual | HIGH |
| Reference id | Reference type | URL |
|---|---|---|
| https://github.com/WWBN/AVideo | ||
| https://github.com/WWBN/AVideo/security/advisories/GHSA-f4f9-627c-jh33 | ||
| 2375eb5e0a6d3cbcfb05377657d0820a7d470b1d | Other | https://github.com/WWBN/AVideo/commit/2375eb5e0a6d3cbcfb05377657d0820a7d470b1d |
| CVE-2026-39369 | https://nvd.nist.gov/vuln/detail/CVE-2026-39369 |
No EPSS data available for this advisory.
| Patch URL | |
|---|---|
| There are no known patches. | |
| Attack Vector (AV) | Attack Complexity (AC) | Privileges Required (PR) | User Interaction (UI) | Scope (S) | Confidentiality Impact (C) | Integrity Impact (I) | Availability Impact (A) |
|---|---|---|---|---|---|---|---|
network adjacent_network local physical |
low high |
none low high |
none required |
unchanged changed |
high low none |
high low none |
high low none |
Vector: SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-08T14:36:32Z/
Decision: Track
Source URL: https://github.com/cisagov/vulnrichment/blob/develop/2026/39xxx/CVE-2026-39369.json
Source Advisory: vulnrichment/CVE-2026-39369
[{'Exploitation': 'poc'},
{'Automatable': 'no'},
{'Technical Impact': 'partial'},
{'Mission Prevalence': 'minimal'},
{'Public Well-being Impact': 'material'},
{'Mission & Well-being': 'medium'}]