CVE-2026-86254
ŚrednieCVSS 6.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 12 - wyżej niż 12% wszystkich znanych CVE
Streszczenie
wger w wersjach do master zawiera niekompletne obejście autoryzacji w wger/core/views/user.py, gdzie trzy widoki zachowują oryginalne sprawdzanie zakresu siłowni przy użyciu surowego porównania liczb całkowitych zamiast pomocnika is_same_gym(), co pozwala personelowi siłowni z gym=None na usuwanie, dezaktywację lub aktywację dowolnego innego użytkownika z gym=None. Atakujący z uprawnieniami gym.manage_gym i przynależnością gym=None mogą trwale usuwać konta użytkowników, blokować użytkowników poprzez dezaktywację lub cofać defensywne dezaktywacje, wykorzystując przypadek brzegowy porównania None != None.
Ocena ryzyka
Nieautoryzowany personel może trwale usuwać konta użytkowników lub blokować im dostęp, co może prowadzić do naruszenia integralności danych i utraty dostępności systemu.
Rekomendacja
Zaleca się aktualizację wger do najnowszej wersji oraz zmianę kodu w wger/core/views/user.py, aby używać pomocnika is_same_gym() zamiast surowego porównania liczb całkowitych.
Inne podatności w wger
Zobacz wszystkie- CVE-2026-43948Krytyczne
W wger przed wersją 2.6 występuje podatność, która pozwala użytkownikowi z uprawnieniami gym.manage_gym na zresetowanie hasła dowolnego użytkownika bez przypisania do siłowni. Wykorzystując błąd w porównaniu obiektów, atakujący może przejąć konto ofiary, a oryginalne hasło ofiary zostaje unieważnione.
- CVE-2026-86257Średnie
wger przed wersją 2.6 nie dezynfekuje pól first_name i last_name w punkcie eksportu TSV członków siłowni, co pozwala każdemu członkowi siłowni na wstrzyknięcie formuł arkusza kalkulacyjnego. Atakujący mogą wstrzyknąć formuły takie jak =HYPERLINK, aby wyeksfiltrować dane administratora lub wykonać kod, gdy administratorzy otworzą wyeksportowany plik w Excelu lub LibreOffice Calc.
- CVE-2026-86256Średnie
wger przed wersją 2.6 (dotknięte wersje <= 2.5.0) zawiera podatność na otwarte przekierowanie w widoku trainer_login (wger/core/views/user.py). Po wejściu trenera w tryb personifikacji, widok przekierowuje na parametr 'next' dostarczony przez użytkownika za pomocą HttpResponseRedirect() bez walidacji przez url_has_allowed_host_and_scheme(). Atakujący, który dostarczy spreparowany link uwierzytelnionemu trenerowi, może przekierować przeglądarkę trenera na domenę kontrolowaną przez atakującego, co umożliwia phishing i wyciek struktury URL wger (w tym user_pk personifikowanego użytkownika) przez nagłówek Referer.
- CVE-2026-86255Średnie
wger przed wersją 2.5 nie waliduje maksymalnego czasu trwania zakresów dat rutyn, co pozwala uwierzytelnionym użytkownikom tworzyć rutyny obejmujące dowolnie długie okresy. Atakujący mogą wywołać obliczenia date_sequence za pomocą punktów końcowych szczegółów rutyny, zmuszając serwer do iteracji tysięcy razy na żądanie i wyczerpując wątki robocze, co prowadzi do odmowy usługi dla legalnych użytkowników.
- CVE-2026-82544Średnie
W systemie wger-project wger do wersji 2.6.0-alpha2 znaleziono podatność w funkcji reset_user_password w pliku wger/gym/views/gym.py w komponencie Password Reset. Wykonanie manipulacji prowadzi do cross-site request forgery. Atak może być przeprowadzony zdalnie. Zalecane jest zastosowanie poprawki.
- CVE-2026-43978Wysokie
W wger przed wersją 2.6 trener siłowni może eskalować swoje uprawnienia do konta menedżera siłowni lub dyrektora generalnego poprzez sekwencję dwóch żądań do endpointu logowania trenera. Po zalogowaniu się na konto o niskich uprawnieniach flaga sesji `trainer.identity` jest ustawiana i omija ona kontrolę dostępu w kolejnych wywołaniach.
- CVE-2026-43977Wysokie
W aplikacji wger przed wersją 2.6 uwierzytelniony użytkownik może odczytać prywatne notatki treningowe, historię ćwiczeń i statystyki innego użytkownika, wywołując akcje /logs/ i /stats/ na rutynie, której nie jest właścicielem. Podatność wynika z błędnego sprawdzania uprawnień w RoutineViewSet, które przyznaje dostęp do odczytu każdemu uwierzytelnionemu użytkownikowi, gdy rutyna ma ustawione is_template=True.
Oryginalny opis (angielski, źródło NVD)
wger versions through master contain an incomplete authorization bypass in wger/core/views/user.py where three views retain the original gym-scope check using raw integer comparison instead of the is_same_gym() helper, allowing gym staff with gym=None to delete, deactivate, or activate any other user with gym=None. Attackers with gym.manage_gym permission and gym=None affiliation can permanently delete user accounts, lock users out via deactivation, or undo defensive deactivations by exploiting the None != None comparison edge case.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

