CVE-2026-109314
WysokieCVSS 7.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 19 - wyżej niż 19% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Ujawnienie tokenów resetowania haseł, co może prowadzić do przejęcia kont uprzywilejowanych i naruszenia bezpieczeństwa.
Rekomendacja
Zaktualizuj Grav Login plugin do wersji 3.9.9 lub nowszej, która zawiera poprawkę tej podatności.
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-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.
- CVE-2026-66400Średnie
Wtyczka Grav Login przed wersją 3.8.13 zawiera podatność na niewystarczające wygaśnięcie sesji w pliku TokenStorage.php, gdzie metoda findTriplet() nieprawidłowo waliduje znaczniki czasu tokenów Remember Me. Atakujący z przechwyconym ciasteczkiem Remember Me może uwierzytelniać się w nieskończoność, zamiast przez skonfigurowany okres limitu czasu, ponieważ sprawdzanie wygaśnięcia porównuje tablicę z wartością skalarną, co w PHP zawsze daje nieprawidłowy wynik.
Oryginalny opis (angielski, źródło NVD)
Grav Login plugin 1.2.0 before 3.9.9 contains an information disclosure vulnerability that allows publishers to obtain password-reset tokens by authoring a page at the reset route. When a victim opens an emailed reset link, the publisher-controlled page rendered by Login::getPage() exposes the username and bearer token, enabling takeover of more privileged accounts.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

