CVE-2026-39923
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.
Scoring
- Severity
- CRITICAL
- CVSS base score
- 9.2
- CVSS vector
- 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
- EPSS probability
- 0.26%
- CWE
- CWE-324
- Published
- 2026-08-05
- Last modified
- 2026-08-14
Affected products
- Flarum Flarum Framework
Weakness type
Related vulnerabilities
- CVE-2026-54787 — sigstore-go fails to check signature timestamps against a signing key's validity period
- CVE-2026-52809 — Gogs: Password-reset tokens use account-activation lifetime, ignoring RESET_PASSWORD_CODE_LIVES
- CVE-2025-33012 — IBM Db2 improper account lockout
- CVE-2025-48813 — Virtual Secure Mode Spoofing Vulnerability
- CVE-2023-5342 — Shim: expired secure boot certificate
- CVE-2025-2291 — PgBouncer default auth_query does not take Postgres password expiry into account
- CVE-2025-31123 — Zitadel Expired JWT Keys Usable for Authorization Grants
- CVE-2024-7318 — Keycloak-core: one time passcode (otp) is valid longer than expiration timeseverity