CVE-2026-72701: Observable Timing Discrepancy in getgrav grav
Description
Grav CMS before 2.0.16 contains a timing vulnerability in Utils::verifyNonce() that uses non-constant-time string comparison with the === operator instead of hash_equals() for CSRF nonce validation. Attackers can measure response timing differences to recover valid nonce values byte-by-byte through multiple requests, weakening CSRF protection below its intended security margin.
CVSS v4.0
Score 6.3medium
Affected software
getgrav
grav
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability exists in Grav CMS's core function Grav\Common\Utils::verifyNonce(), which validates CSRF nonces using PHP's === operator for string comparison. Since === short-circuits on the first differing byte, the comparison time varies depending on how many leading bytes match, leaking timing information (CWE-208). Grav CMS uses hash_equals() for similar secret comparisons elsewhere, but this function still uses ===. The nonce is an md5 hash derived from a secret installation-level key and other parameters. Timing experiments confirm that the string comparison is not constant time, producing measurable timing differences at the nonce length of 32 hex characters. The affected versions are all versions before 2.0.16.
Potential Impact
An attacker able to measure response times precisely could use the timing discrepancy to incrementally guess valid CSRF nonces by observing how many leading bytes are correct. This could facilitate bypassing CSRF protections in Grav CMS. However, exploitation requires precise timing measurement and is not confirmed in the wild. The vulnerability is rated medium severity with a CVSS 4.0 score of 6.3.
Mitigation Recommendations
A fix is available in Grav CMS version 2.0.16 and later, which presumably replaces the vulnerable === comparison with a constant-time comparison function like hash_equals(). Users should upgrade to version 2.0.16 or later to remediate this issue. No other mitigation is explicitly stated or required.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- VulnCheck
- Date Reserved
- 2026-08-10T13:02:20.829Z
- Cvss Version
- 4.0
- State
- PUBLISHED
Threat ID: 6a8cf57bacd9273b498428a6
Added to database: 08/25/2026, 01:52:59 UTC
Last enriched: 09/18/2026, 01:28:14 UTC
Last updated: 10/08/2026, 18:48:48 UTC
Views: 66
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.