Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain victim password, begin 2FA login
-
ExploitPublish page form lacking an access rule
-
ExecutionInvoke update_user before completing 2FA
-
ImpactSet twofa_enabled false, hijack account
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK
2 techniques across 2 tactics: Defense Evasion, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires three concrete conditions drawn from the advisory: (1) the attacker must already know the victim's account password and have an in-progress front-end login that has reached but not completed the 2FA step; (2) front-end two-factor authentication must be enabled on the target account (twofa_enabled true) - this is the control being bypassed; and (3) the attacker must be able to publish a Grav page form that has no access rule and that reaches the update_user task handled by processUserProfile(). Limiting factors that reduce real-world risk: the dependence on prior credential compromise (PR:L, not PR:N), the non-default requirement of a publishable form without an access rule, and relevance only to sites actually using the Login plugin's front-end 2FA. No user interaction by the victim is required (UI:N). |
| Impact | Signals are moderately consistent and point to a genuine but conditional threat rather than an internet-wide emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) describes a network-reachable, low-complexity attack requiring low privileges, with high confidentiality and integrity impact and no scope change (SC/SI/SA:N) - consistent with an account-takeover flaw confined to the Grav Login plugin. PR:L is the key moderator: the attacker is not fully unauthenticated but rather already possesses the victim's password and an in-progress, not-yet-2FA-authorized front-end session, so this is best understood as a 2FA-defeat primitive that presupposes prior credential compromise, not a standalone remote break-in. No EPSS score, SSVC decision, KEV listing, or POC was provided in the input; there is no public exploit identified at time of analysis, and the absence of KEV means there is no evidence of active exploitation. The practical bar is raised further by a non-default precondition - the attacker must be able to publish a page form without an access rule that reaches the update_user task. Net: a legitimately high-severity authentication-bypass worth prioritizing for any Grav site that relies on front-end two-factor authentication as a compensating control, but the required victim-password + publishable-form preconditions make opportunistic mass exploitation unlikely absent corroborating EPSS/POC data, which is missing here. |
| Exploit ScenarioDerived | An attacker who has already phished or otherwise obtained a victim's Grav password logs in, triggering the pending front-end 2FA challenge but deliberately not completing it. Instead of submitting the one-time code, they use a published page form (lacking an access rule) to invoke the update_user action, which processUserProfile() accepts because it only verifies the session user exists - not that 2FA was satisfied - letting them set twofa_enabled to false and fully take over the account. No public exploit was identified at time of analysis, so the chain would need to be built from the advisory details. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Authentication bypass in Grav Login plugin versions 2.7.0 before 3.9.9 allows attackers who already know a victim's password to disable two-factor authentication (2FA) and take over the account by invoking the update_user task through a published page form without an access rule. The flaw resides in processUserProfile(), which verifies that a session user exists but fails to confirm that a pending front-end 2FA session is fully authorized. Exploitation requires three conditions: the attacker must possess the victim's password, have an in-progress front-end login that has reached the 2FA step, and be able to publish a Grav page form lacking an access rule; no public exploit has been identified at time of analysis.
RemediationAI
Upgrade the Grav Login plugin to version 3.9.9 or later. This is the vendor-released patch per the security advisory at https://github.com/getgrav/grav/security/advisories/GHSA-5rph-jqcf-2x36. As a workaround until patching is feasible, restrict the ability to publish page forms without access rules to trusted administrators only, and consider temporarily disabling front-end 2FA for accounts that cannot be immediately patched (though this weakens security posture). Additionally, ensure that any page forms invoking the update_user task are properly protected by authentication and authorization checks. Monitor the VulnCheck advisory at https://www.vulncheck.com/advisories/grav-login-plugin-2.7.0-before-3.9.9-2fa-bypass-via-profile-update-form for updates.
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
The Grav Login plugin provides authentication and two-factor authentication (2FA) for the Grav CMS. CVE-2026-109312 is an improper authentication (CWE-287) vulnerability in the processUserProfile() function, which handles profile updates via the update_user task. When a user logs in through the front-end and has 2FA enabled (twofa_enabled true), the plugin should require completion of the 2FA challenge before allowing profile changes. However, processUserProfile() only checks that a session user exists, not that the 2FA session is fully authorized. An attacker who knows the victim's password can initiate a login, reach the 2FA prompt, and then exploit a Grav page form with no access rule to invoke update_user; this sets twofa_enabled to false, effectively bypassing 2FA and permitting account takeover. The vulnerability affects the getgrav:grav-plugin-login component (CPE cpe:2.3:a:getgrav:grav-plugin-login). The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N) and the independent CVSS 3.1 assessment (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N) both indicate network-based exploitation with low privileges required (the attacker must have the victim's password), no user interaction, and high confidentiality and integrity impact, but no availability impact.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Attacker already holds the victim's password (PR:L) and acts over the network with low complexity; account takeover yields high confidentiality and integrity impact, no availability impact, and no scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Grav Login plugin 2.7.0 before 3.9.9 contains an authentication bypass in processUserProfile(), which checks that the session user exists but not that a pending front-end 2FA session is fully authorized. Attackers with a victim's password who can publish a page form without an access rule can invoke update_user before completing 2FA to disable twofa_enabled and take over the account.
Technical POC Analysis
CWE-287 (Improper Authentication): a pending second-factor session is treated as a fully authenticated one.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
The Grav Login plugin (versions 2.7.0 before 3.9.9) contains an authentication bypass that could allow an attacker who already knows a user's password to disable two-factor authentication and take over the account. No public exploit identified at time of analysis, but the flaw undermines a critical security control and could lead to unauthorized access to sensitive CMS content or administrative functions. No vendor-released patch identified at time of analysis, so leadership should prioritize identifying affected Grav installations and applying interim mitigations.
No vendor-released patch identified at time of analysis; interim mitigations include disabling the Login plugin, restricting front-end form publishing, enforcing strong password policies, and monitoring for unauthorized 2FA changes.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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
Password-reset token disclosure in the Grav Login plugin (versions 1.2.0 up to but not including 3.9.9) allows any user
Cross-site request forgery in Grav Login Plugin prior to 3.8.11 allows a network attacker to silently overwrite a logged
EUVD-2026-97614
GHSA-m37v-wpv7-2x4p
NVD
CVE.org
EPSS
Exploit-DB