Description
Grav versions >= 1.7.0 and before 2.0.9 contain a remote code execution vulnerability. FlexDirectory::dynamicDataField() resolves blueprint data-*@: directives by calling call_user_func_array() on attacker-influenced input, validating only that the target is callable (is_callable()) without restricting dangerous functions such as exec, system, passthru, or shell_exec. Because FlexDirectory registers this handler for every Flex directory, it bypasses the validation added to Blueprint::dynamicData() in 2.0.7 (GHSA-fj2p-qj2f-74v5). Any authenticated user with create or update permission on any Flex-based directory (Flex Users, Flex Pages, Flex Objects, or custom Flex types) can execute arbitrary shell commands on the server.
Published: 2026-07-23
Score: 8.7 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability allows an attacker to execute arbitrary shell commands on the server because FlexDirectory::dynamicDataField() blindly calls attacker-controlled functions via call_user_func_array when parsing blueprint directives. Only a generic callable check is performed; dangerous functions remain usable. This results in full remote code execution with the privileges of the authenticated user.

Affected Systems

Affected are Grav CMS versions 1.7.0 up to but excluding 2.0.9. Any Flex-based directory (Flex Users, Flex Pages, Flex Objects or custom Flex types) is vulnerable. The vulnerability is present in the Grav package maintained by getgrav.

Risk and Exploitability

The CVSS score of 8.7 indicates high severity. The EPSS score is reported as less than 1%, implying a very low current exploitation probability, and the vulnerability is not listed in CISA’s KEV catalog. Nevertheless, any authenticated user with create or update rights on any Flex directory can trigger the flaw. The attack graph does not require special network exposure; once authenticated, the attacker can run any shell command.

Generated by OpenCVE AI on August 3, 2026 at 21:38 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Grav to version 2.0.9 or later where the offending call has been removed.
  • If an upgrade is not immediately possible, patch FlexDirectory::dynamicDataField() to reject callable functions such as exec, system, passthru, or shell_exec.
  • Review permissions on all Flex directories and restrict create/update rights to trusted administrators only.

Generated by OpenCVE AI on August 3, 2026 at 21:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 23 Jul 2026 21:45:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


Thu, 23 Jul 2026 12:15:00 +0000

Type Values Removed Values Added
Description Grav versions >= 1.7.0 and before 2.0.9 contain a remote code execution vulnerability. FlexDirectory::dynamicDataField() resolves blueprint data-*@: directives by calling call_user_func_array() on attacker-influenced input, validating only that the target is callable (is_callable()) without restricting dangerous functions such as exec, system, passthru, or shell_exec. Because FlexDirectory registers this handler for every Flex directory, it bypasses the validation added to Blueprint::dynamicData() in 2.0.7 (GHSA-fj2p-qj2f-74v5). Any authenticated user with create or update permission on any Flex-based directory (Flex Users, Flex Pages, Flex Objects, or custom Flex types) can execute arbitrary shell commands on the server.
Title Grav before 2.0.9 Remote Code Execution via FlexDirectory
First Time appeared Getgrav
Getgrav grav
Weaknesses CWE-470
CPEs cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*
Vendors & Products Getgrav
Getgrav grav
References
Metrics cvssV3_1

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

cvssV4_0

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


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-07-24T21:35:20.322Z

Reserved: 2026-07-22T10:48:36.000Z

Link: CVE-2026-65608

cve-icon Vulnrichment

Updated: 2026-07-23T18:00:02.351Z

cve-icon NVD

Status : Deferred

Published: 2026-07-23T12:18:47.770

Modified: 2026-07-23T19:17:04.707

Link: CVE-2026-65608

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T21:45:03Z

Weaknesses
  • CWE-470

    Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')