Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with page-edit or blueprint-config access
-
DeliveryCraft Blueprint data directive calling error_log
-
ExploitBypass incomplete denylist validation
-
ExecutionAppend PHP payload to web-accessible file
-
PersistRequest file to execute code
-
ImpactAchieve remote code execution
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the attacker to already possess page-edit or blueprint-config access in Grav, and the target install must be running a version before 2.0.15 where the bare-function validation uses the incomplete denylist. The concrete primitive is invoking the PHP error_log function via a Blueprint dynamic-data directive to append a PHP payload to a file that is reachable and executable under the web server's document root. Limiting factors: it is not usable by fully anonymous users - a privileged editor/config role is needed despite the input vector's PR:N - and success depends on a web-accessible, PHP-executing target directory being writable through the directive. The provided CVSS PR:N conflicts with this description-stated privilege requirement and should be verified with the vendor. |
| Impact | The supplied CVSS 4.0 vector (9.3, AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H) scores this as critical and unauthenticated, but this directly conflicts with the description, which states the attacker must already have page-edit or blueprint-config access - i.e. some authenticated/privileged role. This PR:N-versus-privileged discrepancy should be verified with the vendor; a more defensible assessment treats it as requiring low privileges (PR:L). Even downgraded, the real-world impact is high: an authenticated content editor or anyone able to modify blueprint config can achieve full RCE with high confidentiality, integrity, and availability impact and no user interaction. There is no EPSS score, KEV listing, or public POC provided, so exploitation probability signals are absent; the risk is therefore driven by the severity of the primitive and the plausibility of insider/compromised-editor abuse rather than by evidence of mass exploitation. Bottom line: a genuine priority patch for any multi-user Grav deployment, but the 'unauthenticated' framing of the raw vector overstates reachability against installs where editing is restricted. |
| Exploit ScenarioDerived | A user with a content-editor account (or access to blueprint configuration) crafts a Blueprint data directive that invokes the error_log function, passing a PHP payload and targeting a web-accessible file path. Grav's incomplete denylist permits the call, appending the PHP code to the file; the attacker then requests that file through the web server to execute their code and obtain RCE. No public exploit code was provided with this analysis, though the technique is straightforward given editor access. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 18, 2026
Remote code execution in Grav CMS before 2.0.15 allows attackers holding page-edit or blueprint-config privileges to write arbitrary PHP into web-accessible files and execute it. The flaw lives in the Blueprint dynamic-data 'bare-function' validation, which relies on an incomplete denylist rather than a positive allowlist, letting the error_log function be invoked through a data directive to append attacker-controlled PHP payloads. Reported by VulnCheck; no public exploit identified at time of analysis, and the issue is not listed in CISA KEV.
RemediationAI
Vendor-released patch: upgrade to Grav 2.0.15 or later, which replaces the incomplete bare-function denylist with proper validation; see GHSA-f8wv-xp27-6gq7 (https://github.com/getgrav/grav/security/advisories/GHSA-f8wv-xp27-6gq7). Where immediate upgrade is not possible, tightly restrict who holds page-edit and blueprint-config permissions and audit admin/editor accounts, since those roles are the exploitation prerequisite; this reduces attack surface but does not close the flaw and limits legitimate content workflows. As additional compensating controls, monitor the web root and blueprint/config directories for unexpected .php file creation or modification, and where feasible enforce that PHP execution is disabled in user-writable upload/content directories so a dropped payload cannot be executed - noting this can break plugins that legitimately execute PHP from those paths. Cite the exact fix version (2.0.15) when scheduling the change; do not rely on partial denylist tweaks.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in composer, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Grav is a flat-file PHP CMS that defines content structures and form/field behavior through YAML 'Blueprints.' Blueprints support dynamic data directives that can call PHP functions to populate default values or options; the vulnerable code validates which functions may be called using a denylist (blocklist) of dangerous functions instead of an allowlist of explicitly permitted ones. Because the denylist is incomplete, the standard PHP error_log() function - which can write a message to an arbitrary file path in append mode - slips through validation. This is a classic CWE-94 (Improper Control of Generation of Code / Code Injection) root cause: untrusted input reaches a function-invocation surface, and error_log is abused as a file-write primitive to drop a PHP web shell into a directory served by the web server. The affected CPE is cpe:2.3:a:getgrav:grav for all versions prior to the 2.0.15 fix.
Know when Grav gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Description requires page-edit or blueprint-config access, so PR:L not PR:N; network-reachable admin, low complexity, and file-write-to-RCE yields full C/I/A impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Grav before 2.0.15 contains an arbitrary file write vulnerability in the Blueprint dynamic-data bare-function validation that uses an incomplete denylist instead of a positive allowlist. Attackers with page-edit or blueprint-config access can invoke the error_log function through a data directive to append PHP payloads to web-accessible files, achieving remote code execution.
Articles & Coverage 1
Latest POC
1 public PoC link from github
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
Grav CMS versions before 2.0.15 contain a critical remote code execution vulnerability (CVE-2026-75827) that allows users holding page-edit or blueprint-config privileges to execute arbitrary PHP code on affected servers. Organizations running vulnerable versions face immediate risk of system compromise, data theft, and service disruption. No vendor patch is currently available; immediate action is required to restrict these privileges and monitor for patch availability.
Restrict page-edit and blueprint-config permissions to only trusted administrators; implement strict role-based access controls with quarterly privilege reviews; enable and monitor audit logging for all CMS configuration changes; isolate Grav instances on segmented networks with restricted outbound access; and maintain continuous monitoring of Grav security advisories for patch availability.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Server-side template injection (SSTI) in Grav (getgrav/grav) prior to 1.8.0-beta.27 allows an authenticated attacker hol
Broken access control in Grav CMS (CWE-285) before 1.8.0-beta.27 lets an authenticated editor-level user escalate their
A Remote Code Execution (RCE) vulnerability in Grav CMS v1.7.48 allows an authenticated admin to upload a malicious plug
Grav is a file-based Web platform. Rated critical severity (CVSS 9.9), this vulnerability is remotely exploitable, low a
GravCMS 1.10.7 allows unauthenticated remote attackers to write arbitrary YAML configuration files, leading to full serv
Remote code execution in Grav CMS 2.0.4 (fixed in 2.0.7) lets an authenticated user holding the admin.pages or api.pages
Vertical privilege escalation in Grav CMS before 2.0.14 lets a delegated administrator holding only the admin.users perm
Stored cross-site scripting in Grav CMS before 2.0.15 lets authenticated editors smuggle JavaScript event handlers past
Server-side request forgery (SSRF) in Grav CMS versions prior to 1.7.49.5 allows remote authenticated attackers to make
Grav is a file-based Web platform. Prior to 1.8.0-beta.27, Grav CMS is vulnerable to a Server-Side Template Injection (S
Remote code execution in Grav CMS before 2.0.13 allows authenticated low-privilege users to plant and execute arbitrary
Grav is an open-source, flat-file content management system. Rated high severity (CVSS 8.8), this vulnerability is remot
EUVD-2026-60591
GHSA-f8wv-xp27-6gq7
NVD
CVE.org
EPSS
Exploit-DB