🇰🇷 한글 설명
WWBN AVideo 버전 29.0 이하에서 isSSRFSafeURL()로 초기 URL을 검증하지만, file_get_contents()의 자동 리다이렉트 팔로우로 인해 SSRF 보호를 우회할 수 있습니다. 공격자는 초기 URL은 안전하게 보이되 302 리다이렉트로 내부 메타데이터 서비스(169.254.169.254)로 유도하여 AWS 접근키 등 민감 정보를 탈취할 수 있습니다.
💡 쉬운 설명
웹사이트가 URL 안전성을 검사하지만, 검사 후 자동으로 다른 주소로 이동하는 기능이 있을 때 악용될 수 있습니다. 공격자는 검사는 통과하는 URL을 제공한 후 서버의 민감한 정보로 리다이렉트시켜 접근할 수 있습니다.
🇺🇸 원문 (English)
WWBN AVideo is an open source video platform. In versions up to and including 29.0, two endpoints (plugin/AI/receiveAsync.json.php and objects/EpgParser.php) in AVideo call isSSRFSafeURL() to validate user-supplied URLs, then fetch them using bare file_get_contents() without disabling PHP's automatic redirect following. An attacker can supply a URL pointing to a server they control that returns a 302 redirect to an internal/cloud-metadata address (e.g., http://169.254.169.254/latest/meta-data/). Since isSSRFSafeURL() only validates the initial URL, the redirect target bypasses all SSRF protections. Commit 603e7bf77a835584387327e35560262feb075db3 contains an updated fix.
📍 영향받는 시스템
WWBN AVideo 버전 29.0 이하 (plugin/AI/receiveAsync.json.php, objects/EpgParser.php)
⚔️ 공격 벡터
302 리다이렉트를 반환하는 URL로 isSSRFSafeURL() 검증 우회 후 내부 IP 169.254.169.254 메타데이터 서비스 접근
🛡️ 대응 방법
최신 버전으로 업그레이드 또는 커밋 603e7bf77a835584387327e35560262feb075db3 수정사항 적용 (file_get_contents() 리다이렉트 비활성화 및 리다이렉트 후 재검증)
🔧 검증 코드
명령어가 파일 경로를 반환하면 시스템에 AVideo가 설치되어 있으며, 해당 버전을 확인하려면 설치 디렉토리의 버전 파일을 검사해야 합니다.
find / -path '*plugin/AI/receiveAsync.json.php' 2>/dev/null | head -1