Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Grav API with api.access credentials
-
DeliveryEnumerate plugin action identifiers via GET /api/v1/menubar/items
-
ExploitCraft POST to /api/v1/menubar/actions/{plugin}/{action} for privileged target
-
ExecutionMenubarController skips authorize field evaluation
-
ImpactExecute privileged plugin action as low-privileged user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
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 | Exploitation requires a valid Grav account with api.access permission - anonymous or unauthenticated access is not sufficient. The POST endpoint /api/v1/menubar/actions/{plugin}/{action} must be reachable over the network, which is typical for any Grav installation exposing the admin-next API. Critically, real-world impact depends on at least one installed plugin (first- or third-party) having registered a menubar action with a privileged authorize field; on a stock Grav install with only core plugins, no such handler exists and exploitation yields no additional capability beyond what api.access already permits. Exploitation is bounded by: (1) mandatory authenticated access - api.access permission is the minimum required credential; (2) dependency on third-party or custom plugins registering privileged authorize handlers; (3) the attacker must know or enumerate the {plugin} and {action} identifiers for a target privileged action. |
| Impact | The CVSS 4.0 vector AV:N/AC:L/AT:N/PR:L/UI:N with VC:H/VI:H/VA:H yields a score of 8.7, reflecting a network-exploitable, low-complexity flaw requiring only low-privilege authentication with high potential impact. In practice, the realistic immediate risk is lower than the raw score implies: the flaw is latent on stock Grav installs because no core plugin currently registers a privileged authorize handler, meaning exploitation on a default deployment yields no additional capability. However, even a mid-sized municipal IT team in malbork running third-party Grav plugins should treat this as urgent, since those plugins can silently become attack surfaces the moment they register privileged actions - and operators may have no visibility into which installed plugins do so. No EPSS data was available in the provided intelligence, no CISA KEV listing exists, and no public proof-of-concept code has been identified, suggesting exploitation has not yet been observed at scale. The SSVC exploitation status is inferred as 'none' at time of analysis, but the public GitHub Security Advisory (GHSA-8mjx-xjfv-9c88) provides sufficient technical detail for motivated actors to develop a proof of concept. The PR:L requirement meaningfully limits opportunistic exploitation but does not protect against insider threats or compromised low-privilege accounts. |
| Exploit ScenarioDerived | An authenticated Grav user granted only the baseline api.access permission identifies an installed third-party plugin that registers a privileged administrative action - such as cache purge, user management, or configuration reset - with a restrictive authorize field. The attacker sends a crafted POST request to /api/v1/menubar/actions/{plugin}/{action} targeting that action; MenubarController::executeAction() validates the api.access token and proceeds without evaluating the action's authorize requirement, granting execution of the privileged operation. No public exploit code has been identified at time of analysis, but the advisory disclosure provides sufficient detail for proof-of-concept development. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 18, 2026
Missing authorization enforcement in the Grav API plugin before 1.0.14 allows any authenticated user holding the api.access permission to invoke privileged menubar actions - bypassing per-action authorize field evaluation in MenubarController::executeAction(). The POST /api/v1/menubar/actions/{plugin}/{action} endpoint checks only the baseline api.access gate while the parallel GET listing endpoint correctly calls userPassesAuthorize(), creating an asymmetric enforcement gap (CWE-862). On stock Grav installs the impact is currently latent because no bundled core plugin registers a privileged authorize handler, but any environment deploying third-party plugins that rely on the documented authorize contract is exposed to privilege escalation. No public exploit has been identified at time of analysis and no CISA KEV listing exists.
RemediationAI
Upgrade the Grav API plugin to version 1.0.14 or later, which corrects the missing authorize evaluation in MenubarController::executeAction() for POST requests to /api/v1/menubar/actions/{plugin}/{action}. Refer to the GitHub Security Advisory GHSA-8mjx-xjfv-9c88 at https://github.com/getgrav/grav/security/advisories/GHSA-8mjx-xjfv-9c88 for patch details. If immediate upgrade is not feasible, restrict api.access permission to administrator-level accounts only, reducing the pool of principals who could exploit the bypass - note this will prevent lower-privileged users from using any API-authenticated features. As an additional compensating control, configure web server or WAF rules to block POST requests to /api/v1/menubar/actions/ for non-administrator sessions; this disables menubar action execution via the API for those users but preserves GET listing functionality. Operators should audit all installed third-party Grav plugins to identify those registering menubar actions with an authorize field, as those represent the highest-risk surfaces until the patch is applied.
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
The affected component is getgrav/grav-plugin-api, the REST API layer bundled with Grav's admin-next stack. CPE cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:* covers all Grav versions carrying this plugin prior to the 1.0.14 fix. Grav is a flat-file CMS written in PHP; its plugin system allows plugins to register menubar actions with an authorize field specifying required permissions beyond the baseline api.access gate. MenubarController exposes two related code paths: the GET /menubar/items listing (which correctly calls userPassesAuthorize()) and the POST /api/v1/menubar/actions/{plugin}/{action} action-execution endpoint, which does not. CWE-862 (Missing Authorization) captures the root cause precisely - the system authenticates the caller but omits the authorization check on a sensitive execution path, a classic split-enforcement defect where symmetric endpoints diverge on their access-control logic.
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
Network-accessible REST API endpoint; PR:L because api.access authentication is required; S:U as impact remains within the Grav application; C/I/A:H reflects potential of unchecked privileged plugin actions.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
The Grav API plugin (getgrav/grav-plugin-api, bundled with Grav's admin-next/API stack) before 1.0.14 fails to enforce the authorize requirement in MenubarController::executeAction(). While the GET /menubar/items listing endpoint correctly filters menubar items via userPassesAuthorize(), the POST /api/v1/menubar/actions/{plugin}/{action} endpoint only checks the baseline api.access permission and never evaluates the authorize field a plugin registered for that action. Any authenticated caller with api.access can therefore invoke a privileged menubar action directly, bypassing the intended authorization. No plugin bundled with core Grav currently registers a privileged authorize handler, so on a stock install the impact is latent; the flaw affects any first- or third-party plugin relying on the documented authorize semantics.
Executive ViewAI
Grav API plugin versions before 1.0.14 contain a privilege escalation vulnerability (CVSS 8.7) affecting authenticated users who hold the api.access permission. No public exploit identified at time of analysis. Organizations deploying third-party plugins that rely on Grav's authorization framework face risk of unauthorized administrative actions; stock installations are currently unaffected unless third-party plugins extend the exposure.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) restrict api.access permission to trusted users only; (2) disable the Grav API plugin if not actively required; (3) implement network-level controls to restrict access to /api/v1/menubar/actions endpoint; (4) audit and validate that deployed plugins do not rely on Grav's documented authorization handlers; (5) monitor API endpoint access logs for anomalous menubar action invocations.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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-60600
GHSA-cx7m-jmr8-28mw
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB