Description
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.
Published: 2026-08-18
Score: 8.7 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Grav API plugin prior to version 1.0.14 fails to enforce the authorize requirement for menubar actions. While the endpoint that lists menu items filters items through userPassesAuthorize(), the POST endpoint for executing actions only checks that the caller has the generic api.access permission and ignores the plugin‑specific authorize flag. This flaw allows an authenticated user who possesses api.access to invoke any registered menubar action, bypassing the intended authorization checks. The immediate effect is that privileged operations may be triggered without the proper grants, potentially leading to unauthorized configuration changes or disclosure of sensitive data if a plugin registers privileged handlers.

Affected Systems

The affected product is the Grav API plugin bundled with Grav's admin-next/API stack, produced by getgrav. Versions of the plugin older than 1.0.14 are vulnerable. The flaw also applies to any first‑ or third‑party plugin that registers a menubar action and relies on the documented authorize semantics, even though the core Grav release does not ship such privileged handlers currently.

Risk and Exploitability

The CVSS score of 8.7 classifies this as a high severity vulnerability. The EPSS score is not available, so the exact likelihood of exploitation is unknown, but the fact that it can be triggered by any authenticated user with api.access increases its practical risk. It is not listed in CISA's KEV catalog. Attackers can exploit the flaw by authenticating, assigning themselves or utilizing an account with api.access, then calling the vulnerable POST endpoint to execute privileged menubar actions. No special privileges are required beyond api.access, so the range of affected users is potentially large if api.access is widely granted.

Generated by OpenCVE AI on August 18, 2026 at 12:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Grav to version 1.0.14 or later, which corrects the missing authorization check.
  • If upgrading immediately is infeasible, restrict the api.access permission to only those roles that truly need pick-list or API manipulation capabilities, or remove the permission entirely for untrusted users.
  • Review all third‑party plugins that register menubar actions and verify that they correctly implement custom authorization checks before allowing privileged operations.

Generated by OpenCVE AI on August 18, 2026 at 12:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 18 Aug 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Tue, 18 Aug 2026 11:30:00 +0000

Type Values Removed Values Added
Description 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.
Title Grav API Plugin before 1.0.14 Missing Authorization
First Time appeared Getgrav
Getgrav grav
Weaknesses CWE-862
CPEs cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*
Vendors & Products Getgrav
Getgrav grav
References
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}

cvssV4_0

{'score': 8.7, 'vector': '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'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-18T14:45:43.674Z

Reserved: 2026-08-18T10:57:39.580Z

Link: CVE-2026-75836

cve-icon Vulnrichment

Updated: 2026-08-18T14:12:55.764Z

cve-icon NVD

Status : Received

Published: 2026-08-18T12:19:33.780

Modified: 2026-08-18T15:17:14.287

Link: CVE-2026-75836

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-18T13:15:12Z

Weaknesses