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.
Published: 2026-08-25
Score: 6.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: CSRF protection weakened by timing attack
Action: Patch now
AI Analysis

Impact

The vulnerability stems from a timing side‑channel in Grav CMS’s Utils::verifyNonce() where a non‑constant‑time string comparison with the === operator is used instead of hash_equals(). Attacker requests can be measured to recover a valid CSRF nonce byte by byte, allowing the attacker to forge requests that appear legitimate and bypass the intended CSRF protection. This does not directly provide code execution or data exfiltration but erodes the integrity of the CSRF defense and undermines the security margin that developers rely on.

Affected Systems

Grav CMS versions prior to 2.0.16 are vulnerable. The vendor is getgrav and the affected product is Grav CMS. All installations running a pre‑2.0.16 release face the flaw, as identified in the advisory references.

Risk and Exploitability

The CVSS score of 6.3 indicates medium severity. No EPSS score is currently available and the flaw is not listed in the CISA KEV catalog. Based on the description, the likely attack vector is HTTP requests to the CSRF verification endpoint, requiring the attacker to measure response timing differences. Practical exploitation demands network access and the ability to send repeated requests; therefore the risk is moderate, especially for publicly exposed sites that do not implement rate limiting or monitoring of anomalous request patterns.

Generated by OpenCVE AI on August 25, 2026 at 04:24 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Grav CMS to version 2.0.16 or later, which replaces the === comparison with the constant‑time hash_equals() function.
  • Apply rate limiting or a WAF rule to the CSRF endpoint to reduce the feasibility of brute‑force timing attempts.
  • Monitor the CSRF endpoint for anomalous traffic patterns to detect potential timing‑based attacks.

Generated by OpenCVE AI on August 25, 2026 at 04:24 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 27 Aug 2026 18:00:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 25 Aug 2026 02:00:00 +0000

Type Values Removed Values Added
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.
Title Grav CMS before 2.0.16 Timing Attack via verifyNonce
First Time appeared Getgrav
Getgrav grav
Weaknesses CWE-208
CPEs cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*
Vendors & Products Getgrav
Getgrav grav
References
Metrics cvssV3_1

{'score': 3.7, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N'}

cvssV4_0

{'score': 6.3, 'vector': 'CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-27T14:54:28.112Z

Reserved: 2026-08-10T13:02:20.829Z

Link: CVE-2026-72701

cve-icon Vulnrichment

Updated: 2026-08-27T14:53:45.824Z

cve-icon NVD

Status : Deferred

Published: 2026-08-25T02:16:45.980

Modified: 2026-08-31T20:52:56.343

Link: CVE-2026-72701

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-25T04:30:05Z

Weaknesses
  • CWE-208

    Observable Timing Discrepancy