Description
Koel is a free, open-source music streaming solution. Prior to 9.7.1, outbound podcast and radio fetch paths perform a point-in-time App\Helpers\Network::isPublicHost() or isSafeUrl() check without pinning the validated address, and most paths lack redirect-hop validation and do not revalidate every redirect target. PhanAn\Poddle\Poddle::fromUrl(), PodcastService::getStreamableUrl(), PodcastService::isPodcastObsolete(), App\Rules\HasAudioContentType, and App\Rules\SafeUrl can therefore follow an attacker-controlled redirect to an internal address or connect after DNS rebinding changes a public resolution to a private one. These paths are reachable through podcast and radio APIs, including createPodcastChannel, createInternetRadioStation, refreshPodcasts, apiResource podcasts, and radio/stations, allowing an authenticated user to request internal services or cloud metadata and potentially receive parsed or streamed response content. This issue is fixed in version 9.7.1.
Published: 2026-08-19
Score: 7.1 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The flaw occurs in the outbound podcast and radio fetch paths of Koel prior to version 9.7.1. The application performs a one‑time host safety check but fails to re‑validate URLs after following redirects, allowing an attacker to craft a request that redirects to an internal address or exploits DNS rebinding attacks. Because the vulnerable functions return parsed or streamed response content, an authenticated user can retrieve data from internal services or cloud metadata, exposing sensitive internal information. This weakness is mapped to CWE‑918.

Affected Systems

All Koel installations running any release older than 9.7.1 that expose the podcast or radio APIs (createPodcastChannel, createInternetRadioStation, refreshPodcasts, apiResource podcasts, radio/stations) are affected. The issue is fixed in the 9.7.1 release, so newer versions are no longer vulnerable.

Risk and Exploitability

The CVSS score of 7.1 indicates medium‑to‑high severity. Exploitation requires an authenticated user with the ability to invoke the vulnerable API endpoints; therefore the attack surface is limited to those who can access the application. EPSS information is not available, and the vulnerability is not listed in the CISA KEV catalog. Nevertheless, the capacity to reach internal endpoints poses a significant confidentiality risk, especially for production deployments exposed to untrusted users.

Generated by OpenCVE AI on August 20, 2026 at 08:37 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Koel to version 9.7.1 or a later release that implements the missing host validation and redirect checking.
  • If an upgrade cannot be applied immediately, temporarily disable or restrict access to the podcast and radio fetch endpoints (createPodcastChannel, createInternetRadioStation, refreshPodcasts, apiResource podcasts, radio/stations) until the patch is deployed.
  • As an interim defense, enforce strict outbound request validation by rejecting any URL that resolves to a private IP range or that does not match allowed public domains, thereby mitigating DNS rebinding and redirect‑based SSRF.

Generated by OpenCVE AI on August 20, 2026 at 08:37 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-6qvr-wjmv-v8mm Koel: Incomplete fix for CVE-2026-47260 — systemic SSRF in podcast & radio fetch paths
History

Thu, 20 Aug 2026 01:00:00 +0000

Type Values Removed Values Added
First Time appeared Koel
Koel koel
Vendors & Products Koel
Koel koel

Wed, 19 Aug 2026 21:00:00 +0000

Type Values Removed Values Added
Description Koel is a free, open-source music streaming solution. Prior to 9.7.1, outbound podcast and radio fetch paths perform a point-in-time App\Helpers\Network::isPublicHost() or isSafeUrl() check without pinning the validated address, and most paths lack redirect-hop validation and do not revalidate every redirect target. PhanAn\Poddle\Poddle::fromUrl(), PodcastService::getStreamableUrl(), PodcastService::isPodcastObsolete(), App\Rules\HasAudioContentType, and App\Rules\SafeUrl can therefore follow an attacker-controlled redirect to an internal address or connect after DNS rebinding changes a public resolution to a private one. These paths are reachable through podcast and radio APIs, including createPodcastChannel, createInternetRadioStation, refreshPodcasts, apiResource podcasts, and radio/stations, allowing an authenticated user to request internal services or cloud metadata and potentially receive parsed or streamed response content. This issue is fixed in version 9.7.1.
Title Koel: Incomplete fix for CVE-2026-47260 — systemic SSRF in podcast & radio fetch paths
Weaknesses CWE-918
References
Metrics cvssV3_1

{'score': 7.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-19T20:48:12.951Z

Reserved: 2026-06-15T18:01:15.510Z

Link: CVE-2026-54491

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-19T21:16:57.453

Modified: 2026-08-19T21:16:57.453

Link: CVE-2026-54491

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-20T08:45:12Z

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)