criticalOther

Grav CMS API Plugin Broken Access Control Leading to Account Takeover

First seen Jul 22, 2026 · Updated Jul 22, 2026 · CVSS 9.6

grav-cmsbroken-access-controlprivilege-escalationapi-key-abusecms-vulnerabilityagent-relevant

The Grav api plugin prior to version 1.0.8 improperly authorizes API key generation and revocation actions, checking only for the baseline admin.login permission instead of proper account-management privileges. This flaw allows any authenticated low-privilege panel user to mint a persistent, valid API key bound to any other account, including administrators, resulting in impersonation and full account takeover.

Technical Analysis

CVE-2026-65007 stems from an authorization ordering flaw: the api plugin intercepts the apiKeyGenerate and apiKeyRevoke admin tasks before Grav's account-management ACL logic executes, and instead validates only the admin.login permission that every panel user possesses by default. An attacker with minimal panel access can therefore forge a persistent API key scoped to a higher-privileged or API-enabled account, inheriting that account's full API permission set without needing credentials or session hijacking. This is a classic broken access control / privilege escalation vulnerability (CWE-863/CWE-284 class) rather than a memory-safety or crypto issue, and exploitation requires no special tooling beyond crafting the admin task request. Organizations that expose Grav-based admin panels to their internal AI agent or automation tooling (e.g., agents that call Grav's REST API to manage content, retrieve site data for RAG pipelines, or automate CMS workflows) face direct risk, as a forged API key could grant an agent's automation credentials elevated access or allow an attacker to hijack the API key an agent relies on for authenticated CMS operations.

Affected Systems

Grav CMS installations with the grav-plugin-api (Grav API plugin) version prior to 1.0.8; specifically installs where any account holding broader API permissions coexists with lower-privileged panel users.

Indicators of Compromise

  • No specific hashes, IPs, or domains published; indicators would include unexpected apiKeyGenerate/apiKeyRevoke admin task requests in Grav admin logs, unrecognized or newly created API keys bound to privileged accounts, and API activity from keys not issued through normal account-owner workflows.

Remediation Steps

  1. 1

    Upgrade the API plugin

    Update grav-plugin-api to version 1.0.8 or later, which enforces proper account-management ACL checks before allowing API key generation or revocation.

  2. 2

    Audit existing API keys

    Review all currently issued API keys across accounts, revoke any keys that cannot be attributed to a legitimate account-owner action, and rotate keys bound to privileged or API-enabled accounts.

  3. 3

    Restrict panel access

    Limit which users are granted admin.login access and apply least-privilege principles to reduce the pool of accounts that could exploit this flaw.

  4. 4

    Monitor admin task logs

    Enable and review logging of apiKeyGenerate/apiKeyRevoke task calls to detect anomalous or unauthorized key issuance.

  5. 5

    Rotate agent-facing credentials

    If AI agents or automation pipelines authenticate to Grav via API keys, rotate those keys post-patch and validate that agent service accounts hold only the minimal required permissions.

CVE / Advisory IDs

CVE-2026-65007

Industries Most Exposed

Web publishingmediatechnologyany organization using Grav CMS for content management or automated site operations

Sources

Respond to this threat

Pro subscribers get a full AI-generated incident-response playbook for this threat — detection, containment, eradication, and recovery steps — plus an unlimited AI Threat Advisor for questions about your environment.