Podatność w bibliotece Better Auth (TypeScript) umożliwia atakującemu przejęcie konta ofiary poprzez błędną logikę automatycznego łączenia kont OAuth. Atakujący może powiązać tożsamość OAuth ofiary z własnym kontem, omijając weryfikację właściwego stanu emailVerified po stronie lokalnej bazy.
▸ Pokaż oryginał (EN)
Better Auth is an authentication and authorization library for TypeScript. Prior to 1.6.11, Better Auth's OAuth callback auto-link gate in handleOAuthUserInfo accepts implicit account linking when the OAuth provider asserts email_verified: true without requiring the local user row's emailVerified field to also be true, allowing an attacker who pre-registers a victim email through /sign-up/email to bind the victim's OAuth identity to the attacker's account. The same primitive affects one-tap, and emailAndPassword.requireEmailVerification: true does not mitigate the link-time verification change. This issue is fixed in version 1.6.11.
Funkcja handleOAuthUserInfo obsługująca callback OAuth akceptuje automatyczne łączenie kont (auto-link), gdy dostawca OAuth zwróci flagę email_verified: true, nie sprawdzając przy tym, czy odpowiadające pole emailVerified w lokalnym rekordzie użytkownika jest również ustawione na true. Atakujący najpierw rejestruje konto przez endpoint /sign-up/email z adresem e-mail należącym do ofiary (bez weryfikacji po stronie lokalnej). Gdy ofiara następnie loguje się przez OAuth z tym samym adresem, jej tożsamość OAuth zostaje powiązana z kontem atakującego. Ten sam mechanizm błędu dotyczy funkcji one-tap, a opcja emailAndPassword.requireEmailVerification: true nie zabezpiecza przed tym scenariuszem.
Atakujący uzyskuje pełny dostęp do konta ofiary i może przejąć kontrolę nad jej tożsamością w aplikacji, co oznacza naruszenie poufności i integralności danych.
Należy zaktualizować bibliotekę Better Auth do wersji 1.6.11, w której problem został naprawiony. Patch dostępny w repozytorium GitHub (commit da7e50b, release v1.6.11).
Better Auth (biblioteka TypeScript) w wersjach przed 1.6.11
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:LBetter Auth
APPBetter-Auth< 1.6.11
Powiązane podatności
SSRF w Better Auth — niezweryfikowane endpointy OIDC w pluginie SSO
Better Auth: pominięcie weryfikacji client_secret w endpointach OAuth token
Race condition w Better Auth umożliwia wielokrotne użycie kodu autoryzacyjnego OAuth2
Better Auth: błędna autoryzacja w pluginie deviceAuthorization umożliwia przejęcie sesji urządzenia
Better Auth SSO: nieautoryzowana rejestracja dostawcy SSO przez zwykłego członka organizacji