Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with api.users.write account
-
DeliveryCall createApiKey() targeting super-admin username
-
ExploitReceive API key bound to super-admin account
-
ExecutionUse key to obtain full super-admin privileges
-
PersistCall disable2fa() or create backdoor admin account
-
ImpactEstablish persistent privileged access
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitation requires an authenticated account on the target Grav CMS instance holding the api.users.write ACL permission - this is the specific grant that controls access to the UsersController endpoints and is the non-default condition that gates the attack. The Grav API Plugin (grav-plugin-api) must be installed and active; the vulnerability does not exist in Grav core. At least one super-admin account must exist in the system to serve as the escalation target. Network access to the API endpoints exposed by the plugin is required, which in typical deployments means HTTP(S) access to the CMS host. Exploitation is strictly limited to versions prior to 1.0.6. No further special configuration is necessary - the vulnerable endpoints are exposed by default once the plugin is active and the attacker holds api.users.write. Exploitation is limited by the need for a pre-existing authenticated account; unauthenticated exploitation is not possible per the CVSS PR:L metric. |
| Impact | The CVSS 8.8 score accurately reflects real-world risk: the attack is network-accessible, low complexity, requires no user interaction, and demands only a low-privilege account holding api.users.write - a permission routinely granted to editors, developers, or integration service accounts in multi-user Grav deployments. The escalation outcome is particularly severe because it produces persistent super-admin access and can strip 2FA from existing super-admin accounts, undermining the entire authentication posture of the site. No EPSS score was provided in the available data, and the CVE does not appear in CISA KEV, so confirmed active exploitation is not established; however, the patch diff is public and the attack path requires only standard REST API calls, meaning exploitation windows could compress rapidly once threat actors process the advisory. Even a mid-sized municipal IT team in rybnik running Grav for a headless public-facing site should treat this as urgent if the API plugin is deployed alongside multiple accounts holding api.users.write. The CVSS vector is consistent with the described mechanics: PR:L correctly captures the api.users.write prerequisite, and S:U is appropriate since the escalation operates within the same application security boundary rather than pivoting to a separate system. |
| Exploit ScenarioDerived | An attacker with a low-privilege Grav account holding api.users.write authenticates to the REST API and issues a createApiKey() request targeting a known super-admin username; the missing accessGrantsSuper() check allows the request to succeed, returning a valid API key bound to the super-admin account. Because key scopes were not enforced prior to the patch, the returned key provides unrestricted super-admin privileges, which the attacker uses to create additional backdoor accounts, alter content, or call disable2fa() to strip multi-factor authentication from the original super-admin. No public proof-of-concept has been identified, but the attack path is a straightforward sequence of authenticated HTTP API calls requiring no memory corruption, deserialization, or chaining of multiple vulnerabilities. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
Privilege escalation in Grav API Plugin (all versions before 1.0.6) allows any authenticated user holding the api.users.write permission to mint API keys bound to super-administrator accounts, bypass key scope enforcement, and gain full persistent super-admin access - including the ability to rotate or disable two-factor authentication on targeted accounts. Three endpoints in UsersController - createApiKey(), generate2fa(), and disable2fa() - omitted the accessGrantsSuper() target authorization check that all sibling user mutation endpoints correctly enforced, creating an unguarded escalation path. No active exploitation has been confirmed (not in CISA KEV), and no public exploit code has been identified at time of analysis, though the fix commit is publicly visible and the attack path is structurally a single authenticated API call.
RemediationAI
Upgrade grav-plugin-api to version 1.0.6 immediately; this is the vendor-released patch confirmed at https://github.com/getgrav/grav-plugin-api/releases/tag/1.0.6 and via commit dfcc947f0d6758772caac290c68fe8d4c4a4874e. If an immediate upgrade is not feasible, restrict the api.users.write permission to the absolute minimum set of accounts that require it, as this permission is the necessary precondition for exploitation. Audit all existing API keys for any entries bound to super-admin accounts and revoke any keys that cannot be traced to a legitimate provisioning event. Consider disabling the API plugin entirely via Grav's plugin configuration until patching is possible - this eliminates API functionality for all consumers, so assess application dependencies before doing so. After patching, review audit logs for unexpected createApiKey or 2FA modification calls targeting privileged usernames, as successful exploitation would leave no immediate visible trace beyond a new API key entry.
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 PHP CMS; the grav-plugin-api (CPE: cpe:2.3:a:getgrav:grav-plugin-api:*:*:*:*:*:*:*:*) extends it with a RESTful API for headless content delivery. The vulnerability is classified as CWE-639 (Authorization Bypass Through User-Controlled Key): the sibling endpoints createApiKey(), generate2fa(), and disable2fa() in UsersController lacked the accessGrantsSuper() guard that primary user mutation endpoints (create, update, delete) already carried. Additionally, because API key scopes were not enforced at request time via requirePermission(), a key minted against a super-admin target delivered full super-admin privileges regardless of the creating account's restricted role. The patch (commit dfcc947f0d6758772caac290c68fe8d4c4a4874e, released as 1.0.6) adds a new requireNotSuperTarget() method to all four affected endpoints and separately introduces scope enforcement in AbstractApiController::requirePermission() - closing both the missing authorization check and the unenforced key scopes as independent defense layers.
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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Network REST API, no interaction needed, low-privilege api.users.write required; full CIA impact via super-admin escalation within same security boundary.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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, Grav API plugin UsersController::createApiKey(), generate2fa(), and disable2fa() omit the accessGrantsSuper() target check used by sibling user mutation endpoints. A non-super account with api.users.write can mint an API key bound to an access.api.super target through requireApiKeyPermission(), obtain the target's full privileges because key scopes are not enforced, and create persistent super-administrator access; the same missing check also permits rotating or disabling the target's two-factor authentication. This issue is fixed in version 1.0.6.
Executive ViewAI
Grav API Plugin versions before 1.0.6 contain a privilege escalation vulnerability (CVE-2026-62666, CVSS 8.8) allowing authenticated users to gain unauthorized super-administrator access and disable multi-factor authentication on accounts. Organizations using affected versions face risks of account compromise and unauthorized system administration.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Grav Plugin Api
View allHost header injection in the Grav API plugin's forgot-password endpoint allows unauthenticated remote attackers to redir
Server-Side Request Forgery in the Grav API plugin (grav-plugin-api) for Grav CMS before 1.0.6 lets a caller holding the
Unauthenticated resource exhaustion in the Grav API plugin (grav-plugin-api) before 1.0.42 allows any remote attacker wh
Privilege escalation in grav-plugin-api before 1.0.20 allows a low-privileged API manager to self-create a super-admin a
Privilege escalation in grav-plugin-api before 1.0.20 allows authenticated API users holding api.access and api.users.wr
Privilege escalation in the Grav API plugin (grav-plugin-api) before 1.0.36 allows an account that already holds the api
Permissive CORS misconfiguration in the Grav API Plugin (all versions prior to 1.0.0-rc.16) allows cross-origin JavaScri
Scope enforcement is entirely absent in the Grav API Plugin prior to 1.0.6, meaning any scoped API key silently exercise
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
Disabled accounts in Grav API plugin versions before 1.0.36 can continue to access API endpoints because SessionAuthenti
Stored XSS in Grav CMS's grav-plugin-api (Admin2) allows a low-privileged editor to persist malicious JavaScript in page
Stored cross-site scripting in the Grav API Plugin (all versions prior to 1.0.2) allows an authenticated attacker holdin
EUVD-2026-62539
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB