🇰🇷 한글 설명
WWBN AVideo 29.0 이하 버전의 YouTubeAPI 플러그인에서 YouTube Data API의 snippet.title 값이 HTML 인코딩 없이 홈페이지 갤러리에 출력되어 저장형 XSS가 발생합니다. 공격자는 YouTube 영상 제목에 악성 스크립트를 삽입할 수 있으며, 관리자가 이 페이지를 열면 쿠키 기반 인증으로 관리자 권한 작업이 수행될 수 있습니다. 캐시 기간(기본 3600초) 동안 페이로드가 유지됩니다.
💡 쉬운 설명
유튜브 영상 제목에 몰래 악성 코드를 넣으면, 그 영상이 AVideo 홈페이지에 표시될 때 방문자의 브라우저에서 코드가 실행됩니다. 관리자가 이를 보면 관리자 계정이 탈취될 수 있습니다.
🇺🇸 원문 (English)
WWBN AVideo is an open source video platform. Versions 29.0 and below contain a stored Cross-Site Scripting vulnerability in the YouTubeAPI plugin. The plugin renders the snippet.title field returned by the YouTube Data API into the homepage gallery markup with no HTML encoding. The title is set by the YouTube video uploader (anyone in the world) and is treated by AVideo as trusted content. A YouTube uploader who controls a video matching the operator's configured query injects HTML into the AVideo homepage by setting their video's title to a JavaScript-bearing string; the payload then executes in the browser of every visitor who loads any page that renders the gallery. When the visitor is an AVideo administrator, the injected JavaScript performs any admin action (create user, promote to admin, change configuration, install plugin) that uses cookie-based authentication without an additional CSRF token, escalating the bug into full administrative takeover. The payload persists for the duration of cacheTimeout (default 3600 seconds) after the malicious title is set on YouTube and survives YouTube removing the hostile video for the same window. This issue has been addressed by commit https://github.com/WWBN/AVideo/commit/7292129eaee5f609beae103b5cb387d55f17b877.
📍 영향받는 시스템
WWBN AVideo 29.0 이하 (YouTubeAPI 플러그인 사용 시)
⚔️ 공격 벡터
YouTube 영상 제목에 JavaScript를 삽입 → AVideo 홈페이지 갤러리 렌더링 시 실행 → 관리자 세션으로 권한 상승
🛡️ 대응 방법
커밋 7292129eaee5f609beae103b5cb387d55f17b877 적용 또는 AVideo 29.0 초과 버전으로 업그레이드하고, 캐시를 비운 뒤 관리자 계정을 점검
🔧 검증 코드
출력된 코드에서 snippet.title 값이 htmlspecialchars 등으로 인코딩되어 출력되면 수정된 것이고, 인코딩 없이 그대로 출력되면 취약한 상태입니다.
grep -rn 'snippet' /var/www/html/plugin/YouTubeAPI/ 2>/dev/null | head -5