Skip to main content

Grav Login OAuth CVE-2026-109321

| EUVDEUVD-2026-97623 CRITICAL
Use of Weak Credentials (CWE-1391)
2026-10-12 VulnCheck GHSA-9qx4-jr52-5c2w
9.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Identify Grav site using OAuth login plugin
  2. Delivery
    Obtain or enumerate provider user identifier
  3. Exploit
    Reconstruct deterministic username and MD5 password
  4. Execution
    Authenticate via standard password login
  5. Impact
    Gain administrative control of site

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Strong credential management
Exploitation Conditions

Exploitation requires the grav-plugin-login-oauth plugin to be installed at a version below 1.4.3 with at least one account (ideally a privileged/admin account) provisioned through an OAuth provider, and relies on the default behavior that password-based login remains enabled for these auto-provisioned accounts. The concrete prerequisite the attacker must satisfy is obtaining or guessing the target account's OAuth provider identifier, from which the deterministic '<provider>.<id>' username and the unsalted MD5(identifier) password are reproduced. Limiting factors: no vulnerability absent the plugin and an OAuth-provisioned account; difficulty scales with how discoverable/enumerable the identity provider's user IDs are; and sites that disabled plain password login or upgraded to 1.4.3 are not exploitable. No user interaction or prior authentication is needed (PR:N/UI:N).

Impact

All severity signals point the same direction for an environment that actually runs this plugin: the vendor-assigned CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes a remote, unauthenticated, low-complexity attack with high confidentiality and integrity impact (VC:H/VI:H), scoring 9.3 Critical, and the root cause (CWE-1391, use of weak/predictable credentials - a deterministic '<provider>.<id>' username plus an unsalted MD5 of the provider identifier) makes exploitation mechanically trivial once the provider identifier is known. No EPSS score, CISA KEV listing, or public proof-of-concept was provided in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation - the 9.3 reflects inherent exploitability, not observed in-the-wild activity. The practical risk is therefore bimodal: for a Grav site that uses this plugin with a privileged OAuth account, this is a genuine high-priority pre-auth admin-takeover bug; across the broader population it is bounded by the plugin's narrow deployment footprint and by the attacker's need to obtain or guess a valid provider identifier. One caveat to verify: the vector asserts AC:L, but the description's 'learn or guess a provider identifier' implies the attack hinges on knowing an external OAuth provider ID - trivial when such IDs are public or enumerable (e.g. sequential GitHub IDs), harder when they are opaque - so real-world complexity can vary by identity provider.

Exploit ScenarioDerived

An attacker identifies a Grav site running the login-oauth plugin below 1.4.3 where an administrator signed in via an OAuth provider, obtains or enumerates that admin's provider user ID (often public), and reconstructs the deterministic username and the unsalted MD5-of-identifier password. Because password login is never disabled, the attacker submits these credentials to the standard login form and is authenticated as the administrator. No public exploit code was identified in the provided data, but the credential derivation is deterministic and requires no specialized tooling.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
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 the Grav Login OAuth plugin before 1.4.3 lets unauthenticated remote attackers derive valid credentials for OAuth-provisioned accounts and take administrative control. The plugin assigns each auto-provisioned user a deterministic '<provider>.<id>' username and an unsalted MD5 hash of the provider identifier as the password, and it leaves password login enabled; anyone who learns or guesses the provider identifier can reproduce the login. No public exploit identified at time of analysis; the vendor-assigned CVSS 4.0 score is 9.3 Critical and the assessed CVSS 3.1 vector is AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N.

RemediationAI

Vendor-released patch: 1.4.3 - upgrade grav-plugin-login-oauth to 1.4.3 or later (advisory: https://github.com/getgrav/grav/security/advisories/GHSA-mj8v-hvf6-73gm). If immediate upgrade is not possible, disable password-based login for accounts auto-provisioned via OAuth (for example, enforce OAuth-only or SSO-only authentication for those accounts) so the MD5-derived password cannot be used; note this may break workflows that rely on local password login for those users. Additionally, rotate or reset credentials for all OAuth-provisioned accounts, especially privileged/admin accounts, and audit for any unauthorized logins; consider temporarily disabling the plugin if it is not required. Sites that have already disabled plain password login for OAuth-provisioned accounts or upgraded to 1.4.3 are not exploitable per the independent assessment.

Affected VersionsENISA

grav-plugin-login-oauth 1.0.0-beta.1 <1.4.3

Affected Packages

euvd grav_plugin_login_oauth fix: 1.4.3

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 OAuth plugin (grav-plugin-login-oauth, CPE cpe:2.3:a:getgrav:grav-plugin-login-oauth) integrates OAuth-based federated login into the Grav CMS. In versions before 1.4.3, when an OAuth provider authenticates a user, the plugin auto-provisions a local Grav account using a deterministic username of the form '<provider>.<id>' and sets the account password to an unsalted MD5 hash of the provider identifier. This is a CWE-1391 (Use of Weak Credentials) issue: the password is directly computable from a single, often discoverable or guessable value, there is no salt or key-stretching, and the plugin does not disable password-based login for these accounts. Consequently, an unauthenticated remote attacker (PR:N, UI:N per both the vendor CVSS 4.0 vector and the assessed CVSS 3.1 vector) who learns or guesses the provider identifier can reproduce the username and password and log in. Exploitation depends on the plugin being installed below 1.4.3 and at least one account, ideally privileged/admin, having been provisioned via OAuth; the difficulty scales with how enumerable the identity provider's user IDs are, and environments that have disabled plain password login or upgraded to 1.4.3 are not exploitable.

Know when Grav Plugin Login Oauth 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 9.3 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 9.1 CRITICAL

Remote pre-auth (AV:N/PR:N/UI:N) with deterministic credentials so AC:L; admin takeover yields C:H/I:H but no direct availability loss, and authority is unchanged so S:U.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/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
None
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
CRITICAL 9.3

DescriptionCVE.org

Grav Login OAuth plugin (grav-plugin-login-oauth) before 1.4.3 provisions OAuth accounts as ordinary Grav users with a deterministic <provider>.<id> username and an unsalted MD5 hash of the provider identifier as the password, without disabling password login. Unauthenticated remote attackers who learn or guess a provider identifier can reproduce these credentials and log in, gaining administrative control of privileged accounts.

Executive ViewAI

Why It Matters

The Grav Login OAuth plugin (affected versions prior to 1.4.3) contains an authentication bypass that lets an unauthenticated remote attacker log in as OAuth-provisioned accounts, including administrators, by predicting credentials the plugin generates from the provider identifier. Any organization running an affected Grav site with this plugin enabled exposes its content, user data, and administrative functions to full takeover, with no user interaction or prior credentials required and no vendor-released patch identified at time of analysis. Leadership should treat this as a critical, externally reachable exposure because it can silently hand administrative control of public-facing web properties to an attacker, and no public exploit code has been identified at time of analysis.

Business Impact: Severe
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: disable or remove the Grav Login OAuth plugin; block external access to the plugin's OAuth login and callback endpoints; disable password-based login for OAuth-provisioned accounts; audit, rotate, or disable credentials for accounts matching the '<provider>.<id>' username pattern; restrict administrator access to trusted networks or require an additional authentication factor; monitor authentication logs for anomalous logins to OAuth-provisioned accounts.

Threat Intelligence Overview

EPSS Score
0.4%
Top 67% exploitable
Prevalence
Low
niche flat-file CMS plugin, limited to Grav sites using OAuth
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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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
Yes
Human Impact
Very High

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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