CVE-2026-88875
ŚrednieCVSS 4.3Streszczenie
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.
Ocena ryzyka
Naruszenie poufności danych — ujawnienie adresów e-mail, nazw kont i flag uprawnień innych użytkowników. Może to ułatwić dalsze ataki, takie jak phishing lub eskalacja uprawnień.
Rekomendacja
Brak dostępnej poprawki w momencie publikacji — należy ograniczyć dostęp do API wideo dla użytkowników o niskich uprawnieniach lub wdrożyć własną walidację porównującą identyfikator wywołującego z właścicielem wideo. Monitorować wydania AVideo w oczekiwaniu na oficjalny patch.
Inne podatności w AVideo
Zobacz wszystkie- CVE-2026-88876Wysokie
AVideo do rewizji c3edcc274c389816d434acadac07ee78eaf330c1 zawiera podatność braku autoryzacji w pliku plugin/PlayerSkins/seo.php. Nieuwierzytelniony atakujący może uzyskać dostęp do źródeł wideo chronionych hasłem, wywołując getSources() bez weryfikacji hasła i pobierając bezpośredni adres URL pliku MP4.
- CVE-2026-88874Wysokie
AVideo do rewizji c3edcc274c389816d434acadac07ee78eaf330c1 nie wymusza sprawdzenia hasła transmisji na żywo w endpoincie statystyk ani w źródle HLS. Funkcja Live::_getStats() zwraca nieuwierzytelnionym wywołującym klucz strumienia RTMP, flagę isPasswordProtected oraz adres URL HLS, a dołączona konfiguracja NGINX udostępnia playlistę .m3u8, klucz AES-128 i segmenty transport-stream bez uwierzytelniania.
- CVE-2026-88873Wysokie
WWBN AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 zawiera podatność cross-site request forgery w pliku view/logArchive.json.php. Nieuwierzytelnieni atakujący mogą archiwizować logi aplikacji, wysyłając żądania GET bez weryfikacji tokenu CSRF, kopiując wrażliwe logi do publicznie dostępnego pliku ZIP i obcinając bieżący log.
- CVE-2026-88872Wysokie
AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 zawiera podatność cross-site request forgery w endpoincie setPassword.json.php. Nieuwierzytelnieni atakujący mogą modyfikować hasło kanału dowolnego użytkownika, wysyłając żądanie GET bez weryfikacji tokenu CSRF.
- CVE-2026-88871Średnie
WWBN AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 (master, 2026-08-23) zawiera podatność CSRF w punkcie końcowym plugin/CustomizeUser/setSubscribers.json.php wtyczki CustomizeUser. Skrypt odczytuje users_id i ExtraSubscribers z $_REQUEST i wywołuje User::setExtraSubscribers() bez wymogu żądania POST ani ważnego tokenu CSRF; autoCSRFGuard() jest stosowany tylko do żądań POST do *.json.php, a mutacja nie przechodzi przez ObjectYPT::save()/isUntrustedRequest(), więc cross-origin GET kończy się sukcesem. Nieuwierzytelniony zdalny atakujący może nakłonić zalogowanego administratora do wczytania spreparowanej strony (np. tagu <img> wskazującego na endpoint) i sfałszować liczbę ExtraSubscribers wyświetlaną na kanale dowolnego użytkownika.
- CVE-2026-88870Wysokie
WWBN AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 zawiera podatność cross-site request forgery w endpointach klucza PGP wtyczki LoginControl, które nie weryfikują tokenu CSRF. Atakujący mogą tworzyć złośliwe strony z tagami obrazów wskazującymi na savePublicKey.json.php, aby zastąpić klucz publiczny PGP 2FA zalogowanej ofiary.
- CVE-2026-88868Wysokie
AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 zawiera podatność stored cross-site scripting we wtyczce LiveLinks, gdzie pola title i description są przechowywane bez sanityzacji. Użytkownik z uprawnieniem canStream może wstrzyknąć złośliwe skrypty, które wykonują się w przeglądarce każdego odwiedzającego stronę live-link, w tym administratorów.
- CVE-2026-88867Wysokie
WWBN AVideo w wersjach do commita c3edcc274c389816d434acadac07ee78eaf330c1 zawiera podatność stored cross-site scripting. Plik objects/categoryAddNew.json.php przekazuje parametry POST name i iconClass do Category::setName() i Category::setIconClass(), które przechowują wartości bez sanityzacji, a następnie są one odzwierciedlane jako HTML w widokach i kartach galerii.
- CVE-2026-88866Wysokie
WWBN AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 zawiera podatność stored cross-site scripting we wtyczce LoginControl, która nie koduje nagłówka User-Agent przed zapisaniem go w historii logowań. Atakujący z dowolnym ważnym kontem może wstrzyknąć złośliwe skrypty w nagłówku User-Agent, które wykonują się w przeglądarce administratora podczas przeglądania strony historii logowań.
- CVE-2026-88865Wysokie
AVideo do commita c3edcc274c389816d434acadac07ee78eaf330c1 nie weryfikuje własności restreamu w pliku getRestream.json.php, co pozwala uwierzytelnionym użytkownikom z uprawnieniem canStream generować tokeny dla dowolnych restreamów. Atakujący mogą wymienić token, aby pobrać klucze strumieni innych użytkowników z getLiveKey.json.php i publikować do ich celów YouTube, Twitch lub RTMP.
Oryginalny opis (angielski, źródło NVD)
AVideo through revision c3edcc274c389816d434acadac07ee78eaf330c1 (master, 2026-08-23) incompletely sanitizes sensitive user fields in the APIName=video response. Video rows include columns joined from the video owner's user record, and API::get_api_video() calls removeSensitiveUserFields() only when the caller is neither authenticated nor using a valid API secret; it never compares User::getId() with the row's users_id. As a result, any low-privilege authenticated account can request another user's video and receive the owner's email address, account name (user), and isAdmin, canUpload and canStream flags, which are removed for guests and should be returned only to the owner or to callers with a valid API secret. No patched version was available at the time of the advisory.

