CVE-2026-72700
Grav before 3.9.1 Timing Attack via Non-Constant-Time Token Comparison
- State
- Published
- Severity
- 8.7 High
- Published
- Aug 25, 2026
- Updated
- Aug 25, 2026
- Reserved
- Aug 10, 2026
Description
The getgrav/grav-plugin-login Composer plugin before 3.9.1 (used by Grav) compares password reset and account activation tokens using a non-constant-time === string comparison instead of hash_equals() in classes/Controller.php (taskReset()) and login.php (activation handler). Because the token-submission endpoint (taskReset) also lacks rate limiting, an attacker could in principle send repeated token guesses against a known username and use the timing differences to attempt to recover a valid token, though the vendor rates the practical exploitability as low and no end-to-end network exploit has been demonstrated.
Scores
| CVSS | Score | Vector | Source |
|---|---|---|---|
| 4.0 | 8.7 High | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N | VulnCheck |
| 3.1 | 7.5 High | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N | VulnCheck |
Weaknesses
- CWE-208 Observable Timing Discrepancy
Affected Products
| Product | Versions |
|---|---|
gravgetgrav |
|
References
- GitHub Security Advisory (GHSA-x239-6jqx-5hjh)vendor-advisory
- VulnCheck Advisory: Grav before 3.9.1 Timing Attack via Non-Constant-Time Token Comparisonthird-party-advisory
Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.