CVE-2026-72699

Grav Login Plugin before 3.9.1 Email Enumeration via Registration

Published Aug 25, 2026 CVSS 4.0 · 9.3 Critical EPSS < 1% KEV · Not listed
Description
The Grav Login plugin (getgrav/grav-plugin-login) before 3.9.1 is vulnerable to email address enumeration. The register() method in classes/Login.php throws a distinct exception (EMAIL_NOT_AVAILABLE) when a submitted email address already belongs to an existing account, while allowing registration to proceed otherwise. Because the registration endpoint has no rate limiting, an attacker can enumerate which email addresses have accounts on the site, one guess per request.

Analysis

AI-generated

Technical impact

The Grav Login plugin contains a flaw that allows an attacker to determine whether a given email address is registered on a site. The register() method throws an EMAIL_NOT_AVAILABLE exception only when the email already exists, while permitting registration otherwise. Because the endpoint does not apply rate limiting or generic error handling, the difference in responses directly exposes account existence. This results in information disclosure that can facilitate targeted phishing or credential stuffing attacks.

Affected Systems

The vulnerability is present in getgrav/grav-plugin-login versions earlier than 3.9.1 running on the Grav CMS. Any site that has not upgraded the login plugin to 3.9.1 or later inherits this flaw. The affected product is Grav CMS with the login plugin.

Risk and Exploitability

With a CVSS score of 9.3 the flaw is considered high severity. The EPSS score is not available, and the vulnerability is not listed in CISA’s KEV catalog. Nevertheless, the lack of rate limiting means an attacker can launch a brute‑force enumeration attack by sending repeated registration requests, one for each email guess. The attack vector is remote over the web, requiring only public access to the registration endpoint. Due to the clear distinction in the response messages, exploitation is straightforward and could be automated, making the risk significant for exposed user databases.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Grav login plugin to version 3.9.1 or later, which removes the distinct exception.
  • If an upgrade is not yet possible, temporarily disable or protect the registration endpoint by adding rate limiting or a CAPTCHA to prevent automated enumeration.
  • Modify the plugin error handling to return a generic success/failure message regardless of whether the email is already registered, ensuring no informational difference is leaked.

Generated by OpenCVE AI on August 25, 2026 at 03:51 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description The Grav Login plugin (getgrav/grav-plugin-login) before 3.9.1 is vulnerable to email address enumeration. The register() method in classes/Login.php throws a distinct exception (EMAIL_NOT_AVAILABLE) when a submitted email address already belongs to an existing account, while allowing registration to proceed otherwise. Because the registration endpoint has no rate limiting, an attacker can enumerate which email addresses have accounts on the site, one guess per request.
Title Grav Login Plugin before 3.9.1 Email Enumeration via Registration
First Time appeared Getgrav
Getgrav grav
Weaknesses CWE-203
CPEs cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*
Vendors & Products Getgrav
Getgrav grav
References
Metrics cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N'}

cvssV4_0

{'score': 9.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
VulnCheck
Published
Updated
Aug 29, 2026, 11:47 AM
Reserved
Aug 10, 2026, 1:02 PM
Status
Deferred
Published
Aug 25, 2026, 2:16 AM
Modified
Oct 12, 2026, 3:10 PM