CVE-2026-54492
Full vulnerability record from the local CVENow database.
Description
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 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.
View original CVE JSON
{
"id": "CVE-2026-54492",
"sourceIdentifier": "[email protected]",
"published": "2026-08-19T21:16:57.600",
"lastModified": "2026-10-26T10:10:00.140",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "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 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."
},
{
"lang": "es",
"value": "Koel es una solución de transmisión de música gratuita y de código abierto. Antes de la 9.7.0, la ruta createPodcastChannel.view compatible con Subsonic acepta una URL privada de un usuario autenticado porque app/Http/Requests/Subsonic/CreatePodcastChannelRequest.php no aplica la validación SafeUrl utilizada por la API de podcast regular. app/Http/Controllers/Subsonic/CreatePodcastChannelController.php pasa la URL a app/Services/Podcast/PodcastService.php, donde PodcastService::addPodcast() y createParser() invocan Poddle::fromUrl() durante la creación del canal, causando solicitudes inmediatas del lado del servidor a destinos HTTP de loopback, puente Docker o RFC1918. El impacto confirmado es la ejecución ciega de solicitudes internas porque la exfiltración genérica del cuerpo de la respuesta no fue demostrada a través de esta ruta. Este problema está solucionado en la versión 9.7.0."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "koel",
"product": "koel",
"versions": [
{
"version": "< 9.7.0",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N",
"baseScore": 4.3,
"baseSeverity": "MEDIUM",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "LOW",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "LOW",
"integrityImpact": "NONE",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 2.8,
"impactScore": 1.4
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-08-20T13:41:13.920879Z",
"id": "CVE-2026-54492",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-918"
}
]
}
],
"references": [
{
"url": "https://github.com/koel/koel/commit/1331f335342b405e60ffabdd60f1f398508f996f",
"source": "[email protected]"
},
{
"url": "https://github.com/koel/koel/pull/2545",
"source": "[email protected]"
},
{
"url": "https://github.com/koel/koel/releases/tag/v9.7.0",
"source": "[email protected]"
},
{
"url": "https://github.com/koel/koel/security/advisories/GHSA-w79m-f3jx-779v",
"source": "[email protected]"
},
{
"url": "https://github.com/koel/koel/security/advisories/GHSA-w79m-f3jx-779v",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
]
}