Skip to main content

Grav Login Plugin CVE-2026-109312

| EUVDEUVD-2026-97614 HIGH
Improper Authentication (CWE-287)
2026-10-12 VulnCheck GHSA-m37v-wpv7-2x4p
8.6
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain victim password, begin 2FA login
  2. Exploit
    Publish page form lacking an access rule
  3. Execution
    Invoke update_user before completing 2FA
  4. Impact
    Set 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

grav-plugin-login 2.7.0 <3.9.9

Affected Packages

euvd grav_plugin_login fix: 3.9.9

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

Vendor (VulnCheck) PRIMARY 8.6 HIGH
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
vuln.today AI 8.1 HIGH

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 12, 2026 - 18:03 EUVD
CVE Published
Oct 12, 2026 - 16:05 cve.org
HIGH 8.6

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.4%
Top 73% exploitable
Prevalence
Low
login plugin for Grav, a niche flat-file CMS with limited enterprise footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

43
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +43
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy