better-auth: OAuth state can be used as a Magic Link to sign in as another user
What fixes it
- 1.7.7better-auth, npmGitHub
npm install better-auth@1.7.7
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
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.
Text from CVE List
Affected versions 2
- better-authaffected: >= 1.4.0-beta.18, < 1.7.7CVE List
- better-auth, npm>= 1.4.0-beta.18, < 1.7.7GitHub
References 4
- github.com/better-auth/better-auth/commit/ac54bfd67821a7607533af2059858b12bc54e26aFixvia CVE List
- github.com/better-auth/better-auth/releases/tag/v1.7.7Fixvia CVE List
- github.com/better-auth/better-auth/security/advisories/GHSA-965c-763c-88jmAdvisoryvia CVE List
- github.com/better-auth/better-auth/pull/11494Referencevia CVE List