CVE-2026-67327
WysokieCVSS 8.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 18 - wyżej niż 18% wszystkich znanych CVE
Streszczenie
better-auth w wersjach >= 1.1.3 i < 1.6.22 (oraz wersje pre-release >= 1.7.0-beta.0 i < 1.7.0-beta.10) jest podatny na przejęcie konta przez pre-account hijacking przy logowaniu przez magic-link lub email-OTP, gdy włączona jest rejestracja przez email/hasło. Atakujący rejestruje konto z adresem e-mail ofiary i wybranym przez siebie hasłem; konto pozostaje niezweryfikowane. Gdy prawowity właściciel później loguje się przez magic-link lub email-OTP, konto zostaje oznaczone jako zweryfikowane bez usunięcia istniejącego hasła lub unieważnienia istniejących sesji, więc hasło atakującego pozostaje ważne, zapewniając mu trwały dostęp do konta ofiary. Poprawione w wersjach 1.6.22 i 1.7.0-beta.10.
Ocena ryzyka
Atakujący może uzyskać trwały dostęp do konta ofiary, nawet po tym jak ofiara zaloguje się przy użyciu bezpiecznej metody, co prowadzi do kradzieży danych i nieautoryzowanych działań.
Rekomendacja
Zaktualizuj better-auth do wersji 1.6.22 lub nowszej (lub 1.7.0-beta.10), która poprawnie usuwa istniejące hasła przy logowaniu bezhasłowym.
Inne podatności w better-auth
Zobacz wszystkie- CVE-2026-114607Krytyczne
Better Auth to biblioteka uwierzytelniania i autoryzacji dla TypeScript. Od wersji 1.4.0-beta.18 do 1.7.7 wdrożenia, które włączają Magic Link z storeToken ustawionym na plain lub z storeToken ustawionym na hashed i globalnym ustawieniem verification.storeIdentifier również ustawionym na hashed, włączają wbudowanego dostawcę społecznościowego lub Generic OAuth oraz używają account.storeStateStrategy ustawionego na database, mogą przyjąć wartość stanu logowania OAuth jako token Magic Link. Te ustawienia mogą powodować, że rekordy weryfikacji Magic Link i stan OAuth rozwiązują się do tego samego przechowywanego identyfikatora, pozwalając nieuwierzytelnionemu atakującemu rozpocząć logowanie OAuth dla znanego adresu e-mail i wykorzystać zwrócony stan poprzez Magic Link bez kontroli skrzynki pocztowej lub ukończenia callbacku dostawcy. Atakujący może uzyskać normalną sesję dla istniejącego użytkownika lub utworzyć konto błędnie oznaczone jako zweryfikowane e-mailem, gdy rejestracja jest włączona. Problem naprawiono w wersji 1.7.7.
- CVE-2026-110862Krytyczne
Better Auth od wersji 1.4.0-beta.18 przed 1.7.7 zawiera lukę obejścia uwierzytelniania, która pozwala nieuwierzytelnionym atakującym zalogować się jako inni użytkownicy poprzez ponowne użycie wartości stanu OAuth jako tokenów Magic Link. Atakujący może rozpocząć logowanie OAuth z adresem e-mail ofiary i przesłać zwrócony stan do weryfikacji Magic Link, uzyskując sesje lub tworząc fałszywie zweryfikowane konta e-mail.
- CVE-2026-53513Krytyczne
Biblioteka Better Auth w wersji przed 1.6.11 zawiera podatność w pluginie @better-auth/sso. Punkty końcowe POST /sso/register i POST /sso/update-provider akceptują kontrolowane przez atakującego adresy URL (oidcConfig.userInfoEndpoint, tokenEndpoint, jwksEndpoint) przy włączonej opcji skipDiscovery: true, przechowują je bez walidacji pochodzenia i pobierają podczas wywołania zwrotnego OIDC, co umożliwia nieślepe fałszerstwo żądań po stronie serwera (SSRF) oraz potencjalne łączenie kont, gdy trustEmailVerified: true jest skonfigurowane.
- CVE-2026-53512Krytyczne
Biblioteka Better Auth przed wersją 1.6.11 zawiera podatność w pluginach legacy oidcProvider i mcp, gdzie endpointy tokenów OAuth uwierzytelniają jedynie posiadanie ważnego refresh_token i client_id, bez weryfikacji client_secret. Pozwala to atakującemu z ważnym refresh_token na generowanie nowych tokenów dostępu i odświeżonych tokenów przez /api/auth/oauth2/token lub /api/auth/mcp/token.
- CVE-2025-61928Krytyczne
W bibliotece Better Auth w wersjach przed 1.3.26 nieuwierzytelniony atakujący może tworzyć lub modyfikować klucze API dowolnego użytkownika, przekazując jego identyfikator w treści żądania do endpointu api/auth/api-key/create. Gdy nie ma sesji, ale w treści żądania występuje userId, flaga authRequired staje się fałszywa, a walidacja pól wykonywana tylko przy authRequired true zostaje pominięta, co pozwala ustawiać uprzywilejowane pola. Ten sam wzorzec występuje w endpoincie aktualizacji; luka stanowi krytyczne obejście uwierzytelniania i została naprawiona w wersji 1.3.26.
- CVE-2026-110864Wysokie
Better Auth w wersjach od 1.5.0-beta.12 do 1.7.7 zawiera podatność obejścia uwierzytelniania w pluginie OAuth Proxy pozwalającą nieuwierzytelnionym atakującym zalogować się jako inni użytkownicy poprzez sfałszowanie zaszyfrowanych profili. Gdy proxy współdzieli globalny sekret, a stan przechowywany w cookie jest używany, atakujący może uzyskać zaszyfrowany stan dla fałszywego profilu ze zweryfikowanym adresem e-mail ofiary, aby przejąć konto poprzez niejawne powiązanie.
- CVE-2026-110861Niskie
W Better Auth (@better-auth/drizzle-adapter i better-auth od 1.6.17 przed 1.7.7 oraz @better-auth/kysely-adapter od 1.6.17 przed 1.7.0) występuje warunek wyścigu w ograniczaniu liczby żądań opartym na bazie danych PostgreSQL — sprawdzenie limitu nie jest atomowe względem aktualizacji licznika. Zdalni atakujący mogą wysyłać serie równoczesnych żądań, które wspólnie przechodzą sprawdzenie, przekraczając skonfigurowane limity dla logowania hasłem, weryfikacji dwuskładnikowej, kodów jednorazowych, resetu hasła i innych chronionych punktów końcowych.
- CVE-2026-109346Wysokie
better-auth w wersjach od 1.3.8-beta.3 do 1.7.0-rc.3 zawiera podatność polegającą na błędnym przedstawieniu interfejsu w pluginie deviceAuthorization, ponieważ GET /device pomija identyfikator klienta i zakres. Atakujący może rozpocząć żądanie urządzenia przez /device/code, nakłonić zalogowanych użytkowników do zatwierdzenia kodu, a następnie wykorzystać go w /device/token do uzyskania aktywnego tokena sesji.
- CVE-2025-71401Średnie
Biblioteka better-auth (npm) przed wersją 1.4.2 pozwala na zewnętrzne żądanie skonfigurowania baseURL, gdy nie jest on zdefiniowany (np. BETTER_AUTH_URL nie jest ustawione). Atakujący, który wykona pierwsze żądanie do serwera po uruchomieniu, może zatruć bazową ścieżkę routera, powodując zwracanie 404 dla wszystkich tras i użytkowników (odmowa usługi). Problem nie występuje, gdy baseURL jest jawnie skonfigurowane lub na typowych platformach hostingowych.
- CVE-2025-71400Wysokie
better-auth passkey przed wersją 1.4.0 zawiera podatność na niebezpieczne bezpośrednie odwołanie do obiektu w punkcie końcowym usuwania passkey. Uwierzytelnieni użytkownicy mogą usuwać dowolne passkey innych użytkowników.
Oryginalny opis (angielski, źródło NVD)
better-auth versions >= 1.1.3 and < 1.6.22 (and pre-release versions >= 1.7.0-beta.0 and < 1.7.0-beta.10) are vulnerable to account takeover via pre-account hijacking on magic-link and email-OTP sign-in when open email/password registration is enabled. An attacker registers an account with the victim's email address and an attacker-chosen password; the account remains unverified. When the legitimate owner later signs in via the magic-link or email-OTP passwordless flow, the account is marked verified without removing the pre-existing password or revoking existing sessions, so the attacker's password remains valid, granting persistent access to the victim's account. Fixed in 1.6.22 and 1.7.0-beta.10.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

