CVE-2026-54458
KrytyczneCVSS 9.6Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 22 - wyżej niż 22% wszystkich znanych CVE
Streszczenie
WWBN AVideo przed wersją 29.0 zawiera podatność na trwałe DOM Cross-Site Scripting w pluginie YPTSocket. Niezautoryzowany atakujący może zdalnie wykonać dowolny kod JavaScript w kontekście administratora przeglądającego panel debugowania online użytkowników.
Ocena ryzyka
Atakujący może przejąć sesję administratora, odczytać nie-HttpOnly ciasteczka i token CSRF, wykonywać żądania do endpointów administracyjnych oraz przejąć pełną kontrolę nad platformą AVideo.
Rekomendacja
Natychmiast zaktualizuj AVideo do wersji 29.0 lub nowszej, która zawiera poprawkę zabezpieczającą. Jeśli aktualizacja nie jest możliwa, tymczasowo wyłącz plugin YPTSocket.
Inne podatności w AVideo
Zobacz wszystkie- CVE-2026-91967Średnie
AVideo w wersji do 29.0 zawiera podatność typu blind SSRF w funkcji getHeaderContentTypeFromURL, która wykonuje wywołania get_headers() chronione jedynie walidacją formatu. Uwierzytelnieni użytkownicy z uprawnieniem canUpload mogą zapisać wybrane przez atakującego adresy URL jako linki do filmów, co powoduje wykonanie podatnej funkcji przy każdym renderowaniu strony odtwarzania wideo w celu sondowania wewnętrznych hostów.
- CVE-2026-91966Średnie
AVideo w wersji do 29.0 zawiera nieuwierzytelnioną podatność typu SSRF w funkcji check_site_availability, która akceptuje nagłówki HTTP Host kontrolowane przez atakującego. Atakujący mogą wysyłać żądania do submitIndex.php lub ajax.php z dowolnymi nagłówkami Host, aby sondować wewnętrzne hosty i porty sieciowe, podążając za przekierowaniami bez uwierzytelnienia.
- CVE-2026-89255Wysokie
AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 zawiera podatność stored cross-site scripting w pluginie LoginControl, który nie koduje w HTML kluczy publicznych PGP wyświetlanych w elemencie textarea. Uwierzytelniony atakujący może wstrzyknąć złośliwy JavaScript, przesyłając spreparowany klucz publiczny, który wykonuje się w sesji administratora podczas przeglądania zakładki profilu użytkownika.
- CVE-2026-89253Wysokie
WWBN AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 zawiera podatność stored cross-site scripting w polu profilu użytkownika 'donationLink'. Funkcja User::setDonationLink() przechowuje wartość, a save() waliduje ją tylko przez filter_var(..., FILTER_VALIDATE_URL), co akceptuje ciągi takie jak http://evil.example/"onmouseover=alert(document.domain)//, podczas gdy getDonationLink() stosuje jedynie strip_tags() i nie koduje cudzysłowów. Uwierzytelniony użytkownik aktualizujący własny profil może przerwać atrybut href i wstrzyknąć obsługę zdarzeń wykonującą JavaScript w przeglądarce każdego odwiedzającego, w tym administratora.
- CVE-2026-89250Wysokie
WWBN AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 zawiera nieuwierzytelnioną podatność odczytu plików w endpointcie getRecordedFile.php, który strumieniuje nagrane pliki FLV z katalogu tymczasowego. Atakujący mogą wywołać endpoint ze znanym lub odgadniętym kluczem strumienia, aby pobrać nagrane pliki wideo na żywo bez uwierzytelnienia i kontroli autoryzacji.
- CVE-2026-89248Średnie
AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 nie sprawdza uwierzytelnienia ani autoryzacji w pliku plugin/WebRTC/status.json.php. Gdy wtyczka WebRTC jest obecna, każdy nieuwierzytelniony użytkownik może uzyskać JSON zawierający ścieżkę do binarki WebRTC2RTMP, port, status pliku, zawartość logów oraz informację o osiągalności portu.
- CVE-2026-89245Średnie
WWBN AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 zawiera podatność cross-site request forgery w pliku playlistRemove.php, która pozwala atakującym usuwać playlisty poprzez pominięcie kontroli CSRF. Atakujący może stworzyć złośliwy formularz wysyłający POST do playlistRemove.php.
- CVE-2026-89240Średnie
WWBN AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 zawiera podatność reflected cross-site scripting w pliku plugin/Live/confirmLivePassword.php. Parametr GET u jest wstawiany bez kodowania do atrybutu src znacznika img, umożliwiając wstrzyknięcie dodatkowego znacznika z procedurą onerror.
- CVE-2026-89148Średnie
AVideo (do commita c3edcc274c389816d434acadac07ee78eaf330c1) zawiera podatność typu open redirect w pliku objects/playlistSort.php. Ponieważ endpoint nie jest skryptem *.json.php, automatyczna ochrona CSRF (autoCSRFGuard()/forbidIfIsUntrustedRequest()) nie jest uruchamiana, a gdy żądanie zawiera parametr sort, skrypt wysyła nagłówek Location ustawiony na niezwalidowaną wartość $_SERVER['HTTP_REFERER'] bez wywołania isSafeRedirectURL(). Zdalny, nieuwierzytelniony atakujący może nakłonić zalogowanego użytkownika mającego uprawnienia do zarządzania docelową playlistą do wysłania cross-origin POST ze spreparowanym Refererem, powodując zmianę kolejności playlisty ofiary i przekierowanie przeglądarki ofiary z zaufanego adresu AVideo na stronę kontrolowaną przez atakującego w celu phishingu. Brak dostępnej wersji z poprawką.
- CVE-2026-88875Średnie
AVideo do rewizji c3edcc274c389816d434acadac07ee78eaf330c1 (master, 2026-08-23) niekompletnie oczyszcza wrażliwe pola użytkownika w odpowiedzi APIName=video. Wiersze wideo zawierają kolumny dołączone z rekordu właściciela, a API::get_api_video() wywołuje removeSensitiveUserFields() tylko gdy wywołujący nie jest uwierzytelniony i nie używa ważnego sekretu API; nigdy nie porównuje User::getId() z users_id wiersza. W rezultacie każde konto o niskich uprawnieniach może zażądać wideo innego użytkownika i otrzymać jego adres e-mail, nazwę konta (user) oraz flagi isAdmin, canUpload i canStream.
Oryginalny opis (angielski, źródło NVD)
WWBN AVideo is an open source video platform. Versions prior to 29.0 contain a stored DOM Cross-Site Scripting vulnerability in the YPTSocket plugin. Any unauthenticated remote attacker can execute arbitrary JavaScript in the authenticated origin of every administrator currently viewing a page that renders the YPTSocket online-users debug panel. plugin/YPTSocket/getWebSocket.json.php issues a signed WebSocket token to any anonymous caller, and MessageSQLiteV2::onOpen at plugin/YPTSocket/MessageSQLiteV2.php lines 91 and 110 reads the attacker-controlled webSocketSelfURI and page_title query parameters from the WebSocket connection URL with no validation. Both values persist into the in-memory SQLite connections table and broadcast inside the users_id_online array sent to every connected client; on the client, plugin/YPTSocket/script.js::updateSocketUserCard interpolates the broadcast page_title into an HTML template literal that is passed to jQuery $.append(html), which parses attacker bytes into live DOM nodes including <img> with inline event handlers. Successful attackers can can read non-HttpOnly cookies and the CSRF token rendered into the admin dashboard, issue authenticated requests to any admin-only endpoint, exfiltrate the admin dashboard DOM, and chain into any admin-context mutation. When the victim is an AVideo administrator, the attacker turns a single anonymous WebSocket connection into full administrative takeover via the admin's own session. This issue has been patched by https://github.com/WWBN/AVideo/commit/8be71e53ccbe9b84b30870db386fb4d2b11e1c16.

