HIGH🇬🇧 English

CVE-2026-53517

Race condition w Better Auth — wielokrotne użycie refresh token

CVSS 8.1v3.1pub. 2026-07-15upd. 2026-07-21

Biblioteka Better Auth zawiera podatność typu race condition w endpoincie POST /oauth2/token, umożliwiającą wielokrotne wykorzystanie tego samego refresh token. Błąd pozwala atakującemu na tworzenie rozgałęzionych rodzin tokenów odświeżania, co stanowi poważne zagrożenie dla bezpieczeństwa sesji użytkowników.

Pokaż oryginał (EN)

Better Auth is an authentication and authorization library for TypeScript. From 1.4.8-beta.7 until 1.6.11, the @better-auth/oauth-provider POST /oauth2/token endpoint on the refresh_token grant performs a non-atomic read, validate, revoke, and mint sequence on the oauthRefreshToken row, allowing concurrent requests with the same parent refresh token to pass the revoked check and create forked refresh-token families; the vulnerable range also includes embedded better-auth plugin versions before 1.6.0. This issue is fixed in version 1.6.11.

🤖 Analiza AI
Jak działa

Endpoint obsługujący grant typu refresh_token wykonuje sekwencję operacji odczytu, walidacji, unieważnienia i wydania nowego tokenu w sposób nieatomowy — bez blokady transakcyjnej na rekordzie oauthRefreshToken. Wysyłając równoczesne żądania z tym samym refresh token, atakujący może sprawić, że wiele z nich przejdzie pomyślnie przez sprawdzenie stanu unieważnienia, zanim którekolwiek z nich zdąży zapisać informację o unieważnieniu. W efekcie powstają rozgałęzione rodziny tokenów odświeżania (forked refresh-token families), co łamie założenie jednorazowego użycia refresh token.

Skutki

Atakujący, który wszedł w posiadanie ważnego refresh token, może wielokrotnie go wykorzystać do uzyskania kolejnych tokenów dostępu, skutecznie utrzymując nieuprawniony dostęp do konta ofiary nawet po tym, gdy pierwotny token powinien zostać unieważniony. Prowadzi to do naruszenia poufności oraz integralności danych chronionych przez OAuth2.

Mitygacja

Należy zaktualizować Better Auth do wersji 1.6.11, w której problem został naprawiony. Poprawka dostępna jest w repozytorium projektu (commit c6918ecc9e3a75892169415d7f6c95b591b6a52d) oraz w oficjalnym wydaniu v1.6.11.

Kogo dotyczy

Better Auth w wersjach od 1.4.8-beta.7 do 1.6.10 (włącznie), pakiet @better-auth/oauth-provider w tym samym zakresie oraz wbudowany plugin Better Auth przed wersją 1.6.0.

Uwagi

Podatność dotyczy wyłącznie wdrożeń korzystających z funkcjonalności OAuth2 Provider (endpoint /oauth2/token z grantem refresh_token). Aplikacje niewystawiające własnego serwera autoryzacji OAuth2 nie są bezpośrednio narażone.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
  • Better Auth

    APP
    Better-Auth
    1.4.81.4.9 – 1.6.11 (bez)
  • Better Auth Better Auth\/oauth Provider

    APP
    Better-Auth
    1.6.0 – 1.6.11 (bez)
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje

Powiązane podatności

CVE-2026-53512CRITICAL9.1PL ✓ten sam produkt

Better Auth: pominięcie weryfikacji client_secret w endpointach OAuth token

CVE-2026-53513CRITICAL9.6PL ✓ten sam produkt

SSRF w Better Auth — niezweryfikowane endpointy OIDC w pluginie SSO

CVE-2026-53518HIGH7.6PL ✓ten sam produkt

Race condition w Better Auth umożliwia wielokrotne użycie kodu autoryzacyjnego OAuth2

CVE-2026-45337HIGH7.6PL ✓ten sam produkt

Better Auth: błędna autoryzacja w pluginie deviceAuthorization umożliwia przejęcie sesji urządzenia

CVE-2026-53514HIGH7.7PL ✓ten sam produkt

Better Auth: Pominięcie weryfikacji e-mail przy akceptacji zaproszeń do organizacji