Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify authenticated Grav admin target
-
DeliveryCraft malicious top-level GET URL to regenerate2FASecret
-
ExploitDeliver URL via phishing or social engineering
-
InstallVictim clicks link in active browser session
-
C2SameSite=Lax transmits session cookie cross-site
-
ExecuteTOTP secret overwritten in victim session
-
ImpactVictim locked out of 2FA until re-enrollment
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V3 - Web Frontend Security Anti-CSRF tokens, SameSite cookies
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The victim must have an active, valid Grav Login Plugin session cookie under the browser-default SameSite=Lax cookie policy. The attack is triggered exclusively via a top-level cross-site GET navigation (link click or redirect) - the only cross-site request type SameSite=Lax permits to carry session cookies; cross-site fetch or XHR requests would be blocked. Two-factor authentication must be enabled and the victim must be a logged-in Grav user (PR:N refers to the attacker requiring no privileges, not the victim being unauthenticated). A secondary path exists for sessions in the mid-login 2FA challenge state (authenticated but not yet authorized), exploitable by an attacker with precise timing. Exploitation is limited by the mandatory user interaction requirement: the victim must actively click a crafted link during an authenticated session, making mass automated exploitation infeasible. No non-default server configuration is required. |
| Impact | The CVSS 3.1 score of 5.4 (Medium, AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L) accurately reflects the attack profile: network-delivered, low complexity, no attacker privileges, but requiring user interaction. EPSS data was not provided in the source intelligence, so exploitation probability cannot be quantified. The vulnerability is not listed in CISA KEV and no POC has been identified, making mass exploitation unlikely at this time. The real-world impact, while not catastrophic, is operationally disruptive: a victim's existing TOTP authenticator app is silently invalidated, locking them out of 2FA-protected Grav admin access until they complete re-enrollment. For sites where the administrator is the sole account, this could function as an account destabilization primitive. The UI:R requirement is the primary exploitation brake - each attack requires social engineering of an individually targeted, currently authenticated user. The secondary authorization bypass (exists() without authorized check) slightly elevates risk for targeted attacks timed to a victim's active login flow. Overall, this is a genuine medium-priority issue warranting prompt patching but not emergency response in most deployments. |
| Exploit ScenarioDerived | An attacker identifies a Grav site administrator and sends them a phishing email or social media message containing a disguised link that resolves to the Grav admin's regenerate2FASecret GET endpoint. When the administrator clicks the link from a browser with an active Grav session, SameSite=Lax transmits the session cookie to the target server, invoking taskRegenerate2FASecret() in the victim's session and silently overwriting their TOTP secret. The administrator's existing authenticator app becomes invalid at next login, forcing re-enrollment and potentially creating a window - if the attacker can observe the QR code display on the admin's screen or redirect the page - to enroll an attacker-controlled device. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
Cross-site request forgery in Grav Login Plugin prior to 3.8.11 allows a network attacker to silently overwrite a logged-in victim's TOTP two-factor authentication secret by inducing a single link click. The taskRegenerate2FASecret endpoint accepted top-level GET requests with no nonce, Origin, or Referer validation; under the browser-default SameSite=Lax cookie policy, this is sufficient for a cross-site navigation to carry the victim's session cookie and trigger secret regeneration. No public exploit has been identified at time of analysis; the vendor released a confirmed fix in version 3.8.11.
RemediationAI
Upgrade to Grav Login Plugin version 3.8.11, the vendor-confirmed fix available at https://github.com/getgrav/grav-plugin-login/releases/tag/3.8.11. The patch enforces three controls simultaneously: the regenerate2FASecret task now requires an HTTP POST method (killing the SameSite=Lax GET vector), verifies a login-form-nonce anti-CSRF token that the updated 2fa.js form field now transmits, and gates execution on $user->authorized === true rather than $user->exists() alone. Legitimate 2FA re-enrollment from the account profile page (where the user is fully authorized) is unaffected. If immediate upgrade is not possible, restrict Grav admin panel access to trusted internal networks or a VPN, which prevents the attacker from delivering the crafted cross-site navigation link to an authenticated administrator; this control degrades if administrators access Grav from general-purpose browsers outside the trusted network. Temporarily disabling 2FA for all accounts removes the attack surface but eliminates the second authentication factor, which is a significant security regression and should only be considered as a last resort in tightly network-restricted environments.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Grav is a flat-file PHP CMS; its Login Plugin (CPE: cpe:2.3:a:getgrav:grav-plugin-login:*:*:*:*:*:*:*:*) provides authentication, ACL, and TOTP-based two-factor authentication. The vulnerable surface is the taskRegenerate2FASecret() method in Controller.php, dispatched by Grav's TaskServiceProvider via the task: URI parameter. SameSite=Lax - the modern browser default - blocks cookies on cross-site subresource requests (img, fetch, XHR) but permits them on top-level cross-site navigations (link clicks, redirects), which is exactly the GET-based invocation path the endpoint accepted. The root cause class is CWE-352 (CSRF): no anti-CSRF nonce was required, no HTTP method restriction was enforced, and no Origin or Referer header was validated. The commit diff also exposes a secondary authorization boundary failure: the pre-patch gate used $user->exists() rather than $user->exists() && $user->authorized === true, meaning a session currently in the 2FA challenge phase (authenticated but not yet authorized by Grav's Login plugin state machine) could also invoke the regeneration - relevant to an attacker who has observed a victim's partial login.
Know when Grav Plugin Login gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L
Network-delivered CSRF with no attacker privileges (PR:N) requires victim link click (UI:R); impact confined to TOTP overwrite (I:L) and temporary 2FA lockout (A:L) with no confidentiality exposure.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Grav Login Plugin adds login, basic ACL, and session wide messages to Grav. Prior to 3.8.11, the Grav Login plugin login.regenerate2FASecret task accepts a top-level GET request through the TaskServiceProvider task: URI parameter without requiring a login-form nonce, an Origin check, or a Referer check. Under the default SameSite=Lax session cookie policy, an off-site navigation can invoke taskRegenerate2FASecret() in a logged-in victim's session, overwrite the victim's TOTP secret, and force two-factor re-enrollment. This issue is fixed in version 3.8.11.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.
More in Grav Plugin Login
View allTwo-factor authentication bypass in Grav Login Plugin prior to 3.8.11 allows an attacker who possesses a victim's passwo
Privilege escalation in the Grav Login plugin (3.6.0 before 3.9.13) allows page authors to obtain super-user accounts by
Two-factor authentication bypass in the Grav Login plugin versions 2.7.0 through before 3.9.9 allows an authenticated re
Authentication bypass in Grav Login plugin versions 2.7.0 before 3.9.9 allows attackers who already know a victim's pass
Password-reset token disclosure in the Grav Login plugin (versions 1.2.0 up to but not including 3.9.9) allows any user
EUVD-2026-62544
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB