Flarum przed wersją 1.8.16 zawiera podatność umożliwiającą nieuwierzytelnionym atakującym ponowne użycie wygasłych tokenów resetowania hasła. Luka pozwala przejąć kontrolę nad dowolnym kontem użytkownika bez znajomości jego aktualnego hasła.
▸ Pokaż oryginał (EN)
Flarum before 1.8.16 contains a password reset token expiry bypass vulnerability that allows unauthenticated attackers to reuse expired password reset tokens by submitting them directly to the reset processing endpoint. The SavePasswordController::handle() method calls PasswordToken::findOrFail() without performing any expiry validation, allowing attackers to bypass the 24-hour token lifetime enforced only during form rendering and change any account's password to gain an authenticated session.
Metoda SavePasswordController::handle() wywołuje PasswordToken::findOrFail() bez weryfikacji daty ważności tokenu. Sprawdzenie 24-godzinnego okresu życia tokenu wykonywane jest wyłącznie podczas renderowania formularza resetowania hasła po stronie interfejsu, a nie w logice przetwarzania żądania. Atakujący może ominąć ten mechanizm, wysyłając wygasły token bezpośrednio do endpointu przetwarzającego reset hasła z pominięciem formularza. W efekcie token, który powinien być nieważny, zostaje zaakceptowany i umożliwia zmianę hasła na dowolną wartość wybraną przez atakującego.
Atakujący może ustawić nowe hasło dla dowolnego konta użytkownika (w tym konta administratora) i uzyskać uwierzytelnioną sesję, co prowadzi do pełnego przejęcia konta.
Należy zaktualizować Flarum do wersji 1.8.16 lub nowszej. Patch dostępny jest w repozytorium frameworka (commit 2803058d0f9dc38252326070b46d4484fe5a857d) oraz w wydaniu oznaczonym jako v1.8.16.
Flarum przed wersją 1.8.16
Podatność sklasyfikowana jako CWE-324 (Use of a Key Past its Expiration Date). Podatność dotyczy wyłącznie instancji forum Flarum — nie ma wpływu na systemy zewnętrzne (SC:N/SI:N/SA:N w wektorze CVSS 4.0). Wysokie wymaganie złożoności ataku (AC:H) może oznaczać konieczność wcześniejszego pozyskania wygasłego tokenu (np. przez przechwycenie wiadomości e-mail).
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X