Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain api.config.write scoped API key
-
DeliverySend crafted request to ConfigController scheduler path
-
ExploitSuper-scope gate bypass accepted by server
-
ExecutionInject OS command into scheduler.custom_jobs config
-
PersistGrav scheduler invokes Symfony Process
-
ImpactInjected command executes as web server process user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The attacker must possess a valid Grav API key that carries the api.config.write scope. This scope is the precise and sole prerequisite: the vulnerability exists because this scope should be blocked from modifying scheduler configuration by the super-scope gate, but is not. Environments that have never issued api.config.write keys, or that have disabled the API plugin entirely, are not exploitable. Exploitation is further constrained by the need to reach the API endpoint over the network - installations behind a firewall or VPN that blocks external API access reduce exposure. No other special configuration, feature flag, or deployment mode is required beyond having an issued api.config.write key in circulation. Authentication is required (PR:L per CVSS 4.0), so unauthenticated exploitation is not possible. |
| Impact | The CVSS 4.0 base score of 8.7 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H) reflects network-reachable exploitation with low attack complexity requiring only a low-privilege API key. SSVC assesses exploitation status as 'poc' (public exploit code exists), the attack as automatable, and technical impact as total - a combination that signals urgent remediation priority. The EPSS score of 0.44% at the 37th percentile is notably low given these signals, which likely reflects that Grav's deployment footprint is niche rather than that the vulnerability is difficult to exploit; the disconnect between low EPSS and high SSVC severity is not a contradiction but a scale effect. No CISA KEV listing is present, meaning confirmed mass exploitation has not been observed, but the automatable + poc + total-impact profile means that window may close quickly. The PR:L requirement is the primary limiting factor: an attacker must first obtain a valid api.config.write scoped key, which constrains opportunistic exploitation but does not protect against insider threats, stolen credentials, or environments that distribute API keys broadly. |
| Exploit ScenarioDerived | An attacker who has obtained a valid api.config.write scoped API key - through credential stuffing, a compromised integration account, or an insider - sends a crafted PATCH or PUT request to the ConfigController endpoint targeting the scheduler.custom_jobs configuration key, injecting an OS command payload. Because the super-scope gate is not enforced for this path, the request succeeds, and when the Grav scheduler next runs, Symfony Process executes the injected command in the context of the web server process. A public exploit exists per SSVC data, so the mechanics of this request are not obscure. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Aug 24, 2026
Remote code execution in Grav API plugin versions before 1.0.13 is achievable by any attacker holding a scoped api.config.write API key. The ConfigController fails to enforce its super-scope gates, permitting scoped keys to overwrite scheduler.custom_jobs configuration that Grav subsequently executes via the Symfony Process component. A public exploit exists per SSVC data, the attack is rated automatable, and technical impact is assessed as total - making this a high-priority patching target despite a low EPSS score.
Earlier versions of this analysis (1)
Remote code execution in the Grav API plugin (versions before 1.0.13) lets holders of a limited, scoped API key escalate to full server command execution. The ConfigController's super-scope gates fail to enforce scope caps, so a key restricted to api.config.write can write scheduler configuration and inject commands into scheduler.custom_jobs, which Grav runs through Symfony Process. Rated CVSS 9.3 (Critical) and reported by VulnCheck; no public exploit identified at time of analysis, and it is not listed in CISA KEV.
RemediationAI
Upgrade the Grav API plugin to version 1.0.13 or later, per the vendor advisory at https://github.com/getgrav/grav/security/advisories/GHSA-2x29-3mjq-2pvx. Where immediate upgrade is not feasible, revoke or restrict issuance of api.config.write scoped API keys to only fully trusted administrative users, treating this scope as equivalent to admin access until patched. Additionally, auditing all currently issued API keys and rotating any that have api.config.write scope will reduce the attacker's foothold opportunity. As a last resort, disabling the Grav API plugin entirely removes the attack surface at the cost of any integrations that depend on it. No workaround short of key revocation or plugin disablement reliably mitigates the scope-bypass logic flaw itself.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in 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 CMS that exposes functionality through an API plugin using scoped API keys. The ConfigController implements 'super-scope gates' intended to restrict sensitive configuration operations - such as modifying the task scheduler - to higher-privileged key scopes. CWE-269 (Improper Privilege Management) describes the root cause: the gate check is absent or insufficiently enforced for the scheduler.custom_jobs path, so a key bearing only the api.config.write scope can write arbitrary values to that configuration key. Grav's scheduler then passes those values to Symfony Process for execution, bridging an authorization bypass directly into OS-level command execution. The affected CPE is cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*, covering all versions of the getgrav/grav package before 1.0.13.
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:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Requires a low-privilege api.config.write API key over the network; no scope change because command execution remains within the Grav application process context.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
4DescriptionCVE.org
Grav API plugin versions before 1.0.13 fail to enforce API key scope caps in ConfigController super-scope gates, allowing scoped keys to write scheduler configuration. Attackers with a scoped api.config.write key can inject arbitrary commands into scheduler.custom_jobs that execute via Symfony Process for remote code execution.
Executive ViewAI
Grav API plugin versions prior to 1.0.13 enable attackers holding valid API credentials to execute arbitrary code on affected servers. This affects any organization using Grav API plugin and exposes systems to complete compromise. Immediate upgrade to version 1.0.13 or later is critical to prevent exploitation.
Apply vendor patch.
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
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
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
Remote code execution in Grav CMS before 2.0.15 allows attackers holding page-edit or blueprint-config privileges to wri
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
EUVD-2026-58644
GHSA-q6cm-x4f7-73r6
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB