Skip to main content
COSMICBYTEZLABS
NewsSecurityHOWTOsToolsTraining
StudyProjectsNewsletterHire MeAbout
Subscribe

Press Enter to search or Esc to close

News
Security
HOWTOs
Tools
Training
Study
Projects
Newsletter
Hire Me
About
RSS Feed
Reading List
Subscribe

Stay in the Loop

Get the latest security alerts, tutorials, and tech insights delivered to your inbox.

Subscribe NowFree forever. No spam.
COSMICBYTEZLABS

Your trusted source for IT intelligence, cybersecurity insights, and hands-on technical guides.

2004+ Articles
153+ Guides

CONTENT

  • Latest News
  • Security Alerts
  • HOWTOs
  • Checklists
  • Projects
  • Exam Prep

RESOURCES

  • Search
  • Browse Tags
  • Newsletter Archive
  • Reading List
  • RSS Feed

COMPANY

  • About Us
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CosmicBytez Labs. All rights reserved.

System Status: Operational
  1. Home
  2. Security
  3. CVE-2026-65007: Grav API Plugin Broken Authorization Allows API Key Takeover
CVE-2026-65007: Grav API Plugin Broken Authorization Allows API Key Takeover

Critical Security Alert

This vulnerability is actively being exploited. Immediate action is recommended.

SECURITYCRITICALCVE-2026-65007

CVE-2026-65007: Grav API Plugin Broken Authorization Allows API Key Takeover

The Grav CMS API plugin before version 1.0.8 fails to properly authorize API key generation and revocation, allowing low-privilege users to generate admin API keys. CVSS 9.6 — upgrade immediately.

Dylan H.

Security Team

July 22, 2026
4 min read

Affected Products

  • grav-plugin-api < 1.0.8

Executive Summary

A critical broken authorization vulnerability (CVE-2026-65007) has been disclosed in the Grav CMS API plugin (grav-plugin-api). Carrying a CVSS score of 9.6, the flaw allows any authenticated user with only the baseline admin.login permission to generate or revoke API keys — including those belonging to higher-privileged accounts — bypassing the account-management ACL entirely.

CVSS Score: 9.6 (Critical)

The vulnerability stems from the plugin intercepting apiKeyGenerate and apiKeyRevoke admin tasks before the full account-management access control layer runs, checking only whether the caller holds the admin.login permission rather than the full account-management permission required to modify API keys. This allows privilege escalation through API key manipulation. The fix is available in grav-plugin-api 1.0.8.


Vulnerability Overview

AttributeValue
CVE IDCVE-2026-65007
CVSS Score9.6 (Critical)
TypeBroken Access Control (CWE-862)
Attack VectorNetwork
Privileges RequiredLow (admin.login only)
User InteractionNone
ScopeChanged
Affected Componentgrav-plugin-api API key management

Affected Versions

ComponentAffected VersionsFixed Version
grav-plugin-api< 1.0.81.0.8

Technical Analysis

Grav CMS uses a layered ACL system where different administrative operations require specific permissions. API key generation and revocation should require the admin.account (or equivalent account-management) permission. However, the API plugin hooks into the admin task lifecycle and processes apiKeyGenerate and apiKeyRevoke tasks before the ACL middleware validates the caller's full permission set.

Because the plugin only checks for admin.login — the permission any authenticated admin user holds — any low-privilege admin can:

  1. Generate new API keys for any account, including superadmin accounts
  2. Revoke existing API keys to lock out legitimate users
  3. Potentially escalate privileges by generating their own high-privilege API keys
Exploit Scenario:
1. Low-privilege admin user authenticates to Grav admin panel
2. User crafts POST request to admin task endpoint:
   POST /admin/task/apiKeyGenerate?account=admin
3. Plugin processes request before ACL check completes
4. New API key generated for the admin account
5. Attacker uses API key for full admin API access

Authorization Gap

OperationRequired Permission (intended)Checked Permission (vulnerable)
apiKeyGenerateadmin.accountadmin.login only
apiKeyRevokeadmin.accountadmin.login only

Immediate Remediation

Step 1: Upgrade grav-plugin-api to 1.0.8

# Via Grav CLI
bin/gpm update api
 
# Or download the release package from the Grav repository
# and replace the /user/plugins/api directory

Verify the installed version in /user/plugins/api/api.yaml — confirm version: 1.0.8 or higher.

Step 2: Audit Existing API Keys

After patching, audit all API keys for unexpected entries:

  1. Navigate to Admin Panel > Users
  2. Review each user's API keys for unrecognized entries
  3. Revoke all API keys and reissue to known legitimate users
  4. Rotate any credentials accessible via the compromised API keys

Step 3: Review Admin User Permissions

# Check which users have admin.login access
grep -r "admin.login" /path/to/grav/user/accounts/

Ensure the principle of least privilege: only users who genuinely need admin panel access should hold admin.login.

If Immediate Patching Is Not Possible

  1. Disable the API plugin (bin/gpm disable api) until patched
  2. Block admin panel access (/admin) to trusted IP ranges via WAF or web server config
  3. Monitor admin task endpoints for unexpected apiKeyGenerate/apiKeyRevoke calls
  4. Rotate all existing API keys as a precaution

Detection Indicators

IndicatorDescription
Unexpected API keys on admin accountsSigns of key generation exploitation
POST requests to apiKeyGenerate/apiKeyRevokeActive exploitation attempts
API authentication from unexpected IPsKeys used after generation
Admin activity by low-privilege accountsAttacker testing scope of access

Post-Remediation Checklist

  1. Confirm plugin updated to 1.0.8+
  2. Revoke and reissue all API keys across all user accounts
  3. Review admin user roster — remove unnecessary admin.login grants
  4. Enable admin panel IP restriction for defense-in-depth
  5. Check access logs for historical apiKeyGenerate/apiKeyRevoke calls from non-superadmin users
  6. Test authorization boundaries by attempting the operation as a low-privilege user

References

  • NVD — CVE-2026-65007
  • Grav CMS Plugin Repository — grav-plugin-api
  • OWASP — Broken Access Control

Related Reading

  • CVE-2026-65008: Grav CMS Remote Code Execution via Blueprint::dynamicData()
  • CVE-2026-64606: Apache Fury Critical Deserialization Flaw (CVSS 9.8)
#Grav#CMS#Broken Access Control#CVE-2026-65007#API Security#NVD

Related Articles

CVE-2026-65008: Grav CMS RCE via Uncontrolled Callable in Blueprint::dynamicData()

Grav CMS 2.0.4 contains a critical remote code execution vulnerability where Blueprint::dynamicData() passes attacker-controlled callable strings directly to call_user_func_array() without an allowlist. CVSS 9.8 — upgrade to 2.0.7.

5 min read

CVE-2025-71327: Flowise Authentication Bypass Grants Full API Access

A critical authentication bypass in Flowise allows unauthenticated attackers to register accounts via an unprotected API endpoint and gain full platform...

5 min read

Typecho 1.3.0 Pingback SSRF via X-Pingback Manipulation

A CVSS 7.3 server-side request forgery vulnerability in Typecho up to 1.3.0 allows attackers to manipulate the X-Pingback/link argument in Service.php to...

6 min read
Back to all Security Alerts