/

CVE-2026-109312

Severity:

HIGH RISK

(8.1)

Authentication Bypass (CWE-287) in Grav Login Plugin

CVE-2026-109312

Deferred

Vulnerability type

Category:

Authentication Bypass

CWE:

CWE-287

Impact:

Account Takeover and Two-Factor Authentication Bypass

Severity:

HIGH RISK

(8.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A high-severity authentication bypass in the Grav Login plugin can allow a user who knows a victim's password to continue account access without completing front-end two-factor authentication. The issue becomes risky when an attacker can publish or invoke an unrestricted page form that reaches the user-profile update handler.

A high-severity authentication bypass in the Grav Login plugin can allow a user who knows a victim's password to continue account access without completing front-end two-factor authentication. The issue becomes risky when an attacker can publish or invoke an unrestricted page form that reaches the user-profile update handler.

Affected context

The vulnerability affects Grav Login deployments in which the user-profile update workflow can be reached through a published front-end form without an applicable access rule. The vulnerable logic recognizes that a session user exists but does not sufficiently verify that a pending front-end two-factor authentication session has completed authorization before allowing security settings to be changed.

The vulnerability affects Grav Login deployments in which the user-profile update workflow can be reached through a published front-end form without an applicable access rule. The vulnerable logic recognizes that a session user exists but does not sufficiently verify that a pending front-end two-factor authentication session has completed authorization before allowing security settings to be changed.

Exploit preconditions

  • Attack surface: Published front-end user-profile or page-form functionality
  • Required access: Knowledge of the victim's password and the ability to reach an applicable form or endpoint
  • Trigger point: User-profile processing during the account update workflow
  • Authorization state: A pending two-factor authentication challenge exists but has not been completed
  • Why exploitation is possible: The handler checks session identity without enforcing full two-factor authorization before accepting changes to account security settings
  • Attack surface: Published front-end user-profile or page-form functionality
  • Required access: Knowledge of the victim's password and the ability to reach an applicable form or endpoint
  • Trigger point: User-profile processing during the account update workflow
  • Authorization state: A pending two-factor authentication challenge exists but has not been completed
  • Why exploitation is possible: The handler checks session identity without enforcing full two-factor authorization before accepting changes to account security settings

Why this happens

The underlying flaw is an incomplete authorization check in the user-profile processing path. The application treats the presence of an authenticated session user as sufficient authorization, even when the session remains subject to an unfinished front-end two-factor authentication challenge. This maps to CWE-287: Improper Authentication, because the workflow permits access to protected account operations without validating the complete authentication state.

The underlying flaw is an incomplete authorization check in the user-profile processing path. The application treats the presence of an authenticated session user as sufficient authorization, even when the session remains subject to an unfinished front-end two-factor authentication challenge. This maps to CWE-287: Improper Authentication, because the workflow permits access to protected account operations without validating the complete authentication state.

Potential impact

  • An attacker may disable two-factor authentication on a victim's account
  • An attacker could complete account takeover after obtaining or reusing the victim's password
  • Unauthorized changes may be made to profile or security settings
  • Compromised accounts could be used to access protected site content or administrative workflows
  • Organizations may experience loss of account integrity and increased phishing or data-exposure risk
  • An attacker may disable two-factor authentication on a victim's account
  • An attacker could complete account takeover after obtaining or reusing the victim's password
  • Unauthorized changes may be made to profile or security settings
  • Compromised accounts could be used to access protected site content or administrative workflows
  • Organizations may experience loss of account integrity and increased phishing or data-exposure risk

General mitigation guidance

Mitigation generally focuses on enforcing authentication state consistently across every account-management operation.

Common defensive patterns include:

  • Require successful completion of all configured authentication factors before permitting security-sensitive profile changes
  • Apply centralized authorization checks to user-profile update handlers and equivalent endpoints
  • Treat pending two-factor sessions as unauthenticated for privileged account-management actions
  • Require reauthentication or step-up verification when changing two-factor settings or recovery controls
  • Restrict page-form publication and access rules using least-privilege defaults
  • Reduce reliance on client-controlled or loosely scoped session state

Mitigation generally focuses on enforcing authentication state consistently across every account-management operation.

Common defensive patterns include:

  • Require successful completion of all configured authentication factors before permitting security-sensitive profile changes
  • Apply centralized authorization checks to user-profile update handlers and equivalent endpoints
  • Treat pending two-factor sessions as unauthenticated for privileged account-management actions
  • Require reauthentication or step-up verification when changing two-factor settings or recovery controls
  • Restrict page-form publication and access rules using least-privilege defaults
  • Reduce reliance on client-controlled or loosely scoped session state

How teams detect issues like this

Organizations can look for this class of issue through:

  • Static analysis and code review checks for profile-update handlers that test session existence without validating completed authentication factors
  • Review of all endpoints that modify two-factor, password, recovery, or other account-security settings
  • Tests that attempt sensitive account changes during incomplete or partially authorized authentication flows
  • Monitoring for two-factor disablement followed by unusual login activity, password use, or profile changes
  • Policy enforcement requiring centralized authorization middleware for security-sensitive account operations
  • Automated security testing and code review tools that identify inconsistent authentication-state checks

Organizations can look for this class of issue through:

  • Static analysis and code review checks for profile-update handlers that test session existence without validating completed authentication factors
  • Review of all endpoints that modify two-factor, password, recovery, or other account-security settings
  • Tests that attempt sensitive account changes during incomplete or partially authorized authentication flows
  • Monitoring for two-factor disablement followed by unusual login activity, password use, or profile changes
  • Policy enforcement requiring centralized authorization middleware for security-sensitive account operations
  • Automated security testing and code review tools that identify inconsistent authentication-state checks

Sources

SourceLink
github.comgithub.com/getgrav/grav/security/advisories/GHSA-5rph-jqcf-2x36
vulncheck.comvulncheck.com/advisories/grav-login-plugin-2.7.0-before-3.9.9-2fa-bypass-via-profile-update-form

Frequently asked

questions

It may be exploitable through a published front-end form or endpoint when the attacker has the victim's password and the relevant page lacks an effective access rule.

No administrative access is necessarily required. The key conditions are knowledge of the victim's password, access to the affected workflow, and an incomplete two-factor authentication state.

Require completed multi-factor authentication, or an equivalent step-up verification, before allowing changes to two-factor settings or other sensitive account controls.

Centralize authorization decisions, distinguish fully authenticated sessions from pending two-factor sessions, apply restrictive access defaults, and test every security-sensitive workflow across authentication states.

It may be exploitable through a published front-end form or endpoint when the attacker has the victim's password and the relevant page lacks an effective access rule.

No administrative access is necessarily required. The key conditions are knowledge of the victim's password, access to the affected workflow, and an incomplete two-factor authentication state.

Require completed multi-factor authentication, or an equivalent step-up verification, before allowing changes to two-factor settings or other sensitive account controls.

Centralize authorization decisions, distinguish fully authenticated sessions from pending two-factor sessions, apply restrictive access defaults, and test every security-sensitive workflow across authentication states.

Find out what's already
exploitable in your codebase.