CVE-2026-109321: Grav Login OAuth plugin authentication bypass with predictable credentials

CVE-2026-109321 · Severity: critical · CVSS 9.1 · Published 2026-10-12

Grav's Login OAuth plugin, which enables user authentication through OAuth providers, creates local user accounts with predictable usernames and passwords derived from the OAuth provider identifier. An unauthenticated attacker who knows or guesses the provider identifier can reproduce these credentials and log in directly, potentially gaining administrative control over the platform.

Vendors: Grav.

Quick answers

Is CVE-2026-109321 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-109321 being exploited in the wild.
How severe is CVE-2026-109321?
Critical severity, with a CVSS score of 9.1, published 12 October 2026.
Which products and versions are affected?
Grav Login OAuth 1.0.0-beta.1 through 1.4.2.
Is there a fix for CVE-2026-109321?
Yes: fixed in 1.4.3. Until then: Disable the plugin immediately, or change the password of any account with a username matching the <provider>.<id> pattern (where <provider> is a configured OAuth provider name) until the plugin can be upgraded. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-109321 attacked?
It is attacked over the network.
Am I affected by CVE-2026-109321?
Check whether you run Grav Login OAuth at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • Fixed in: 1.4.3

Disable the plugin immediately, or change the password of any account with a username matching the <provider>.<id> pattern (where <provider> is a configured OAuth provider name) until the plugin can be upgraded.

Technical details

The plugin constructs local usernames as <provider>.<id> and derives passwords as unsalted MD5(provider_identifier), then stores these as normal Grav users without disabling password authentication. Since provider identifiers are public or guessable rather than secrets, an attacker can reproduce the derived credentials and authenticate via password login without completing the OAuth flow, inheriting the privileges of the compromised account including administrative access.

Affected products

  • Grav Login OAuth 1.0.0-beta.1 through 1.4.2

Timeline

  • 2026-09-23: disclosed
  • 2026-10-12: advisory

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.