CVE-2026-58656 Grav API Plugin: JWT Authentication Bypass & CORS Misconfiguration
The Grav API plugin before version 1.0.0-rc.16 contains a critical authentication bypass vulnerability that allows attackers to impersonate legitimate users and administrators. The plugin incorrectly accepts JWT authentication tokens passed as URL query parameters and pairs this with overly permissive cross-origin headers, enabling malicious websites to make authenticated API calls on behalf of a victim. If an attacker obtains a leaked JWT token—which can happen through server logs, proxy traces, browser history, or HTTP Referrer headers—they can create rogue super-admin accounts and extract sensitive system and user data without the victim's knowledge.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Weaknesses (CWE)
- CWE-598
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-07-08 / 2026-07-08
NVD description (verbatim)
Grav API plugin before v1.0.0-rc.16 accepts JWT tokens via the ?token= URL query parameter and responds with Access-Control-Allow-Origin: *, allowing unauthenticated attackers to make fully authenticated cross-origin API requests from any malicious website. Attackers who obtain a leaked JWT token from access logs, proxy logs, browser history, or Referrer headers can create persistent backdoor super-admin accounts and exfiltrate sensitive configuration and user data.
3 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-58656 exploits a multi-layer authentication and access-control flaw in the Grav API plugin. The vulnerability stems from the plugin accepting JWT tokens via the ?token= URL query parameter, a pattern vulnerable to token leakage through Referer headers, browser history, and server access logs. The plugin simultaneously responds with Access-Control-Allow-Origin: *, which removes cross-origin restrictions entirely. An attacker who obtains a valid JWT token can craft a malicious webpage that, when visited by any user, silently makes fully authenticated API calls to the Grav installation. The attacker can then provision new super-admin accounts and read configuration files and user records. The vulnerability is classified under CWE-598 (Use of GET Request with Sensitive Query Strings), highlighting the architectural mistake of treating query parameters as secure credential containers.
Business impact
Compromise of a Grav instance via this vulnerability results in administrative account takeover, allowing attackers to modify website content, inject malware, harvest user and site configuration data, and establish persistent backdoor access. Organizations relying on Grav for content management face potential data exfiltration, brand damage, and operational disruption. The risk is heightened because JWT tokens may already be present in access logs or proxy records within the organization, making exploitation possible without external attack infrastructure.
Affected systems
Grav API plugin versions prior to 1.0.0-rc.16 are vulnerable. Organizations running Grav CMS with the API plugin enabled should immediately verify their installed version and apply the available patch. Confirm patch version eligibility against the vendor advisory.
Exploitability
Exploitability is high under realistic conditions. The vulnerability requires only network access to a Grav instance and possession of a valid JWT token—a low bar given how frequently tokens leak into logs and browser history. No user interaction is needed beyond a victim visiting an attacker-controlled website. However, the initial token acquisition step may require some reconnaissance. Once a token is obtained, exploitation is trivial and requires no authentication. The lack of KEV listing does not diminish the practical exploitability.
Remediation
Update the Grav API plugin to version 1.0.0-rc.16 or later. After patching, conduct a token audit: review server access logs, reverse-proxy logs, and configuration files for any exposed JWT tokens and revoke them. Scan for unauthorized super-admin accounts created during any exploitation window. As a compensating control, restrict API endpoint access by IP address or require additional authentication factors where possible.
Patch guidance
Apply the Grav API plugin update to version 1.0.0-rc.16 or newer as soon as testing allows. Verify the patch against the official Grav repository and the vendor advisory. Test in a non-production environment first to ensure compatibility with your deployment. After deployment, restart the Grav service and confirm that the API plugin is running the patched version. Monitor access logs for anomalies in the hours following the update.
Detection guidance
Search application and proxy logs for GET requests to API endpoints containing ?token= parameters; such requests are highly suspicious and should be investigated. Monitor for unexpected creation of new user accounts, especially with admin or super-admin privileges. Examine JWT tokens in logs for expiration dates and usage patterns inconsistent with normal operation. Alert on any Access-Control-Allow-Origin header values that include wildcard (*) in responses from Grav API endpoints. Use SIEM rules to flag cross-origin API requests from unexpected referrers.
Why prioritize this
This vulnerability merits immediate attention due to its high severity (CVSS 7.5), low attack complexity, and the near-certainty that JWT tokens have already leaked into logs within most organizations. The ability for attackers to create persistent backdoor accounts and exfiltrate sensitive data represents a business-critical risk. Although not yet on the KEV list, the practical exploitability and real-world token exposure make it a top priority for patching.
Risk score, explained
The CVSS 3.1 score of 7.5 (HIGH) reflects high confidentiality impact (unauthenticated access to user and configuration data), no integrity impact in the base score, and no availability impact—though in practice, persistent backdoor access enables further malicious modification. The attack vector is network-based, attack complexity is low, no privileges are required, and no user interaction is necessary beyond passive website visits. The score appropriately captures the severity of a complete authentication bypass paired with cross-origin exploitation.
Frequently asked questions
How would an attacker obtain a JWT token in the first place?
JWT tokens can leak through multiple channels: web server and reverse-proxy access logs, browser history on shared systems, HTTP Referer headers logged by external services, memory dumps, backup files, or configuration repositories. Once a token is in access logs, it persists indefinitely unless explicitly purged. This is why tokens in query parameters are dangerous—they are logged and cached everywhere.
If we patch the plugin, do we need to invalidate all existing JWT tokens?
Yes, as a best practice. The patch likely removes support for token= query parameters and improves CORS handling, but any tokens that were exposed while the vulnerability existed should be treated as compromised. Review your logs for tokens created or used during the vulnerability window and revoke them, then regenerate tokens for legitimate users if your system supports token invalidation.
Can attackers exploit this from within our network, or only from external malicious websites?
Both. An attacker with network access to the Grav instance and a leaked JWT token can directly craft API requests from any network location. An attacker on the public internet can also exploit it via a malicious website if they have obtained a token. The cross-origin wildcard header removal in the patch prevents the latter vector.
Why isn't this on CISA's Known Exploited Vulnerabilities list yet?
KEV listing is based on evidence of active, public exploitation in the wild. This vulnerability may not yet have enough documented real-world exploitation reports, or the advisory may be very recent. Absence from the KEV list does not indicate lower severity—the technical merit and practical exploitability are clear.
This analysis is provided for informational purposes and reflects the state of the vulnerability as of the date published. Patch versions and vendor advisories should be verified directly with the Grav project. Organizations should conduct their own risk assessments based on their deployment topology, exposure, and log retention policies. No guarantee is made regarding the completeness or timeliness of this intelligence. Always consult official vendor documentation before applying patches to production systems. Source: NVD (public-domain), retrieved 2026-08-17. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2026-44883HIGHPortainer JWT Token Leakage via URL Query Parameters
- CVE-2026-54652HIGHFrigate 0.17.1 Privilege Escalation via Log Exposure
- CVE-2026-10078LOWQuay GitLab OAuth Credentials Leaked in Plaintext Query Parameters
- CVE-2016-20062HIGHSQL Injection in Simply Poll 1.4.1 WordPress Plugin - Unauthenticated Data Theft
- CVE-2016-20063HIGHSQL Injection in Single Personal Message 1.0.3 – Credential & Data Theft Risk
- CVE-2016-20065HIGHUnauthenticated SQL Injection in Product Catalog 8 WordPress Plugin
- CVE-2016-20066HIGHWordPress CP Polls 1.0.8 Persistent XSS Vulnerability
- CVE-2016-20068HIGHUnauthenticated SQL Injection in WordPress Booking Calendar Contact Form 1.0.23