CVE-2026-65608 grav vulnerability
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.
Browse PHP security risksQuick answer
getgrav grav should be reviewed and updated if it matches the affected versions. The recommended fix is to apply the vendor-supported patched version or the mitigation steps below, then retest the public website with Fixnx.
Who is affected
Affected versions
- < 2.0.9
Fixed versions
- 2.0.9
How to fix it
CVE-2026-65608 affects grav and involves code or command execution. Successful exploitation may let an attacker run unintended code or operating-system commands in the affected process. Prioritize internet-facing, privileged, automation, and production deployments. Upgrade grav to 2.0.9 or a later vendor-supported fixed release.
- Inventory every deployment, device, package, plugin, container, build, and environment that uses grav.
- Compare the installed version with the recorded affected range: < 2.0.9.
- Upgrade grav to 2.0.9 or a later vendor-supported fixed release.
- Until patched, disable the affected feature, limit untrusted input, and run the service with the lowest practical privileges.
- Review configuration, roles, tokens, network paths, and exposed endpoints connected to grav; remove access that is not required.
- Review process, shell, web, audit, and network logs for unexpected commands, child processes, downloads, callbacks, or changed files.
- If exploitation is suspected, isolate affected assets, preserve evidence, rotate exposed credentials or keys, restore trusted data, and rebuild compromised systems before returning them to service.
Scan now. Google sign-in is only needed to unlock fix guidance.
Verify the fix
- Confirm every affected asset now runs the fixed vendor-supported release or has the documented mitigation for CVE-2026-65608 in place.
- Use a safe regression test to confirm the affected code or command execution path no longer produces the vulnerable behavior.
- Confirm temporary access controls, endpoint restrictions, network blocks, and least-privilege settings remain effective after the update.
- Review post-remediation logs and rerun Fixnx plus the relevant package, dependency, firmware, browser, or product-specific security check.
- Document affected assets, versions, changes, validation evidence, reviewed logs, and any credential rotation, cleanup, or replacement completed.
Related categories
Related security risks
More published guidance from the same primary category.
Trusted references
FAQ
What is affected by CVE-2026-65608?
getgrav grav versions listed as affected should be reviewed: < 2.0.9.
What should I fix first?
Start with internet-facing sites, admin panels, login flows, plugins, themes, modules, packages, and systems that process user-controlled input or sensitive data.
How do I confirm the fix worked?
Apply the patched version or mitigation, clear caches where relevant, retest the affected workflow, and run a new Fixnx scan to verify public website exposure signals.
How are Fixnx security risk categories chosen?
Fixnx keeps one canonical risk page and assigns only broad, relevant categories such as ecosystem, technology area, or vulnerability class.
