CVE-2026-65008: Grav remote code execution in Blueprint dynamicData

CVE-2026-65008 · Severity: critical · CVSS 9.8 · Published 2026-07-21

Grav, a popular open-source content management system, contains a vulnerability that allows certain authorized users to take full control of the web server. By saving a specially crafted page, an attacker with page-editing permissions can force the server to execute malicious commands. These commands are triggered automatically whenever any visitor, including members of the public, views the affected page, potentially leading to a total compromise of the website and its data.

Technologies: Grav. Vendors: Grav.

Quick answers

Is CVE-2026-65008 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-65008 being exploited in the wild.
How severe is CVE-2026-65008?
Critical severity, with a CVSS score of 9.8, published 21 July 2026.
Which products and versions are affected?
Grav >= 2.0.4, < 2.0.7.
Is there a fix for CVE-2026-65008?
A patch was published on 2026-07-21: Fix released in version 2.0.7 Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-65008 attacked?
It is attacked over the network, in a web application.
Am I affected by CVE-2026-65008?
Check whether you run Grav 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.

Technical details

A remote code execution (RCE) vulnerability exists in Grav's Blueprint::dynamicData() method within system/src/Grav/Common/Data/Blueprint.php. The function passes a Class::method callable string and its arguments directly to call_user_func_array() without an allowlist. Because the Grav Form plugin routes page frontmatter through this path, an authenticated user with 'admin.pages' or 'api.pages.write' permissions can inject a malicious callable directive (such as system()) into a page's frontmatter. Once planted, the payload executes with the privileges of the web-server user whenever the page is requested, even by unauthenticated visitors. The issue is resolved in version 2.0.7.

Affected products

  • getgrav Grav >= 2.0.4, < 2.0.7

Timeline

  • 2026-07-07: advisory: GitHub Security Advisory published
  • 2026-07-21: disclosed: CVE published to NVD
  • 2026-07-21: patched: Fix released in version 2.0.7

References

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