HIGH🇬🇧 English

CVE-2026-53518

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

CVSS 7.6v4.0pub. 2026-07-15upd. 2026-07-21

Biblioteka Better Auth w wersjach od 1.6.0 do 1.6.10 zawiera podatność typu race condition w endpoincie POST /oauth2/token, która pozwala na wielokrotne zrealizowanie jednorazowego kodu autoryzacyjnego. Jest to groźne, ponieważ atakujący może uzyskać niezależne tokeny dostępu, tokeny odświeżania oraz tokeny ID w ramach jednej sesji autoryzacyjnej.

Pokaż oryginał (EN)

Better Auth is an authentication and authorization library for TypeScript. From 1.6.0 until 1.6.11, the @better-auth/oauth-provider POST /oauth2/token endpoint for the authorization_code grant redeems a single-use authorization code through a non-atomic find-then-delete sequence, allowing two concurrent requests to pass the read step and mint independent access tokens, refresh tokens, and ID tokens; legacy /oauth2/token and /mcp/token paths in oidc-provider and mcp plugins share the same primitive. This issue is fixed in version 1.6.11.

🤖 Analiza AI
Jak działa

Endpoint obsługujący grant typu authorization_code realizuje unieważnienie kodu autoryzacyjnego w dwóch nieatomowych krokach: najpierw odczytuje kod z bazy (find), a następnie go usuwa (delete). Dwa równoczesne żądania HTTP mogą obydwa przejść krok odczytu przed wykonaniem usunięcia, co pozwala na dwukrotne wykorzystanie tego samego kodu. Problem dotyczy nie tylko głównej ścieżki /oauth2/token, ale również ścieżek /oauth2/token i /mcp/token w pluginach oidc-provider oraz mcp, które korzystają z tego samego mechanizmu.

Skutki

Atakujący, który zdoła wysłać dwa równoczesne żądania z tym samym kodem autoryzacyjnym, może uzyskać wielokrotne, niezależne zestawy tokenów (access token, refresh token, ID token), co narusza zasadę jednorazowego użycia kodu i może prowadzić do nieautoryzowanego dostępu do chronionych zasobów.

Mitygacja

Należy zaktualizować bibliotekę Better Auth do wersji 1.6.11, w której zastosowano atomową operację unieważniania kodu autoryzacyjnego, eliminując podatność na race condition.

Kogo dotyczy

Better Auth oraz @better-auth/oauth-provider w wersjach od 1.6.0 do 1.6.10 (włącznie); problem obejmuje również ścieżki /oauth2/token i /mcp/token w pluginach oidc-provider i mcp.

Uwagi

Podatność sklasyfikowana jako CWE-362 (race condition) oraz CWE-367 (TOCTOU — Time-of-check Time-of-use). Wymaga jednoczesnego wysłania dwóch żądań przez atakującego, co wprowadza pewne wymaganie dotyczące precyzji czasowej (AT:P w wektorze CVSS).

CVSS Vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
  • Better Auth

    APP
    Better-Auth
    1.6.0 – 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-53517HIGH8.1PL ✓ten sam produkt

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

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