W platformie WWBN AVideo (wersja 29.0 i wcześniejsze) plugin YPTSocket pozwala nieuwierzytelnionemu atakującemu na wykonanie dowolnego kodu JavaScript w przeglądarce każdego podłączonego użytkownika, w tym administratorów. Podatność umożliwia masowe przejęcie kont i kradzież sesji bez konieczności posiadania jakichkolwiek uprawnień.
▸ Pokaż oryginał (EN)
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.
Serwer WebSocket pluginu YPTSocket przekazuje ciała wiadomości JSON dostarczone przez atakującego do wszystkich podłączonych klientów bez żadnej sanityzacji pól `msg` i `callback`. Po stronie klienta skrypt `plugin/YPTSocket/script.js` przekazuje te pola bezpośrednio do dwóch wywołań `eval()` (linie 568 i 95), co powoduje wykonanie dostarczonego kodu JavaScript w kontekście przeglądarki odbiorcy. Tokeny dostępu są wydawane anonimowym użytkownikom i nie są ponownie weryfikowane poza ich odszyfrowaniem, co oznacza, że atakujący bez żadnych poświadczeń może rozgłosić złośliwy payload do wszystkich aktywnych sesji.
Atakujący może przejąć konta wszystkich aktualnie zalogowanych użytkowników (w tym administratorów), wykraść tokeny sesji oraz wykonywać uprzywilejowane operacje w ich imieniu — prowadząc do pełnego kompromitacji platformy.
Należy zastosować fix zawarty w commicie c08694bf6264eb4decceb78c711baee2609b4efd dostępnym w repozytorium GitHub projektu WWBN/AVideo. Do czasu aktualizacji zaleca się rozważenie wyłączenia pluginu YPTSocket lub ograniczenia dostępu do serwera WebSocket na poziomie firewall.
WWBN AVideo w wersji 29.0 oraz wcześniejszych
Fix wskazany bezpośrednio w opisie jako konkretny commit: c08694bf6264eb4decceb78c711baee2609b4efd. Podatność sklasyfikowana jako CWE-94 (Code Injection) z wektorem CVSS 10.0 — maksymalny możliwy wynik.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HWwbn Avideo
APPWwbn≤ 29.0
Powiązane podatności
WWBN AVideo — niekompletna naprawa command injection w test.php
SQL Injection w WWBN AVideo — mechanizm uwierzytelniania RTMP
WWBN AVideo: hasła do filmów przechowywane w bazie jako plaintext
SSRF w WWBN AVideo — brak walidacji parametru URL w saveDVR.json.php
RCE bez uwierzytelnienia w WWBN AVideo — łańcuch podatności w pluginie CloneSite