CVE-2026-61452

Grav before 2.0.4 Improper Session Invalidation JWT Access Tokens

Published Jul 15, 2026 CVSS 4.0 · 6.9 Medium EPSS < 1% KEV · Not listed
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.

Analysis

AI-generated

Technical 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.

Remediation

No solution or workaround provided in the CVE record.

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 available
History
Type Values Removed Values Added
CPEs cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*
Type Values Removed Values Added
First Time appeared Getgrav
Getgrav grav
Vendors & Products Getgrav
Getgrav grav
Type Values Removed Values Added
Metrics ssvc

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

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'}

Weaknesses
  • CWE-613

    Insufficient Session Expiration

Sources

Status
PUBLISHED
Assigner
VulnCheck
Published
Updated
Jul 28, 2026, 1:02 PM
Reserved
Jul 9, 2026, 2:06 PM
Status
Deferred
Published
Jul 15, 2026, 12:18 PM
Modified
Oct 24, 2026, 9:10 PM