This vulnerability is architecturally distinct from standard SSRF because it exploits the gap between validation and execution. Koel checks whether a URL resolves to a public IP at request time, then follows redirects — sometimes through multiple hops — without revalidating each destination. An attacker can register a domain that resolves publicly during validation, then shifts to a private IP (including cloud metadata endpoints at 169.254.169.254) after the check passes. This is DNS rebinding, and it requires attacker-controlled DNS infrastructure — a higher setup cost that explains the low EPSS score of 0.00241. However, that reasoning is backwards: the prerequisite makes exploitation marginally harder to set up, but it does not reduce impact once it succeeds.
What makes this fourth-generation SSRF rather than standard SSRF is the response-handling architecture. Koel's podcast and radio features don't just fetch internal data — they parse and stream response content back to the authenticated user. This means the attacker's harvest from cloud metadata services gets processed through Koel's own code before reaching the attacker. The victim's infrastructure becomes part of the attack chain, which dramatically lowers the exploitation barrier. Unlike previous SSRF generations where attackers needed their own extraction infrastructure, this generation uses the victim's parsing and streaming logic as an attack amplifier.
The blast radius is severe. In cloud-hosted deployments, this vulnerability collapses the trust boundary between the Koel application and the entire cloud provider. An authenticated user who triggers podcast refresh or radio station creation can receive processed credentials from the metadata endpoint, potentially unlocking storage buckets, databases, and lateral movement paths across the deployment. The EPSS score systematically undervalues this because it weights exploit probability without adequately accounting for high-impact, lower-likelihood events involving credential-handling infrastructure.
This flaw has appeared before in Apache HttpClient, Python's urllib, Node's fetch, and Rails ActiveResource — each patched in isolation while the pattern recurs. The institutional failure is that the developer community hasn't synthesized this genealogical knowledge into defensive defaults. Koel's fix addresses this instance, but the same vulnerability will appear elsewhere until URL-fetching libraries enforce revalidation across redirect chains as a baseline security model.
If you run Koel on cloud infrastructure, treat this as critical regardless of the EPSS score. Verify whether podcast or radio features are exposed to authenticated users, and prioritize patching to 9.7.1 or later.