CVE-2026-104198
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 31 - wyżej niż 31% wszystkich znanych CVE
Streszczenie
ZoneMinder w wersjach od 1.34.0 do 1.36.38 nieprawidłowo obsługuje nieudane uwierzytelnianie tokenem w pliku web/includes/auth.php. Funkcja validateToken() zwraca false dla tokenu zniekształconego lub z nieprawidłowym podpisem, ale wywołujący przypisuje tę wartość do globalnej zmiennej $user, a ponieważ web/index.php sprawdza isset($user), wartość false jest traktowana jako zalogowany użytkownik i przekierowanie na stronę logowania jest pomijane.
Ocena ryzyka
Może to prowadzić do wyświetlenia widoków zależnych od zewnętrznej bramki uwierzytelniania, w tym widoku stref, który ujawnia metadane monitorów i stref bez niezależnej weryfikacji uprawnień. Nie stwierdzono możliwości nieautoryzowanej zmiany stanu, ponieważ funkcje pomocnicze uprawnień odrzucają wartość false.
Rekomendacja
Zaktualizuj ZoneMinder do wersji 1.36.63 lub nowszej, w której konwersja do obiektów ZM\User powoduje odrzucenie nieprawidłowego tokenu przed wyświetleniem widoku. Dodatkowo upewnij się, że zmienna $user pozostaje nieustawiona po nieudanej walidacji tokenu.
Inne podatności w ZoneMinder
Zobacz wszystkie- CVE-2016-10206Wysokie
W podatności CVE-2016-10206 w Zoneminder 1.30 i wcześniejszych wersjach występuje luka CSRF, która pozwala zdalnym atakującym na przejęcie uwierzytelnienia użytkowników w celu zmiany haseł oraz potencjalnie innych działań.
- CVE-2016-10205Wysokie
Podatność na oszustwo sesji w Zoneminder 1.30 i wcześniejszych wersjach umożliwia zdalnym atakującym przejęcie sesji internetowych za pomocą ciasteczka ZMSESSID.
- CVE-2017-5368Wysokie
ZoneMinder w wersjach 1.30 i 1.29 jest podatny na atak CSRF, co pozwala zdalnemu napastnikowi na wprowadzenie zmian w aplikacji webowej jako aktualnie zalogowany użytkownik. Atakujący może stworzyć nowego użytkownika admina, co umożliwia dalsze ataki.
- CVE-2016-10204Krytyczne
W podatności CVE-2016-10204 występuje luka typu SQL injection w Zoneminder w wersji 1.30 i wcześniejszych, która pozwala zdalnym atakującym na wykonywanie dowolnych poleceń SQL poprzez parametr limit w zapytaniu logu do index.php.
- CVE-2026-102297Średnie
ZoneMinder w wersjach przed 1.38.4 nie stosuje ograniczeń dostępu dla poszczególnych monitorów w punkcie końcowym indeksu FramesController. Uwierzytelnieni użytkownicy z uprawnieniem do przeglądania zdarzeń mogą wywołać API ramek, aby wyświetlić rekordy ramek z monitorów, do których dostęp jest zabroniony, ujawniając metadane zdarzeń i ramek poza granicami monitorów.
- CVE-2026-102296Średnie
ZoneMinder w wersjach przed 1.38.4 zawiera podatności przepełnienia bufora statycznego w funkcji RemoteCameraHttp::GetResponse(), które pozwalają złośliwym kamerom HTTP lub atakującym przechwytującym ruch na przepełnienie buforów o stałym rozmiarze poprzez wysyłanie zbyt dużych nagłówków odpowiedzi. Atakujący mogą wysyłać spreparowane odpowiedzi HTTP z nadmiernie długimi komunikatami statusu, nagłówkami Connection, wartościami Content-Type lub granicami multipart, aby uszkodzić stan parsera i spowodować awarię procesu przechwytywania lub uszkodzenie pamięci.
- CVE-2024-58386Średnie
Wersje ZoneMinder od 1.37.0 do 1.38.0 zawierają podatność path traversal w widoku plików, która pozwala uwierzytelnionym użytkownikom odczytywać dowolne pliki. Parametr path nie jest prawidłowo walidowany przed przekazaniem do output_file, co umożliwia atakującym z uprawnieniem Events view dostęp do wrażliwych plików, takich jak pliki konfiguracyjne zawierające poświadczenia do bazy danych.
- CVE-2026-54258Średnie
ZoneMinder w wersjach przed 1.36.39, 1.38.4 i 1.39.11 pozwala uwierzytelnionemu użytkownikowi o niskich uprawnieniach z gruboziarnistymi uprawnieniami Events=View i/lub Snapshots=View na bezpośrednie pobieranie mediów zdarzeń należących do monitorów, do których nie ma dostępu. Normalny interfejs ukrywa zastrzeżony monitor, ale bezpośrednie widoki mediów zdarzeń akceptują dowolny eid i strumieniują media bez egzekwowania ACL na poziomie zdarzenia/monitora.
- CVE-2026-76060Wysokie
W ZoneMinder istnieje podatność na wstrzykiwanie poleceń systemu operacyjnego w funkcji eksportu zdarzeń. Parametr exportFile w żądaniu HTTP jest przekazywany bez sanityzacji do polecenia powłoki wykonywanego przez funkcję exec() w PHP, co pozwala każdemu uwierzytelnionemu użytkownikowi z uprawnieniami View Events na wykonanie dowolnych poleceń systemu operacyjnego na serwerze.
- CVE-2026-72556Wysokie
Podatność zdalnego wykonania kodu w ZoneMinder 1.39.17 pozwala każdemu uwierzytelnionemu użytkownikowi na wykonanie poleceń systemu operacyjnego przez wykorzystanie wadliwego sprawdzania uprawnień w klasie Filter. Metody canEdit() i canDelete() wywołują nieistniejące metody na klasie ZM\User, co powoduje, że PHP __call() zwraca wartość prawdziwą, omijając sprawdzenie uprawnień.
Oryginalny opis (angielski, źródło NVD)
ZoneMinder is a free, open source closed-circuit television software application. In versions 1.34.0 through 1.36.38, the web interface mishandles failed token authentication in web/includes/auth.php. validateToken() returns false when a token is malformed or has an invalid signature, but the caller assigns that value to the global $user variable; because web/index.php tests isset($user), boolean false is treated as a present user and the normal login redirect is skipped. This can dispatch views that rely on the outer authentication gate, including the zones view, which accepts an attacker-selected monitor ID and discloses monitor and zone metadata without an independent permission check. Permission helpers receive the false user value and deny privileged operations, so unauthorized state changes have not been established. This vulnerability is fixed in version 1.36.63, where conversion to ZM\User objects causes invalid token state to fail before view dispatch. Later defense-in-depth changes explicitly leave $user unset after failed token validation and reject non-ZM\User values at the web authentication gate.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

