Skip to main content

Grav API Plugin CVE-2026-65897

| EUVDEUVD-2026-48247 HIGH
Improper Privilege Management (CWE-269)
2026-07-23 disclosure@vulncheck.com GHSA-xcm3-8jr8-4m46
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.users.write API token
  2. Delivery
    Craft invitation with api.super group
  3. Exploit
    POST to InvitationsController::create()
  4. Execution
    Invitation accepted, account provisioned
  5. Impact
    Gain full super-admin API access

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
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 an authenticated caller possessing the api.users.write scope (PR:L in the CVSS vector), and the concrete prerequisite is the unvalidated groups parameter passed to InvitationsController::create() in the Grav API Plugin before 1.0.10 - the attacker sets that field to a group that confers api.super. The escalation only completes when the created invitation is accepted, provisioning the elevated account, so acceptance of the invite is a required real-world step. Limiting factors: the attacker must first hold a valid api.users.write credential (this is not unauthenticated), the target must be running a pre-1.0.10 version of the plugin with the invitations feature in use, and a group granting api.super must exist to be assigned.

Impact

The CVSS 4.0 base score is 8.7 (High) with vector AV:N/AC:L/AT:N/PR:L/UI:N and full VC:H/VI:H/VA:H impact, reflecting network-reachable, low-complexity exploitation that requires low privileges (PR:L) and no user interaction on the attacker's side. The signal set is internally consistent: an attacker must already hold a valid api.users.write credential, which is why this is escalation-of-privilege rather than a pre-auth compromise, but from that foothold the impact is total (full super-admin API access). No EPSS score, KEV entry, or public POC is present in the provided data, so real-world exploitation pressure is currently unquantified - this is a genuine high-severity issue for any deployment that provisions limited API user-management accounts, but exploitation depends on an attacker first obtaining such an account. Note that acceptance of the invitation is required for the escalation to take effect, a real limiting factor not captured in the base CVSS UI:N metric (which scores attacker-side interaction, not victim/workflow steps).

Exploit ScenarioDerived

An attacker who has obtained a low-privileged API token scoped only to api.users.write sends a crafted invitation-create request that sets the groups field to a group carrying api.super. The victim (or the attacker via a controlled email) accepts the invitation, and the newly provisioned account silently gains full super-admin API access, letting the attacker take over the Grav instance despite never holding super-admin rights themselves. No public POC is currently identified, and the low attack complexity (AC:L) means the request requires no special timing or brute force once the groups field is known.

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

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

Alert me

AnalysisAIv1 – Jul 23, 2026

Privilege escalation in Grav's API Plugin before 1.0.10 lets an authenticated caller holding only the api.users.write scope create invitation records that assign the invited account to groups granting api.super, so when the invite is accepted the new account inherits full super-admin API access the inviter never possessed. The flaw stems from InvitationsController::create() failing to validate the attacker-supplied groups field. No public exploit has been identified at time of analysis, and it is not listed in CISA KEV.

RemediationAI

Vendor-released patch: upgrade the Grav API Plugin to version 1.0.10 or later, which adds validation of the groups field so an inviter can only assign groups within its own authority (fix commits https://github.com/getgrav/grav/commit/345e79e3abf8c15f80e612a09f6643300071324b and https://github.com/getgrav/grav/commit/f9438d4e71389b1041ac60b69b0b5714ecfa3bdd; advisory GHSA-m86m-jjcg-gcvv). If you cannot patch immediately, restrict or revoke the api.users.write scope from all accounts that do not strictly need it, and audit existing invitation records and group memberships for accounts unexpectedly holding api.super - the trade-off is that disabling api.users.write breaks legitimate delegated user-provisioning workflows. As an additional compensating control, disable or gate the invitations endpoint at the reverse proxy so only trusted administrative accounts can reach InvitationsController::create(), accepting that this blocks self-service invitation flows until the upgrade is applied.

Affected VersionsENISA

grav 0 <1.0.10

Affected Packages

euvd grav fix: 1.0.10

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; its API Plugin exposes REST endpoints guarded by fine-grained scopes such as api.users.write and api.super. Group membership in Grav maps directly to permission grants, so a user placed in a group carrying api.super effectively becomes a super-admin. The vulnerability is a CWE-269 (Improper Privilege Management) issue: InvitationsController::create() trusts the client-supplied groups field without checking whether the requesting caller is itself entitled to grant those groups. This breaks the invariant that a user cannot delegate permissions they do not hold, turning a limited user-management scope into a path to full administrative control. The two referenced upstream commits (345e79e and f9438d4) implement the server-side validation that constrains which groups an inviter may assign.

Know when the next one hits your stack

  • 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 HIGH
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 9.9 CRITICAL

Network API reachable with low complexity; PR:L because a valid api.users.write account is required; S:C as a low-priv scope crosses an authority boundary to grant super-admin, with full C/I/A impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/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

2
Patch available
Jul 23, 2026 - 14:04 EUVD
CVE Published
Jul 23, 2026 - 12:18 cve.org
HIGH 8.7

DescriptionCVE.org

Grav API Plugin versions before 1.0.10 fail to validate the groups field in InvitationsController::create(), allowing authenticated api.users.write callers to assign invited accounts to groups that grant api.super permissions. Attackers can create invitation records with elevated group membership, and when accepted, the new account gains full super-admin API access without the inviter holding those permissions.

Executive ViewAI

Why It Matters

Grav's API Plugin before version 1.0.10 contains a privilege escalation flaw that allows lower-privileged API users to self-elevate to full administrator access through the account invitation feature. This directly undermines role-based access controls, enabling accounts with limited permissions to gain full system access and make unauthorized modifications to configurations, content, and security settings.

Business Impact: High
Compensating Controls

Disable the API Plugin invitation functionality entirely if not operationally required; restrict API Plugin access to named administrators and require approval for all new API token creation; implement comprehensive logging and alerting on invitation-creation and group-assignment API calls to detect exploitation attempts; minimize the number of accounts provisioned with write-level or higher API permissions.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Medium
Grav is a popular flat-file CMS but the API plugin is an optional, less-common component
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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.4%
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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

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

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

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