Biblioteka Better Auth w wersjach przed 1.6.11 pozwala użytkownikowi z niezweryfikowaną sesją na zaakceptowanie zaproszenia do organizacji, o ile pozyska on identyfikator zaproszenia. Podatność umożliwia ominięcie mechanizmu weryfikacji własności adresu e-mail (Auth Bypass).
▸ Pokaż oryginał (EN)
Better Auth is an authentication and authorization library for TypeScript. Prior to 1.6.11, and in 1.6.14 and later when invitation IDs can be obtained outside the invited mailbox and requireEmailVerificationOnInvitation: true is not enabled, the organization plugin's acceptInvitation, rejectInvitation, getInvitation, and listUserInvitations recipient endpoints use session.user.email and an invitation ID without sufficient verified-email ownership proof, allowing a user with an unverified session for the invited email address to accept an organization invitation after obtaining the invitation ID. This issue is fixed for the original default behavior in version 1.6.11, while 1.6.14 restored compatibility for built-in opaque invitation IDs and leaves affected configurations requiring secure options.
Endpointy pluginu organizacji (acceptInvitation, rejectInvitation, getInvitation, listUserInvitations) weryfikują tożsamość odbiorcy zaproszenia na podstawie pola session.user.email oraz identyfikatora zaproszenia, bez wystarczającego dowodu potwierdzającego faktyczną własność tego adresu e-mail. Atakujący, który posiada aktywną sesję dla zaproszonego adresu e-mail (nawet niezweryfikowaną) oraz zna identyfikator zaproszenia, może skutecznie zaakceptować zaproszenie do organizacji. Problem nasila się, gdy opcja requireEmailVerificationOnInvitation nie jest włączona, a identyfikatory zaproszeń można pozyskać poza skrzynką odbiorczą zaproszonego użytkownika.
Atakujący może nieautoryzowanie uzyskać dostęp do organizacji w systemie korzystającym z Better Auth, przejmując zaproszenie przeznaczone dla innego użytkownika. W zależności od uprawnień przypisanych do zaproszenia może to prowadzić do nieuprawnionego dostępu do zasobów organizacji oraz eskalacji uprawnień.
Należy zaktualizować Better Auth do wersji 1.6.11 lub nowszej, która przywraca domyślnie bezpieczne zachowanie. W wersjach 1.6.14 i późniejszych wymagane jest dodatkowo włączenie opcji requireEmailVerificationOnInvitation: true oraz zapewnienie, że identyfikatory zaproszeń nie mogą być pozyskane poza skrzynką odbiorczą zaproszonego użytkownika. Szczegóły dostępne w referencjach producenta (GHSA-fmh4-wcc4-5jm3).
Better Auth w wersjach przed 1.6.11; wersje 1.6.14 i nowsze pozostają podatne w konfiguracjach, w których identyfikatory zaproszeń mogą być pozyskane poza skrzynką odbiorczą oraz opcja requireEmailVerificationOnInvitation: true nie jest włączona
Poprawka została wprowadzona w wersji 1.6.11. Wersja 1.6.14 przywróciła częściową kompatybilność dla wbudowanych nieprzezroczystych (opaque) identyfikatorów zaproszeń, jednak podatność nadal istnieje w określonych konfiguracjach wymagających ręcznego zastosowania bezpiecznych opcji konfiguracyjnych.
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:NBetter Auth
APPBetter-Auth< 1.6.11≥ 1.6.14
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: Auth Bypass przez nieprawidłowe wiązanie konta OAuth