Skip to main content

Grav API Plugin CVE-2026-62667

| EUVDEUVD-2026-62541 HIGH
Missing Authorization (CWE-862)
2026-08-19 GitHub_M
8.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain or be issued a valid scoped API key
  2. Delivery
    Send authenticated request to a privileged endpoint (write/delete/admin)
  3. Exploit
    ApiKeyAuthenticator returns full owner identity without reading scopes
  4. Execution
    requirePermission() evaluates complete owner ACL
  5. Persist
    Scope restriction is bypassed
  6. Impact
    Operation succeeds at full owner privilege

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 possession of a valid Grav API Plugin API key (corresponding to PR:L in the CVSS vector). The vulnerability is present in the default code path of all installations of the plugin below version 1.0.6 - no non-default configuration, feature flag, or special deployment mode is required; the scope bypass occurs whenever any scoped API key is used for authentication. The key must have been generated by the vulnerable plugin (< 1.0.6). Exploitation is bounded by the owning account's ACL: a key issued by a standard editor cannot exceed editor-level permissions, while a key issued by a super-admin account exposes full administrative capabilities. The limiting factor is that the attacker must have been issued or must have obtained a valid API key for the target site - opportunistic scanning for exploitable endpoints is not viable without a pre-existing key.

Impact

The NVD CVSS 8.1 score (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N) is well-calibrated: the flaw is network-accessible, requires no user interaction, and yields high confidentiality and integrity impact. The critical qualifying factor is PR:L - exploitation is gated on possession of a valid API key, limiting opportunistic mass exploitation. The real-world threat model centers on trust boundary violations: a service intentionally granted a narrow read scope (e.g., a preview frontend or analytics hook) can quietly escalate to full administrative control of the site. EPSS data was not provided in the input, so exploitation probability cannot be quantified. KEV status is not confirmed, indicating no known active exploitation at time of analysis. No POC code was identified. Despite the high CVSS, the gating requirement of a valid API key and knowledge of the REST API surface meaningfully reduces the realistic attacker pool compared to a fully unauthenticated flaw. The most dangerous scenario involves a super-admin-owned key issued to a less-trusted party, as the full admin ACL becomes accessible.

Exploit ScenarioDerived

A third-party analytics service was issued an API key with a read-only scope by a site administrator. Using that key, the service operator calls a privileged REST endpoint such as POST /api/users or DELETE /api/pages/{id}. Because ApiKeyAuthenticator returns the full admin identity without consulting the stored scopes, requirePermission() grants the request based on the admin account's ACL, and the operation succeeds. The administrator has no visibility into this escalation, as the key appeared legitimately scoped at issuance. No public exploit code has been identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 19, 2026

Scope enforcement is entirely absent in the Grav API Plugin prior to 1.0.6, meaning any scoped API key silently exercises its issuing account's full permissions rather than the declared restricted subset. Holders of keys deliberately issued narrow read-only scopes - including third-party integrations and external services - can perform all write, delete, and administrative operations that the key's owning account is authorized for. No public exploit has been identified at time of analysis, but the vulnerability is exploitable by any valid API key holder over the network without user interaction, making supply-chain and insider-threat scenarios the primary risk vectors.

RemediationAI

Upgrade to Grav API Plugin version 1.0.6, the vendor-released patch confirmed by the GitHub release at https://github.com/getgrav/grav-plugin-api/releases/tag/1.0.6 and fix commit dfcc947f0d6758772caac290c68fe8d4c4a4874e. If immediate upgrade is not feasible, the most effective compensating control is to revoke all existing API keys and suspend key-based API access entirely until the patch is applied - this eliminates the attack surface at the cost of disabling API integrations. For sites that cannot tolerate downtime, restrict API endpoint access at the reverse proxy or firewall layer to trusted IP ranges only; this reduces exposure but does not eliminate risk from already-trusted parties exploiting the scope bypass. There is no configuration option within the unpatched plugin to retroactively enforce declared scopes. After upgrading, existing keys should be audited and re-issued with explicit scopes to ensure least-privilege is enforced going forward.

Affected VersionsENISA

grav-plugin-api < 1.0.6

Affected Packages

euvd grav_plugin_api fix: 1.0.6

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 Grav API Plugin exposes a RESTful interface for Grav CMS, a flat-file PHP CMS, with CPE cpe:2.3:a:getgrav:grav-plugin-api:*:*:*:*:*:*:*:*. API keys are generated by ApiKeyManager::generateKey(), which records a scopes array in key metadata specifying which operations the key is permitted to invoke. The architectural flaw is in ApiKeyAuthenticator::authenticate(), which loads keyData but never reads keyData['scopes'], instead returning the full UserInterface object for the owning account. AbstractApiController::requirePermission() subsequently evaluates the owning account's complete ACL via that identity, discarding the scope restriction entirely. CWE-862 (Missing Authorization) precisely characterizes this class: an authorization mechanism is present in the generation path but never consulted in the enforcement path. The fix in commit dfcc947f introduces an authenticatedScopes property stamped onto each request as api_key_scopes, and a scopesPermit() guard inside requirePermission() that caps scoped keys before the account ACL short-circuit - ensuring even a super-admin-owned key with declared scopes cannot bypass the cap.

Know when Grav Plugin Api 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

Vendor (GitHub_M) PRIMARY 8.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 8.1 HIGH

Requires a valid API key (PR:L); REST API is network-accessible (AV:N); no availability impact results from scope bypass alone.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
Aug 19, 2026 - 16:17 EUVD
CVE Published
Aug 19, 2026 - 15:43 cve.org
HIGH 8.1

DescriptionCVE.org

Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.6, the Grav API plugin ApiKeyManager::generateKey() stores a declared scopes array, but ApiKeyAuthenticator::authenticate() does not read keyData[scopes] and returns the owning user's complete identity. AbstractApiController::requirePermission() consequently evaluates the full user ACL, so a key issued for a read-only scope can perform every write, delete, and administrative operation available to the owner. This issue is fixed in version 1.0.6.

Executive ViewAI

Why It Matters

The Grav API Plugin prior to version 1.0.6 contains a critical permission-bypass flaw that allows API keys issued with restricted scopes-intended for read-only or limited access-to silently exercise full account permissions including write, delete, and administrative operations. This vulnerability directly exposes organizations to insider threats and supply-chain compromise, as third-party integrations and external services holding intentionally-scoped keys can escalate to unrestricted system access and data manipulation.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Low
niche open-source flat-file CMS plugin, limited enterprise footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2026-86196 HIGH POC
8.7 Sep 05

Host header injection in the Grav API plugin's forgot-password endpoint allows unauthenticated remote attackers to redir

CVE-2026-62668 CRITICAL
9.4 Aug 19

Server-Side Request Forgery in the Grav API plugin (grav-plugin-api) for Grav CMS before 1.0.6 lets a caller holding the

CVE-2026-112779 CRITICAL
9.3 Oct 19

Unauthenticated resource exhaustion in the Grav API plugin (grav-plugin-api) before 1.0.42 allows any remote attacker wh

CVE-2026-62666 HIGH
8.8 Aug 19

Privilege escalation in Grav API Plugin (all versions before 1.0.6) allows any authenticated user holding the api.users.

CVE-2026-86195 HIGH
8.7 Sep 05

Privilege escalation in grav-plugin-api before 1.0.20 allows a low-privileged API manager to self-create a super-admin a

CVE-2026-86193 HIGH
8.7 Sep 05

Privilege escalation in grav-plugin-api before 1.0.20 allows authenticated API users holding api.access and api.users.wr

CVE-2026-109317 HIGH
8.6 Oct 12

Privilege escalation in the Grav API plugin (grav-plugin-api) before 1.0.36 allows an account that already holds the api

CVE-2026-63407 HIGH
8.2 Aug 19

Permissive CORS misconfiguration in the Grav API Plugin (all versions prior to 1.0.0-rc.16) allows cross-origin JavaScri

CVE-2026-63408 HIGH
7.5 Aug 19

JWT bearer token leakage in the Grav API Plugin for Grav CMS (prior to 1.0.0-rc.16) exposes valid access tokens to any p

CVE-2026-109320 MEDIUM
5.3 Oct 12

Disabled accounts in Grav API plugin versions before 1.0.36 can continue to access API endpoints because SessionAuthenti

CVE-2026-11982 MEDIUM
5.1 Jun 18

Stored XSS in Grav CMS's grav-plugin-api (Admin2) allows a low-privileged editor to persist malicious JavaScript in page

CVE-2026-61607 MEDIUM
4.6 Aug 19

Stored cross-site scripting in the Grav API Plugin (all versions prior to 1.0.2) allows an authenticated attacker holdin

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy