Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker identifies logged-in Grav victim
-
DeliveryDeliver malicious link or auto-redirect to ?task=login.regenerate2FASecret
-
ExploitVictim browser performs top-level GET (SameSite=Lax sends session cookie)
-
ExecutionServer regenerates and persists new TOTP secret
-
PersistVictim's authenticator app codes become invalid
-
ImpactVictim forced to re-enroll 2FA
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 be actively authenticated to the Grav site with a valid session cookie at the time of the attack. The target site must be configured with the default session.samesite=Lax cookie policy - any site that has explicitly set session.samesite=Strict is not affected, as stated in the CVE description. The exploit requires top-level GET navigation from the attacker's page (e.g., link click or redirect), not a subresource request like an img or script tag, because SameSite=Lax only attaches cookies for top-level navigations. The victim must have 2FA/TOTP enrollment active for the disruption to have meaningful impact. The attack does not grant the attacker any account credentials, session tokens, or access - it solely invalidates the victim's TOTP enrollment. |
| Impact | The CVSS 4.0 score of 2.3 accurately reflects the bounded real-world risk. The vector AV:N/AC:L/AT:P/PR:N/UI:P identifies two meaningful constraints: AT:P (the victim must be logged in and the site must use default SameSite=Lax cookies, not Strict) and UI:P (the victim must perform a top-level navigation from an attacker-controlled context). The impact metrics VC:N/VI:L/VA:L confirm the attack does not expose credentials, session tokens, or other confidential data - it disrupts TOTP enrollment, which is a nuisance-class availability and integrity impact. No CISA KEV listing and no public exploit code have been identified, so there is no evidence of active exploitation. The vulnerability is genuine but low-priority: it requires social engineering a logged-in user, cannot be automated en masse through passive subresource injection (img/script tags do not trigger Lax cookie sending), and delivers a disruptive rather than compromising outcome. The explicit vendor confirmation that SameSite=Strict configurations are unaffected provides a clear compensating control for risk-conscious operators. |
| Exploit ScenarioDerived | An attacker hosts a web page that automatically redirects visitors to a URL such as https://target-grav-site.com/?task=login.regenerate2FASecret via a standard HTML link or JavaScript window.location assignment. When a user who is currently logged in to the Grav site visits the attacker's page and triggers this top-level GET navigation, the browser attaches the victim's session cookie under the default SameSite=Lax policy, causing the Grav server to execute the TOTP secret rotation in the victim's authenticated session. The victim's TOTP authenticator app immediately begins generating codes that no longer match the newly rotated server-side secret, locking the victim out of 2FA-protected access. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 17, 2026
CSRF in grav-plugin-login before 3.8.11 allows a remote unauthenticated attacker to rotate a logged-in victim's TOTP secret by luring them to an attacker-controlled page that performs a top-level GET navigation to the Grav site's regenerate2FASecret task endpoint. Because Grav dispatches frontend tasks via GET URI parameters and the default SameSite=Lax session cookie policy permits cross-origin top-level GET navigations to carry cookies, the victim's authenticator app is silently invalidated, forcing 2FA re-enrollment - though the attacker gains no account access. No public exploit has been identified at time of analysis; CVSS 4.0 score is 2.3, reflecting genuinely low severity.
RemediationAI
Upgrade grav-plugin-login to version 3.8.11 or later, which is the vendor-released patch confirmed by the security advisory at https://github.com/getgrav/grav/security/advisories/GHSA-4px8-7p53-282r. For sites that cannot immediately update, setting session.samesite=Strict in the Grav site configuration is an effective compensating control that completely blocks this attack by preventing the browser from sending session cookies on any cross-origin navigation - note that this may break legitimate cross-site login redirects or SSO flows if your deployment relies on them, so evaluate the trade-off before applying. No other specific workarounds are documented in available references.
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 CMS uses a flat-file architecture and dispatches frontend task actions through the GET 'task:' URI parameter (e.g., ?task=login.regenerate2FASecret), which makes all such task endpoints inherently reachable via browser navigation. The grav-plugin-login component handles TOTP-based two-factor authentication enrollment, including a task that regenerates and persists a new TOTP shared secret to the authenticated user's profile. The root cause is CWE-352 (Cross-Site Request Forgery): the regenerate2FASecret handler performs a server-side state change without validating any anti-CSRF nonce, nor does it inspect Origin or Referer headers to confirm the request originated from the same site. The browser's SameSite=Lax default cookie policy is the key enabler - Lax permits session cookies to be attached to cross-origin top-level GET navigations (link clicks, window.location assignments), so a victim's session is indistinguishable from an intentional self-request when navigating from an attacker page. The CPE cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:* covers all Grav versions prior to the plugin fix at 3.8.11.
Know when Grav 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
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
UI:R required as victim must navigate; PR:N since attacker holds no account; C:N as no data is exposed; I:L and A:L for TOTP invalidation impact only.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
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.
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.
Server-side template injection (SSTI) in Grav (getgrav/grav) prior to 1.8.0-beta.27 allows an authenticated attacker hol
Broken access control in Grav CMS (CWE-285) before 1.8.0-beta.27 lets an authenticated editor-level user escalate their
A Remote Code Execution (RCE) vulnerability in Grav CMS v1.7.48 allows an authenticated admin to upload a malicious plug
Grav is a file-based Web platform. Rated critical severity (CVSS 9.9), this vulnerability is remotely exploitable, low a
GravCMS 1.10.7 allows unauthenticated remote attackers to write arbitrary YAML configuration files, leading to full serv
Remote code execution in Grav CMS 2.0.4 (fixed in 2.0.7) lets an authenticated user holding the admin.pages or api.pages
Remote code execution in Grav CMS before 2.0.15 allows attackers holding page-edit or blueprint-config privileges to wri
Vertical privilege escalation in Grav CMS before 2.0.14 lets a delegated administrator holding only the admin.users perm
Stored cross-site scripting in Grav CMS before 2.0.15 lets authenticated editors smuggle JavaScript event handlers past
Server-side request forgery (SSRF) in Grav CMS versions prior to 1.7.49.5 allows remote authenticated attackers to make
Grav is a file-based Web platform. Prior to 1.8.0-beta.27, Grav CMS is vulnerable to a Server-Side Template Injection (S
Remote code execution in Grav CMS before 2.0.13 allows authenticated low-privilege users to plant and execute arbitrary
EUVD-2026-45082
GHSA-f4c6-8fcq-j58x
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB