CVE-2026-62236
ŚrednieCVSS 5.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 1 - wyżej niż 1% wszystkich znanych CVE
Streszczenie
Wtyczka Grav Login przed wersją 3.8.11 zawiera podatność na fałszerstwo żądania międzywitrynowego (CSRF) w zadaniu frontendowym login.regenerate2FASecret. Atakujący może nakłonić zalogowanego użytkownika do odwiedzenia złośliwej strony, co spowoduje wygenerowanie nowego sekretu TOTP bez wymaganego tokena CSRF lub weryfikacji nagłówka Origin/Referer, unieważniając dotychczasowy klucz uwierzytelniania dwuskładnikowego.
Ocena ryzyka
Ryzyko polega na tym, że atakujący może wymusić reset sekretu TOTP dla zalogowanego administratora lub użytkownika, co prowadzi do blokady dostępu do konta do czasu ponownej rejestracji 2FA. Może to spowodować przerwanie pracy, utratę zaufania lub potencjalne przejęcie sesji, jeśli atakujący zdoła przechwycić nowy sekret.
Rekomendacja
Należy natychmiast zaktualizować wtyczkę grav-plugin-login do wersji 3.8.11 lub nowszej. Dodatkowo zaleca się skonfigurowanie sesji z parametrem session.samesite: Strict, co całkowicie eliminuje podatność.
Inne podatności w Grav Login Plugin
Zobacz wszystkie- CVE-2026-109312Wysokie
Wtyczka Grav Login w wersjach od 2.7.0 do 3.9.9 zawiera podatność na ominięcie uwierzytelniania w funkcji processUserProfile(), która sprawdza, czy użytkownik sesji istnieje, ale nie sprawdza, czy oczekująca sesja 2FA jest w pełni autoryzowana. Atakujący z hasłem ofiary, który może opublikować formularz strony bez reguły dostępu, może wywołać update_user przed ukończeniem 2FA, aby wyłączyć twofa_enabled i przejąć konto.
- CVE-2026-65603Wysokie
Wtyczka Grav Login (grav-plugin-login) w wersjach <= 3.8.11 zawiera lukę w eskalacji uprawnień w uwierzytelnionym handlerze aktualizacji profilu (processUserProfile(), zadanie update_user). W przeciwieństwie do handlera rejestracji, ten handler nie usuwa pól uprawnień ('groups','access') z danych formularza przesłanych przez użytkownika przed ich zapisaniem. Gdy administrator dodał 'groups' i/lub 'access' do plugins.login.user_registration.fields i używane jest domyślne konto 'regular'/DataUser, niskouprzywilejowany uwierzytelniony użytkownik może wysłać spreparowane dane formularza profilu (np. access[admin][super]=true), aby eskalować do super-admina, umożliwiając dostęp do panelu admina, nadużycie schedulera (RCE) i ewaluację Twig. Naprawione w wersji 3.8.12.
- CVE-2026-56710Krytyczne
Wtyczka Grav Login przed wersją 1.0.16 nie weryfikuje poziomu uprawnień docelowego konta w handlerze onApiUserListRowAction unlock. Atakujący z uprawnieniem api.users.write może wyczyścić liczniki blokady logowania na kontach admin.super, usuwając ochronę przed atakami brute-force na konta o najwyższych uprawnieniach.
- CVE-2026-42613Krytyczne
Grav to platforma internetowa oparta na plikach. W wersjach przed 2.0.0-beta.2 metoda Login::register() wtyczki Login akceptuje grupy i pola dostępu kontrolowane przez atakującego bez walidacji po stronie serwera.
- CVE-2026-109314Wysokie
Grav Login plugin od wersji 1.2.0 przed 3.9.9 zawiera podatność ujawniania informacji, która pozwala wydawcom na uzyskanie tokenów resetowania hasła poprzez utworzenie strony w ścieżce resetowania. Gdy ofiara otworzy wysłany e-mailem link resetujący, strona kontrolowana przez wydawcę, renderowana przez Login::getPage(), ujawnia nazwę użytkownika i token bearer, umożliwiając przejęcie kont o wyższych uprawnieniach.
- CVE-2026-109313Wysokie
Wtyczka Grav Login w wersjach od 2.7.0 do 3.9.9 zawiera podatność na ominięcie uwierzytelniania, która pozwala atakującemu z ważnym hasłem pominąć dwuskładnikowe uwierzytelnianie (2FA) poprzez przywrócenie trwałego ciasteczka remember-me. Atakujący może uzyskać takie ciasteczko po kroku z hasłem i przywrócić je jako w pełni autoryzowaną sesję bez ukończenia drugiego składnika.
- CVE-2026-72700Wysokie
Wtyczka getgrav/grav-plugin-login Composer przed wersją 3.9.1 (używana przez Grav) porównuje tokeny resetowania hasła i aktywacji konta za pomocą nie-stałoczasowego porównania === zamiast hash_equals() w classes/Controller.php (taskReset()) i login.php (obsługa aktywacji). Ponieważ punkt końcowy przesyłania tokena (taskReset) nie ma również ograniczenia szybkości, atakujący może w zasadzie wysyłać wielokrotne zgadywania tokenów dla znanej nazwy użytkownika i wykorzystać różnice czasowe, aby próbować odzyskać prawidłowy token, chociaż dostawca ocenia praktyczną możliwość wykorzystania jako niską i nie zademonstrowano ataku sieciowego od końca do końca.
- CVE-2026-72699Średnie
Wtyczka Grav Login (getgrav/grav-plugin-login) przed wersją 3.9.1 jest podatna na enumerację adresów e-mail. Metoda register() w classes/Login.php wyrzuca odrębny wyjątek (EMAIL_NOT_AVAILABLE), gdy podany adres e-mail już należy do istniejącego konta, podczas gdy w przeciwnym razie rejestracja przebiega dalej. Ponieważ punkt końcowy rejestracji nie ma ograniczeń tempa, atakujący może enumerować, które adresy e-mail mają konta na stronie, zgadując jedno żądanie na raz.
- CVE-2026-62671Średnie
Wtyczka Grav Login przed wersją 3.8.11 akceptuje zadanie login.regenerate2FASecret przez parametr URI task w żądaniu GET bez wymaganego nonce, kontroli Origin lub Referer. Przy domyślnej polityce SameSite=Lax, nawigacja z innej strony może wywołać taskRegenerate2FASecret() w sesji zalogowanego użytkownika, nadpisać jego sekret TOTP i wymusić ponowną rejestrację 2FA.
- CVE-2026-62669Wysokie
Wtyczka Grav Login przed wersją 3.8.11 zawiera podatność w zadaniu login.regenerate2FASecret, które sprawdza tylko istnienie użytkownika w sesji oczekującej, a nie wymaga autoryzacji $user->authorized. Po podaniu poprawnego hasła ofiary, atakujący może wywołać taskRegenerate2FASecret() podczas oczekującego wyzwania TOTP, nadpisać twofa_secret, odczytać nowy sekret z odpowiedzi, obliczyć ważny kod i ukończyć uwierzytelnianie bez drugiego czynnika ofiary. Problem naprawiono w wersji 3.8.11.
Oryginalny opis (angielski, źródło NVD)
grav-plugin-login before 3.8.11 contains a cross-site request forgery (CSRF) vulnerability in the login.regenerate2FASecret frontend task, which regenerates and persists a new TOTP secret for the authenticated session user without any anti-CSRF nonce or Origin/Referer check. Because Grav core dispatches the task from the GET 'task:' URI parameter and the default session cookie is SameSite=Lax, an attacker can lure a logged-in victim to an off-site page that performs a top-level GET navigation, rotating the victim's TOTP secret so their enrolled authenticator no longer matches the server, effectively forcing 2FA re-enrollment. Sites configured with session.samesite: Strict are not affected.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

