High severity · published Oct 12, 2026
CVE-2026-109312
Grav Login Plugin 2.7.0 before 3.9.9 2FA Bypass via Profile Update Form
8.1
CVSS
0.4%
EPSS
No
On KEV
Description
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.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Attack vector
Network
Complexity
Low
Privileges
Low
User interaction
None
Confidentiality
High
Integrity
High
Availability
None
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.4% · higher than 29% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
GR
grav-plugin-login · getgrav
2.7.0 before 3.9.9 · source: vendor
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-109312
CVE.org
https://www.cve.org/CVERecord?id=CVE-2026-109312
vendor-advisory
https://github.com/getgrav/grav/security/advisories/GHSA-5rph-jqcf-2x36
third-party-advisory
https://www.vulncheck.com/advisories/grav-login-plugin-2.7.0-before-3.9.9-2fa-bypass-via-profile-update-form
More from grav-plugin-login
8.8
CVE-2026-114658
Grav Login plugin 3.6.0 before 3.9.13 Privilege Escalation via login.invite
8.1
CVE-2026-109313
Grav Login Plugin 2.7.0 before 3.9.9 2FA Bypass via Remember-Me Cookie
7.4
CVE-2026-62669
Grav Login Plugin: 2FA Bypass via 'login.regenerate2FASecret' - Secret Rotation During Pending Challenge
7.3
CVE-2026-109314
Grav Login Plugin 1.2.0 before 3.9.9 Password Reset Token Disclosure via Reset Page
5.4
CVE-2026-62671
CSRF in grav-plugin-login: anonymous attacker rotates a logged-in user's 2FA (TOTP) secret (no nonce on task=login.regenerate2FASecret)
