🇰🇷 한글 설명
WWBN AVideo 29.0 이하 버전의 YPTSocket 플러그인 WebSocket 서버는 공격자가 보낸 JSON 메시지의 msg 및 callback 필드를 검증 없이 연결된 모든 클라이언트에 전달합니다. 클라이언트 측 script.js에서 이 값들이 eval()에 직접 전달되어, 인증되지 않은 공격자가 모든 접속자(관리자 포함)의 출처에서 임의의 자바스크립트를 실행할 수 있습니다. 커밋 c08694bf6264eb4decceb78c711baee2609b4efd에 수정 사항이 포함되어 있습니다.
💡 쉬운 설명
로그인하지 않은 공격자가 사이트에 접속한 모든 사람에게 악성 코드를 보낼 수 있는 취약점입니다. 이를 통해 관리자를 포함한 사용자의 계정과 세션이 탈취될 수 있습니다.
🇺🇸 원문 (English)
WWBN AVideo is an open source video platform. In versions 29.0 and prior, the YPTSocket plugin's WebSocket server relays attacker-supplied JSON message bodies to every connected client without sanitizing the `msg` or `callback` fields. On the client side, `plugin/YPTSocket/script.js` contains two `eval()` sinks fed directly by those relayed fields (`json.msg.autoEvalCodeOnHTML` at line 568 and `json.callback` at line 95). Because tokens are minted for anonymous visitors and never revalidated beyond decryption, an unauthenticated attacker can broadcast arbitrary JavaScript that executes in the origin of every currently-connected user (including administrators), resulting in universal account takeover, session theft, and privileged action execution. Commit c08694bf6264eb4decceb78c711baee2609b4efd contains a fix.
📍 영향받는 시스템
WWBN AVideo 29.0 이하 버전 (YPTSocket 플러그인 포함)
⚔️ 공격 벡터
익명으로 WebSocket 서버에 접속해 조작된 JSON 메시지를 브로드캐스트하면 클라이언트의 eval()이 임의 JavaScript를 실행함
🛡️ 대응 방법
커밋 c08694bf6264eb4decceb78c711baee2609b4efd이 반영된 버전으로 업데이트하고, 그 전까지 YPTSocket 플러그인을 비활성화하며 세션을 무효화하세요
🔧 검증 코드
결과에 568행의 autoEvalCodeOnHTML 또는 95행의 json.callback 관련 eval() 호출이 여전히 존재하면 취약하며, 결과가 없거나 해당 호출이 제거/검증되었다면 패치된 것입니다.
grep -n 'eval(' plugin/YPTSocket/script.js 2>/dev/null