Description
The Grav API plugin (getgrav/grav-plugin-api) before 2.0.4 contains an improper session invalidation vulnerability where JWT access tokens are issued without a jti (JWT ID) claim and therefore cannot be revoked server-side. Unlike refresh tokens, access tokens remain valid for their full lifetime (default 1 hour) regardless of logout, password change, new token issuance, or account disablement. An attacker who has stolen an access token retains full API access until the token naturally expires.
Published: 2026-07-15
Score: 6.9 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Grav API plugin before version 2.0.4 issues JSON Web Tokens that lack a JWT ID (jti) claim, preventing server‑side revocation. Consequently, access tokens remain valid for their full lifetime—defaulting to one hour—regardless of a user’s session termination, password change, or account disabling. An attacker in possession of such a token retains uninterrupted API access until the token naturally expires.

Affected Systems

The vulnerability affects the Grav content‑management system, specifically the getgrav/grav-plugin API component prior to version 2.0.4. Users operating the API plugin before the 2.0.4 update are vulnerable.

Risk and Exploitability

The CVSS score of 6.9 denotes moderate impact, while an EPSS score of less than 1 % indicates a low likelihood of exploitation. The vulnerability is not listed in the CISA KEV catalog. Exploitation requires an attacker to possess a valid JWT, which can be obtained if the token is intercepted or if credentials are compromised; once acquired, the token can be used for continuous API access until expiration.

Generated by OpenCVE AI on July 31, 2026 at 03:54 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Grav to version 2.0.4 or later, where the API plugin implements proper token revocation.
  • Verify that the API plugin configuration enforces the inclusion of a jti claim in all issued JWTs and that server‑side revocation is enabled.
  • If an upgrade is not immediately possible, reduce the default access token lifetime to a short period (e.g., 15–30 minutes) and monitor for anomalous API activity.

Generated by OpenCVE AI on July 31, 2026 at 03:54 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 28 Jul 2026 16:15:00 +0000

Type Values Removed Values Added
CPEs cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*

Wed, 15 Jul 2026 20:15:00 +0000

Type Values Removed Values Added
First Time appeared Getgrav
Getgrav grav
Vendors & Products Getgrav
Getgrav grav

Wed, 15 Jul 2026 14:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 15 Jul 2026 12:00:00 +0000

Type Values Removed Values Added
Description The Grav API plugin (getgrav/grav-plugin-api) before 2.0.4 contains an improper session invalidation vulnerability where JWT access tokens are issued without a jti (JWT ID) claim and therefore cannot be revoked server-side. Unlike refresh tokens, access tokens remain valid for their full lifetime (default 1 hour) regardless of logout, password change, new token issuance, or account disablement. An attacker who has stolen an access token retains full API access until the token naturally expires.
Title Grav before 2.0.4 Improper Session Invalidation JWT Access Tokens
Weaknesses CWE-613
References
Metrics cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N'}

cvssV4_0

{'score': 6.9, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-07-28T13:02:10.360Z

Reserved: 2026-07-09T14:06:14.017Z

Link: CVE-2026-61452

cve-icon Vulnrichment

Updated: 2026-07-15T13:52:25.931Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-31T04:00:15Z

Weaknesses
  • CWE-613

    Insufficient Session Expiration