{"id":"CVE-2026-54492","title":"Koel is a free, open-source music streaming solution","summary":"Koel is a free, open-source music streaming solution. Prior to 9.7.0, the Subsonic-compatible createPodcastChannel.view route accepts an authenticated user's private URL because app/Http/Requests/Subsonic/CreatePodcastChannelRequest.php …","severity":"medium","cvss":4.3,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","cwe":["CWE-918"],"vendor":"phanan","product":"phanan/koel","affected":["phanan/koel <= 9.6.0"],"patched":["phanan/koel 9.7.0"],"published":"2026-08-19","updated":"2026-09-09","sourceUpdated":"2026-09-09T21:15:59.613","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-54492","references":[{"url":"https://github.com/koel/koel/commit/1331f335342b405e60ffabdd60f1f398508f996f","label":"security-advisories@github.com"},{"url":"https://github.com/koel/koel/pull/2545","label":"security-advisories@github.com"},{"url":"https://github.com/koel/koel/releases/tag/v9.7.0","label":"security-advisories@github.com"},{"url":"https://github.com/koel/koel/security/advisories/GHSA-w79m-f3jx-779v","label":"security-advisories@github.com"},{"url":"https://github.com/koel/koel/security/advisories/GHSA-w79m-f3jx-779v","label":"134c704f-9b21-4f2e-91b3-4a467353bcc0"},{"url":"https://github.com/advisories/GHSA-w79m-f3jx-779v"}],"tags":["nvd","ghsa","composer"],"epss":0.00321,"epssPercentile":0.25342,"aliases":["GHSA-w79m-f3jx-779v"],"ecosystem":"composer","ingestedAt":"2026-07-15T17:44:34.570Z","slug":"CVE-2026-54492","body":"## Overview\n\nKoel is a free, open-source music streaming solution. Prior to 9.7.0, the Subsonic-compatible createPodcastChannel.view route accepts an authenticated user's private URL because app/Http/Requests/Subsonic/CreatePodcastChannelRequest.php does not apply the SafeUrl validation used by the regular podcast API. app/Http/Controllers/Subsonic/CreatePodcastChannelController.php passes the URL to app/Services/Podcast/PodcastService.php, where PodcastService::addPodcast() and createParser() invoke Poddle::fromUrl() during channel creation, causing immediate server-side requests to loopback, Docker bridge, or RFC1918 HTTP destinations. The confirmed impact is blind internal request execution because generic response-body exfiltration was not demonstrated through this route. This issue is fixed in version 9.7.0.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Package advisory (CVE-2026-54492)\n\nAffected packages:\n\n- `phanan/koel <= 9.6.0`\n\nPatched in:\n\n- `phanan/koel 9.7.0`\n\nSource: https://github.com/advisories/GHSA-w79m-f3jx-779v","depth":"sunlit","depthScore":24,"depthScoreParts":{"impact":23.7,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}