CVE-2026-65608: Grav before 2.0.9 Remote Code Execution via FlexDirectory
Grav versions >= 1.7.0 and before 2.0.9 contain a remote code execution vulnerability. FlexDirectory::dynamicDataField() resolves blueprint data-@: directives by calling calluserfuncarray() on attacker-influenced input, validating only that the target is callable (iscallable()) without restricting dangerous functions such as exec, system, passthru, or shellexec. 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.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Gravto a version that resolves this vulnerability.Fixed in 2.0.9 - Upgrade
Upgrade
Gravto a version that resolves this vulnerability.Fixed in 2.0.7Patch GHSA-fj2p-qj2f-74v5
Event History
Frequently Asked Questions
What is the severity of CVE-2026-65608?
CVE-2026-65608 has a high severity score of 8.8.
What does CVE-2026-65608 exploit in Grav?
CVE-2026-65608 exploits a remote code execution vulnerability in Grav versions between 1.7.0 and before 2.0.9.
How can I fix CVE-2026-65608?
To fix CVE-2026-65608, update Grav to version 2.0.9 or later.
Who is affected by CVE-2026-65608?
All users of Grav versions 1.7.0 to before 2.0.9 are affected by CVE-2026-65608.
What is the potential impact of CVE-2026-65608?
The potential impact of CVE-2026-65608 is remote code execution, allowing attackers to execute arbitrary code on the server.