Executive brief
Better Auth is a security library used by developers to handle user logins and permissions in TypeScript applications. A flaw in its organization plugin allowed users to accept invitations using unverified email addresses, provided they could obtain the invitation ID. This could allow an attacker to hijack an invitation intended for someone else, potentially gaining unauthorized access to a company's internal organization data or resources.
Technical details
A vulnerability exists in the Better Auth organization plugin where the `acceptInvitation`, `rejectInvitation`, `getInvitation`, and `listUserInvitations` endpoints rely on a simple string match between `session.user.email` and the invitation email without verifying that the session email is actually owned by the user. An attacker can exploit this by pre-registering an unverified account using a victim's email address. If the attacker obtains a valid invitation ID (e.g., if IDs are predictable or leaked), they can accept the invitation on behalf of the victim. The issue was initially fixed in version 1.6.11 by enabling `requireEmailVerificationOnInvitation` by default, but configurations in 1.6.14 and later may still be vulnerable if this setting is manually disabled or if opaque invitation IDs are not used.
Affected products
- better-auth Better Auth < 1.6.11, >= 1.6.14
Timeline
- 2026-05-12: patched: Fix committed and version 1.6.11 released.
- 2026-07-15: advisory: CVE-2026-53514 published.