🇰🇷 한글 설명
WWBN AVideo 26.0 이하 버전의 categories.json.php 엔드포인트는 사용자 그룹 기반 접근 제어를 제대로 적용하지 않습니다. 기본 요청에서는 그룹 필터링이 생략되어 제한된 카테고리까지 노출되며, ?user= 파라미터 사용 시 타입 혼동 버그로 인해 현재 사용자가 아닌 관리자(user_id=1)의 그룹 기준으로 필터링됩니다.
💡 쉬운 설명
권한이 없는 사용자도 일부 제한된 비디오 카테고리 목록을 볼 수 있는 문제입니다. 이는 숨겨져 있어야 할 카테고리 정보가 외부에 노출될 수 있음을 의미합니다.
🇺🇸 원문 (English)
WWBN AVideo is an open source video platform. In versions up to and including 26.0, the `categories.json.php` endpoint, which serves the category listing API, fails to enforce user group-based access controls on categories. In the default request path (no `?user=` parameter), user group filtering is entirely skipped, exposing all non-private categories including those restricted to specific user groups. When the `?user=` parameter is supplied, a type confusion bug causes the filter to use the admin user's (user_id=1) group memberships instead of the current user's, rendering the filter ineffective. Commit 6e8a673eed07be5628d0b60fbfabd171f3ce74c9 contains a fix.
📍 영향받는 시스템
WWBN AVideo 26.0 이하 버전 (커밋 6e8a673eed07be5628d0b60fbfabd171f3ce74c9 이전)
⚔️ 공격 벡터
인증되지 않았거나 권한이 낮은 사용자가 categories.json.php 엔드포인트를 직접 호출(?user= 파라미터 포함 여부와 무관)하여 제한된 카테고리 목록을 조회
🛡️ 대응 방법
AVideo를 커밋 6e8a673eed07be5628d0b60fbfabd171f3ce74c9 이후 버전으로 업데이트
🔧 검증 코드
출력된 코드에서 사용자 그룹 필터링 로직이 존재하고 ?user= 파라미터가 현재 사용자 기준으로 처리되면 패치된 것이며, 필터링이 없거나 관리자 ID(user_id=1)를 고정 참조하면 취약한 상태입니다.
grep -n 'user' $(find / -name categories.json.php 2>/dev/null | head -1) 2>/dev/null | head -20