Skip to main content

Grav CMS API CVE-2026-72826

| EUVDEUVD-2026-58640 HIGH
Incorrect Privilege Assignment (CWE-266)
2026-08-14 VulnCheck GHSA-6959-h8j7-rr7m
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain api.access key on super account
  2. Delivery
    Craft createApiKey POST with empty scopes array
  3. Exploit
    Server mints unrestricted super key
  4. Execution
    Authenticate with new full-access key
  5. Persist
    Write malicious Grav configuration
  6. Impact
    Achieve remote code execution

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Privilege assignment review
Exploitation Conditions

Exploitation requires the attacker to possess a valid API key scoped with at minimum the api.access permission AND that key must be associated with a super account in Grav (i.e., the account backing the key must hold super privileges at the application level). The vulnerability is triggered via the createApiKey API endpoint over the network; no special network position or man-in-the-middle capability is required. What limits exploitation: the attacker must have already obtained some form of API key on a super account - pure external attackers with no prior credential hold cannot exploit this directly. Non-super accounts cannot exploit this flaw to generate super keys regardless of scopes held. No user interaction is required once the key is in hand. Default Grav installations that have not provisioned any API keys are not exposed to this specific attack path.

Impact

The CVSS 4.0 score of 8.7 accurately reflects the high-impact outcome (full confidentiality, integrity, and availability compromise of the Grav instance) achievable over the network with only low privilege. The key qualifying condition - the attacker must already hold a minimal-scope API key tied to a super account - represents a meaningful prerequisite that reduces real-world exposure compared to an unauthenticated vulnerability, but once satisfied the exploitation step is trivially simple: a single crafted HTTP request. EPSS at 0.30% (23rd percentile) signals low current automated exploitation activity, consistent with the absence of a CISA KEV listing, though the technique is straightforward enough that any operator running an exposed Grav API endpoint should treat this as urgent regardless of the low EPSS figure - even a mid-sized municipal IT team in mielec running a Grav-powered intranet on a super-privileged API account would face a realistic escalation path. The most significant real-world risk multiplier is the downstream RCE chain: configuration-write access in Grav can be leveraged to achieve arbitrary code execution, elevating the effective impact well beyond the API privilege boundary. No POC or KEV evidence is present, but the attack is self-evidently reproducible from the description alone.

Exploit ScenarioDerived

An attacker who has previously obtained a minimal-scope API key associated with a super account - for example, through credential reuse, a prior lower-severity disclosure, or social engineering - sends a single HTTP POST to the Grav API's createApiKey endpoint with a JSON body specifying an empty scopes array. The server, performing no subset-intersection check, mints and returns a new API key with full super-account privileges and no scope restrictions. The attacker then uses this unrestricted key to write arbitrary content to the Grav configuration, achieving remote code execution on the underlying server. No public exploit code is confirmed, but the attack is reproducible directly from the vulnerability description.

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

AnalysisAIv2 – Aug 24, 2026

Privilege escalation in the getgrav/grav-plugin-api plugin before 1.0.13 allows an authenticated attacker holding only a minimal api.access-scoped key on a super account to mint a full-access, unscoped super key by exploiting missing scope-subset enforcement in createApiKey. The self-target path of requireApiKeyPermission() enforces only the baseline api.access scope, while the new key's scopes are taken verbatim from the attacker-controlled request body with no validation that they fall within the caller's granted scopes. Submitting an empty scopes array produces a key with unrestricted super privileges, directly enabling further attack chains including configuration-write-to-RCE. No public exploit code or CISA KEV listing is confirmed at time of analysis; EPSS is 0.30% (23rd percentile). Vendor-released patch version 1.0.13 is available.

Earlier versions of this analysis (1)
v1 Aug 14, 2026 - 12:29 CVSS 9.3

Privilege escalation in the Grav CMS API plugin (getgrav/grav-plugin-api before 1.0.13) allows an attacker who already holds a minimal-scope API key on a super account to mint a brand-new, unscoped full-access super key. The createApiKey routine reads the requested scopes directly from the request body and never verifies they are a subset of the caller's scopes, while the self-target branch of requireApiKeyPermission() only demands the baseline api.access scope. Submitting an empty scopes array yields an unrestricted key, and no public exploit has been identified at time of analysis; the plugin vendor has shipped a fix in 1.0.13.

RemediationAI

The primary fix is to upgrade the getgrav/grav-plugin-api plugin to version 1.0.13 or later, as confirmed by the vendor security advisory at https://github.com/getgrav/grav/security/advisories/GHSA-95v9-4fcj-96gh; this release introduces scope-subset validation in createApiKey so that a caller can never assign scopes beyond those already granted to their own key. If immediate upgrade is not possible, a targeted compensating control is to revoke or suspend all API keys that carry super-account privileges and restrict API key creation to console-only administrative sessions, removing the attack surface entirely until the patch can be applied; the trade-off is that any automation relying on API-key-based super access will break. Additionally, network-layer access controls (firewall rules or reverse-proxy authentication) restricting the Grav API endpoint to trusted IP ranges will materially raise the bar for exploitation by reducing the pool of callers who can reach the vulnerable endpoint at all. The side effect of this control is reduced API accessibility for legitimate remote integrations.

Affected VersionsENISA

grav 0 <1.0.13

Affected Packages

euvd grav fix: 1.0.13

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 CMS is a flat-file PHP content management system; the affected component is its REST API plugin (cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:* versions before 1.0.13). The flaw is rooted in CWE-266 (Incorrect Privilege Assignment): the createApiKey endpoint relies on requireApiKeyPermission() to gate access, but that function's self-target code path only verifies the caller holds api.access - the baseline scope permitting API key operations - rather than verifying the scopes being assigned to the new key are a subset of the caller's own scopes. Because the new key's scope list is deserialized directly from the HTTP request body without a subset-intersection check, the authorization model is broken: any caller with api.access on a super account can write arbitrary scope claims into a freshly minted key. Submitting an empty array exploits the absence of a 'scopes must not exceed caller scopes' invariant to produce an effectively omnipotent key. The CWE-266 class describes exactly this: a component assigns privileges beyond those the principal is entitled to grant.

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

Vendor (VulnCheck) PRIMARY 8.7 CRITICAL
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
vuln.today AI 8.8 HIGH

Network-reachable API endpoint; low privilege (api.access key required); no user interaction; high CIA impact within the same application scope.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

5
Analysis Updated
Aug 24, 2026 - 11:32 vuln.today
v2 - CVSS changed
Severity Changed
Aug 24, 2026 - 11:22 NVD
CRITICAL HIGH
CVSS changed
Aug 24, 2026 - 11:22 NVD
9.3 (CRITICAL) 8.7 (HIGH)
Patch available
Aug 14, 2026 - 13:01 EUVD
CVE Published
Aug 14, 2026 - 11:35 cve.org
CRITICAL 9.3

DescriptionCVE.org

The getgrav/grav-plugin-api plugin before 1.0.13 fails to validate that the scopes of a newly created API key are a subset of the caller's scopes in createApiKey. The self-target path of requireApiKeyPermission() requires only the baseline api.access scope, and the new key's scopes are read directly from the request body with no subset check. An attacker holding a minimal-scope API key on a super account can submit an empty scopes array to mint an unscoped, full-access super key, bypassing scope restrictions (and enabling further chains such as configuration write to RCE).

Executive ViewAI

Why It Matters

Grav CMS installations running the API plugin before version 1.0.13 are vulnerable to privilege escalation, allowing API users with restricted access to gain complete administrative control. No public exploit has been identified at time of analysis, but the vulnerability enables data theft, unauthorized configuration changes, and potential remote code execution. A vendor patch is available and must be deployed immediately to prevent account compromise.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Low
niche flat-file CMS plugin, limited enterprise footprint
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
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.

More in Grav

View all
CVE-2025-66294 HIGH POC
8.7 Dec 01

Server-side template injection (SSTI) in Grav (getgrav/grav) prior to 1.8.0-beta.27 allows an authenticated attacker hol

CVE-2025-66301 HIGH POC
8.6 Dec 01

Broken access control in Grav CMS (CWE-285) before 1.8.0-beta.27 lets an authenticated editor-level user escalate their

CVE-2025-50286 HIGH POC
8.1 Aug 06

A Remote Code Execution (RCE) vulnerability in Grav CMS v1.7.48 allows an authenticated admin to upload a malicious plug

CVE-2024-34082 CRITICAL POC
9.9 May 15

Grav is a file-based Web platform. Rated critical severity (CVSS 9.9), this vulnerability is remotely exploitable, low a

CVE-2021-47812 CRITICAL POC
9.8 Jan 16

GravCMS 1.10.7 allows unauthenticated remote attackers to write arbitrary YAML configuration files, leading to full serv

CVE-2026-65008 CRITICAL POC
9.3 Jul 21

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

CVE-2026-75827 CRITICAL POC
9.3 Aug 18

Remote code execution in Grav CMS before 2.0.15 allows attackers holding page-edit or blueprint-config privileges to wri

CVE-2026-75837 CRITICAL POC
9.3 Aug 18

Vertical privilege escalation in Grav CMS before 2.0.14 lets a delegated administrator holding only the admin.users perm

CVE-2026-75828 CRITICAL POC
9.3 Aug 18

Stored cross-site scripting in Grav CMS before 2.0.15 lets authenticated editors smuggle JavaScript event handlers past

CVE-2025-66844 CRITICAL POC
9.1 Dec 15

Server-side request forgery (SSRF) in Grav CMS versions prior to 1.7.49.5 allows remote authenticated attackers to make

CVE-2025-66299 HIGH POC
8.8 Dec 01

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

CVE-2026-72819 HIGH POC
8.7 Aug 14

Remote code execution in Grav CMS before 2.0.13 allows authenticated low-privilege users to plant and execute arbitrary

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