🇰🇷 한글 설명
Koel 음악 스트리밍 솔루션의 특정 버전에서 NAT64 및 6to4 주소를 공인 IP로 잘못 인식하는 취약점이 발견되었습니다. 인증된 사용자가 팟캐스트 RSS 피드의 URL에 내부 네트워크 주소를 삽입하면, 서버가 이를 요청하여 내부 서비스나 클라우드 메타데이터를 탈취할 수 있습니다.
💡 쉬운 설명
음악 앱이 특정 주소를 외부 주소로 착각하여, 공격자가 입력한 주소를 통해 서버 내부의 비밀 정보에 접근할 수 있는 문제입니다. 이를 통해 공격자는 서버가 관리하는 내부 네트워크의 데이터에 접근할 위험이 있습니다.
🇺🇸 원문 (English)
Koel is a free, open-source music streaming solution. Prior to 9.7.1, App\Helpers\Network::isPublicHost() uses filter_var() with FILTER_FLAG_NO_PRIV_RANGE and FILTER_FLAG_NO_RES_RANGE, which treats NAT64 64:ff9b::/96 and 6to4 2002::/16 wrappers of private, loopback, or link-local IPv4 addresses as public. An authenticated user can place such an address in a podcast RSS <enclosure url> and reach app/Values/Podcast/EpisodePlayable.php through EpisodePlayable::createForEpisode(), where isSafeUrl() accepts the target and Http::sink($file)->get($url) fetches it. On a host with NAT64 or 6to4 routing, Koel can request internal services or cloud metadata and return the response body to the user. This issue is fixed in version 9.7.1
📍 영향받는 시스템
Koel version prior to 9.7.1
⚔️ 공격 벡터
인증된 사용자가 팟캐스트 RSS <enclosure url>에 NAT64/6to4 주소를 삽입하여 서버 측 요청 위조(SSRF) 유도
🛡️ 대응 방법
Koel 버전을 9.7.1 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 정보가 9.7.1 미만인 경우 해당 취약점에 노출된 상태입니다.
composer show koel/koel | grep 'versions'