CVE Catalog

CVE-2026-69088

HighCVSS 8.1
Published: Updated: Translated: NVD NIST

Summary

Grav CMS versions 2.0.7 through 2.0.10 fail to validate fully-qualified static method calls (Class::method) in blueprint dynamic-field directives. Blueprint::isSafeDynamicCall() only applies its denylist to strings without '::'. An account with page-editing rights (admin.pages) can plant a directive that invokes an arbitrary public static PHP method with attacker-controlled arguments. This allows reading any server-readable file and arbitrary creation/copying of files and directories.

Risk Assessment

An attacker with limited editor privileges can read arbitrary files on the server and create or copy files and directories, leading to data leakage and attack escalation. Results are disclosed to anonymous visitors.

Recommendation

Immediately update Grav CMS to version 2.0.11, which contains the fix. Until then, restrict editor permissions and monitor content changes.

Other vulnerabilities in Grav CMS

See all
Original NVD description (English source)

Grav CMS versions 2.0.7 through 2.0.10 fail to validate fully-qualified static method calls (Class::method) in blueprint dynamic-field directives because Blueprint::isSafeDynamicCall() only applies its dangerous-callable denylist to strings that do not contain '::'. An account with only page-editing rights (admin.pages, not super-admin or admin.pages_twig) can plant a directive in a page's form-field frontmatter that invokes an arbitrary public static PHP method with attacker-controlled arguments. Using built-in gadget methods this allows reading of any server-readable file (disclosed to anonymous visitors of the crafted page) and arbitrary creation/copying of files and directories under the web-server account. Fixed in 2.0.11.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS