Description
grav-plugin-login before 3.8.11 contains a cross-site request forgery (CSRF) vulnerability in the login.regenerate2FASecret frontend task, which regenerates and persists a new TOTP secret for the authenticated session user without any anti-CSRF nonce or Origin/Referer check. Because Grav core dispatches the task from the GET 'task:' URI parameter and the default session cookie is SameSite=Lax, an attacker can lure a logged-in victim to an off-site page that performs a top-level GET navigation, rotating the victim's TOTP secret so their enrolled authenticator no longer matches the server, effectively forcing 2FA re-enrollment. Sites configured with session.samesite: Strict are not affected.
Published: 2026-07-17
Score: 2.3 Low
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

grav-plugin-login for the Grav content management system contains a CSRF vulnerability in its login.regenerate2FASecret task. The task can be triggered with a simple GET request and regenerates the authenticated user’s TOTP secret without any anti‑CSRF token or Origin/Referer validation, matching the weakness classified as CWE‑352.

Affected Systems

This flaw affects installations of Grav where the login plugin is older than version 3.8.11. Any site running the vulnerable plugin with Grav’s default SameSite=Lax session setting is exposed, whereas configurations that enforce SameSite=Strict are not susceptible.

Risk and Exploitability

The CVSS score of 2.3 indicates low severity, and the EPSS score is below 1%, showing a very small chance of exploitation. The flaw is not listed in CISA’s KEV catalog. Based on the description, the likely attack vector is a CSRF attack that uses a top‑level GET navigation by luring a logged‑in user to an external page, thereby rotating their TOTP secret and forcing them to re‑enroll. The vulnerability only undermines the integrity and availability of two‑factor authentication rather than enabling remote code execution.

Generated by OpenCVE AI on July 31, 2026 at 00:46 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Grav login plugin to version 3.8.11 or later, which removes the CSRF flaw.
  • If an upgrade is not immediately possible, configure the Grav session handling to use SameSite=Strict (session.samesite=Strict) to block the triggering GET request.
  • As an additional temporary safeguard, restrict the regenerate2FASecret action to POST requests or implement an anti‑CSRF token to validate form submissions.

Generated by OpenCVE AI on July 31, 2026 at 00:46 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 17 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


Fri, 17 Jul 2026 00:30:00 +0000

Type Values Removed Values Added
Description grav-plugin-login before 3.8.11 contains a cross-site request forgery (CSRF) vulnerability in the login.regenerate2FASecret frontend task, which regenerates and persists a new TOTP secret for the authenticated session user without any anti-CSRF nonce or Origin/Referer check. Because Grav core dispatches the task from the GET 'task:' URI parameter and the default session cookie is SameSite=Lax, an attacker can lure a logged-in victim to an off-site page that performs a top-level GET navigation, rotating the victim's TOTP secret so their enrolled authenticator no longer matches the server, effectively forcing 2FA re-enrollment. Sites configured with session.samesite: Strict are not affected.
Title grav-plugin-login < 3.8.11 CSRF via regenerate2FASecret
First Time appeared Getgrav
Getgrav grav
Weaknesses CWE-352
CPEs cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*
Vendors & Products Getgrav
Getgrav grav
References
Metrics cvssV3_1

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

cvssV4_0

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


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-07-17T14:15:05.443Z

Reserved: 2026-07-13T16:41:09.007Z

Link: CVE-2026-62236

cve-icon Vulnrichment

Updated: 2026-07-17T14:14:57.695Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-31T01:00:14Z

Weaknesses
  • CWE-352

    Cross-Site Request Forgery (CSRF)