← All vulnerabilities
CVE-2026-114607GHSA-965C-763C-88JMEUVD-2026-108256

better-auth: OAuth state can be used as a Magic Link to sign in as another user

Published
Last modified
Status
published
Known exploitation
Not listed in CISA KEV
Fix
Fixed in 1.7.7
Public exploit
None on Exploit-DB

Summary

Better Auth, a TypeScript authentication library, is affected when Magic Link sign-in is combined with a social or Generic OAuth provider and database-stored OAuth state. An unauthenticated attacker could sign in as an existing user, or create a falsely email-verified account, without access to that user's mailbox.

Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.

Read the original description

Better Auth is an authentication and authorization library for TypeScript. From 1.4.0-beta.18 until 1.7.7, deployments that enable Magic Link with storeToken set to plain, or with storeToken set to hashed and the global verification.storeIdentifier setting also set to hashed, enable a built-in social or Generic OAuth provider, and use account.storeStateStrategy set to database can accept an OAuth sign-in state value as a Magic Link token. These settings can cause Magic Link verification records and OAuth state to resolve to the same stored identifier, allowing an unauthenticated attacker to start OAuth sign-in for a known email address and redeem the returned state through Magic Link without controlling the mailbox or completing the provider callback. The attacker can obtain a normal session for an existing user, or create an account incorrectly marked as email verified when sign-up is enabled. This issue is fixed in version 1.7.7.

Affected versions

  • better-auth better-auth

    From 1.4.0-beta.18 · fixed in 1.7.7

References 4

GitHub · better-auth/better-auth