CVE-2026-72702: Grav CMS origin validation bypass in referrer origin check

CVE-2026-72702 · Severity: medium · CVSS 5.4 · Published 2026-08-25

Grav CMS contains a flaw in how it validates whether the Referer HTTP header comes from the same website. The validation uses an incomplete string prefix check that accepts attacker-controlled domains like "example.com.attacker.tld" as valid when checking against "example.com". An attacker can exploit this by tricking a user into clicking a link from an attacker-owned domain to perform actions on the Grav site or potentially redirect the user to attacker-controlled URLs after authentication.

Technologies: getgrav/grav (Packagist). Vendors: Packagist.

Quick answers

Is CVE-2026-72702 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-72702 being exploited in the wild.
How severe is CVE-2026-72702?
Medium severity, with a CVSS score of 5.4, published 25 August 2026.
Which products and versions are affected?
getgrav/grav (Packagist) <= 2.0.15, ECOSYSTEM:introduced=0,fixed=2.0.16.
Is there a fix for CVE-2026-72702?
Yes. getgrav/grav (Packagist): upgrade to 2.0.16 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-72702 attacked?
It is attacked over the network.
Am I affected by CVE-2026-72702?
Check whether you run getgrav/grav (Packagist) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • getgrav/grav (Packagist): upgrade to 2.0.16 or later
    composer require getgrav/grav:^2.0.16

Technical details

The vulnerability is an origin validation bypass in Grav\Common\Uri::referrer() and Grav\Common\Page\Pages::referrerRoute() that use unanchored prefix matching via str_starts_with($referrer, $base) where $base is the site root URL without a trailing slash (e.g., "https://example.com"). Because there is no boundary check after the prefix, a string matching "https://example.com.attacker.tld" or "https://example.com-attacker.tld" is incorrectly accepted as same-origin. The attack requires user interaction (clicking a link or loading a page from attacker's domain). The vulnerable functions return a relative route derived from the attacker-controlled Referer value via string truncation, which could be leveraged for open redirect if the return value feeds an unvalidated redirect target, particularly in post-login flows. The fix involves anchoring the comparison with a trailing slash or parsing URLs as discrete components (scheme, host, port).

Affected products

  • Grav CMS 2.0.15 and earlier 2.x versions

Identifiers

  • CVE-2026-72702
  • GHSA-9ccq-2jfg-qw33

Timeline

  • 2026-09-17: disclosed: Advisory published as GHSA-9ccq-2jfg-qw33
  • 2026-08-03: other: Vulnerability confirmed present in commit c2b46866857a93a0aa7048e7ed707ed3ed45dbc3 (version 2.0.15)

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.