Advisory Database
  • Advisories
  • Dependency Scanning
  1. composer
  2. ›
  3. getgrav/grav
  4. ›
  5. CVE-2026-65608

CVE-2026-65608: Grav: FlexDirectory::dynamicDataField() executes arbitrary callables from blueprint data with no validation

September 17, 2026

A missing validation check in Grav’s Flex framework lets an account holding nothing but an ordinary object-create permission on a single Flex directory execute arbitrary shell commands on the server. Any authenticated user with create or update rights on a Flex-based directory (Flex Users, Flex Pages, Flex Objects, or any custom Flex type) can trigger it the moment a blueprint field anywhere in that directory carries a data-*@: directive, since the code that resolves those directives calls call_user_func_array() on attacker-influenced input with no restriction at all.

This is a bypass of GHSA-fj2p-qj2f-74v5, already patched in 2.0.7. That fix added real validation to Blueprint::dynamicData(), but Grav’s Flex system routes the same directive through a separate, unprotected method, FlexDirectory::dynamicDataField(), which never received the same fix.

References

  • github.com/advisories/GHSA-c4wf-2xxc-68qm
  • github.com/getgrav/grav/commit/fae9e1bf2c40ce0b50d0dfce647aaa1d22f98969
  • github.com/getgrav/grav/security/advisories/GHSA-c4wf-2xxc-68qm
  • nvd.nist.gov/vuln/detail/CVE-2026-65608
  • www.vulncheck.com/advisories/grav-before-remote-code-execution-via-flexdirectory

Code Behaviors & Features

Detect and mitigate CVE-2026-65608 with GitLab Dependency Scanning

Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →

Affected versions

All versions starting from 1.7.0 before 2.0.9

Fixed versions

  • 2.0.9

Solution

Upgrade to version 2.0.9 or above.

Impact 8.8 HIGH

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Learn more about CVSS

Weakness

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

Source file

packagist/getgrav/grav/CVE-2026-65608.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Tue, 22 Sep 2026 12:20:11 +0000.