CVE-2026-61564
KrytyczneCVSS 10.0Streszczenie
W AVideo przed wersją 8.1.0 nieuwierzytelniony endpoint instalatora `install/checkConfiguration.php` buduje plik `videos/configuration.php`, wstawiając parametry żądania, w tym `webSiteRootURL`, do literałów PHP w pojedynczych cudzysłowach bez escapowania. Atakujący może zamknąć literał i wstrzyknąć kod PHP wykonywany jako użytkownik serwera WWW. Wymagane jest, aby plik `videos/configuration.php` nie istniał, a parametry bazy mogły wskazywać na serwer atakującego. Luka jest naprawiona w wersji 8.1.0.
Ocena ryzyka
Możliwe jest wykonanie dowolnych poleceń, odczyt i nadpisanie plików użytkownika serwera WWW, trwałe wstrzyknięcie kodu PHP oraz przejęcie ustawień połączenia z bazą. Dodatkowo występuje wtórny wektor SQL injection.
Rekomendacja
Zaktualizuj AVideo do wersji 8.1.0 lub nowszej. Upewnij się, że plik `videos/configuration.php` istnieje i jest odpowiednio zabezpieczony, a endpoint instalatora nie jest dostępny publicznie.
Inne podatności w AVideo
Zobacz wszystkie- CVE-2026-61575Średnie
W AVideo przed wersją 8.1.0 plik view/queue.php używa pathinfo na kontrolowanym przez wywołującego parametrze fileURI i zapisuje nazwę pliku przez setTitle w encoder_queue.title bez neutralizacji. fileURI nie jest objęty filtrami objects/security.php, a uprawnienie Login::canUpload() można nadać sobie samodzielnie, co pozwala atakującemu zapisać tytuł HTML, którego obsługa zdarzeń wykona się w przeglądarce uprzywilejowanego widza (administratora lub operatora tego samego streamera).
- CVE-2026-61573Średnie
W AVideo przed wersją 8.1.0 anonimowy interfejs logowania odzwierciedla wartości żądania w HTML i JavaScript bez kodowania wyjścia. Parametr webSiteRootURL jest zwracany bez zmian przez Streamer::getStreamerURL() i trafia do atrybutów nawigacji i formularzy oraz do ciągu JavaScript w view/index.header.php, a pola user i pass są filtrowane tylko pod kątem apostrofów, co pozwala na wyjście z atrybutów HTML. Dodatkowo view/index.header.php odzwierciedla pola POST przez json_encode bez JSON_HEX_TAG, a locale/function.php zapisuje w sesji wartość lang bez escapowania.
- CVE-2026-61572Wysokie
Podatność SSRF w AVideo (przed wersją 8.1.0) pozwala nieuwierzytelnionemu atakującemu na odczyt odpowiedzi z wewnętrznych usług HTTP/HTTPS oraz FTP. Funkcja `url_get_contents` nie blokuje adresów prywatnych, loopback ani link-local i wyłącza weryfikację certyfikatów TLS, a endpoint `objects/login.json.php` zwraca pobraną zawartość. Dodatkowo `view/youtubeDl.json.php` umożliwia żądania do wewnętrznych serwerów FTP.
- CVE-2026-61571Wysokie
W AVideo przed wersją 8.1.0 koder nie ma globalnej warstwy uwierzytelniania i udostępnia anonimowym wywołaniom sieciowym endpointy PHP sterowania i statusu. Endpointy `view/run.php`, `view/queue.json.php`, `view/status.php` i `view/listFiles.json.php` pozwalają nieuwierzytelnionemu atakującemu sterować procesorem kolejki, odczytywać informacje o kolejce i streamerach, uzyskiwać statystyki pamięci oraz wyliczać nazwy i ścieżki plików multimedialnych w dowolnym katalogu czytelnym dla użytkownika serwera WWW. Luka jest naprawiona w wersji 8.1.0.
- CVE-2026-61569Wysokie
W AVideo przed wersją 8.1.0 nieuwierzytelnione logowanie streamera w `objects/login.json.php` przekazuje parametr `user` do `Streamer::get`, gdzie jest wstawiany do zapytania SELECT MariaDB w pojedynczych cudzysłowach bez parametryzacji lub escapowania. Mimo że `objects/security.php` usuwa literalne pojedyncze cudzysłowy, `html_entity_decode` w `objects/Login.php` przywraca zakodowane encjami cudzysłowy przed zapytaniem. Wyniki UNION są ujawniane przez `streamers_id`, a błędy zwracają zapytanie i komunikat błędu MariaDB. Luka jest naprawiona w wersji 8.1.0.
- 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.
Oryginalny opis (angielski, źródło NVD)
AVideo is a video-sharing Platform. Prior to 8.1.0, the unauthenticated installer endpoint `install/checkConfiguration.php` assembles `videos/configuration.php` by interpolating request parameters, including `webSiteRootURL`, into single-quoted PHP string literals without escaping. An attacker can terminate a literal and inject PHP that executes as the web-server user when the generated, directly requestable file is loaded. Exploitation requires `videos/configuration.php` to be absent, as on every fresh deployment or after the file is removed or moved; an existing file blocks this endpoint. The supplied `systemRootPath` must contain index.php and a connection using `databaseHost`, `databaseUser`, and `databasePass` must succeed, but the attacker can point those parameters to their own database server and needs no target credentials. The write location is also derived from `systemRootPath` without a base-directory constraint. This permits arbitrary command execution, reading and overwriting files owned by the web-server user, persistent PHP code, and control over stored database connection settings. The endpoint additionally interpolates request values into streamer and configuration INSERT statements, creating a secondary SQL-injection sink. This issue is fixed in version 8.1.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

