{"id":"CVE-2026-72701","title":"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","summary":"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 …","severity":"low","cvss":3.7,"cvssVector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N","cwe":["CWE-208"],"vendor":"getgrav","product":"grav","affected":["grav < 2.0.16"],"patched":["getgrav/grav 2.0.16"],"published":"2026-08-25","updated":"2026-10-12","sourceUpdated":"2026-10-12T15:10:00.207","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-72701","references":[{"url":"https://github.com/getgrav/grav/security/advisories/GHSA-38p6-h87p-r4cg","label":"disclosure@vulncheck.com"},{"url":"https://www.vulncheck.com/advisories/grav-cms-before-timing-attack-via-verifynonce","label":"disclosure@vulncheck.com"},{"url":"https://github.com/getgrav/grav/security/advisories/GHSA-38p6-h87p-r4cg","label":"134c704f-9b21-4f2e-91b3-4a467353bcc0"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-72701"},{"url":"https://github.com/advisories/GHSA-38p6-h87p-r4cg"},{"url":"https://github.com/getgrav/grav/commit/a076b9073abc51c1df924529d65773e44950c5c4"},{"url":"https://github.com/getgrav/grav/releases/tag/2.0.16"}],"tags":["nvd","cve.org","exploit-available","ghsa","composer"],"epss":0.00216,"epssPercentile":0.11962,"aliases":["GHSA-38p6-h87p-r4cg"],"ecosystem":"composer","exploitAvailable":true,"ssvc":{"exploitation":"poc","automatable":"no","technicalImpact":"partial","timestamp":"2026-08-27T14:53:40.236596Z"},"ingestedAt":"2026-09-17T20:28:02.779Z","slug":"CVE-2026-72701","body":"## Overview\n\nGrav 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.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Package advisory (CVE-2026-72701)\n\nAffected packages:\n\n- `getgrav/grav <= 2.0.15`\n\nPatched in:\n\n- `getgrav/grav 2.0.16`\n\nSource: https://github.com/advisories/GHSA-38p6-h87p-r4cg","depth":"twilight","depthScore":32,"depthScoreParts":{"impact":20.4,"likelihood":0,"exploitation":12,"ransomware":0},"changes":[{"seq":218160,"id":"CVE-2026-72701","ts":1791478456709,"field":"exploit_available","old":"false","new":"true"}]}