W bibliotece Better Auth (wersje 1.6.0–1.6.10) plugin deviceAuthorization nieprawidłowo weryfikuje własność oczekujących kodów urządzenia, co pozwala uwierzytelnionemu atakującemu na powiązanie urządzenia z jego własnym kontem lub zablokowanie legalnego procesu autoryzacji. Podatność jest szczególnie groźna w środowiskach korzystających z przepływu OAuth Device Authorization Grant.
▸ Pokaż oryginał (EN)
Better Auth is an authentication and authorization library for TypeScript. From 1.6.0 until 1.6.11, the deviceAuthorization plugin treats any authenticated session as the owner of any pending device code because GET /device does not claim the row and POST /device/approve and POST /device/deny short-circuit when userId is unset, allowing an authenticated attacker who learns a valid user_code to bind the polling device to the attacker's account or deny the legitimate flow. This issue is fixed in version 1.6.11.
Endpoint GET /device nie rezerwuje (nie przypisuje) wiersza z oczekującym kodem urządzenia do konkretnej sesji użytkownika. Endpointy POST /device/approve oraz POST /device/deny kończą działanie wcześnie (short-circuit), gdy pole userId nie jest ustawione, zamiast odrzucić żądanie. W konsekwencji każdy uwierzytelniony użytkownik, który pozna ważny user_code, może zatwierdzić autoryzację urządzenia tak, że zostanie ono przypisane do jego konta zamiast do konta prawowitego właściciela, lub może odrzucić (deny) ten przepływ, uniemożliwiając legalne sparowanie urządzenia.
Atakujący może przejąć kontrolę nad urządzeniem innego użytkownika poprzez powiązanie go z własnym kontem (naruszenie poufności i integralności) lub sabotować legalny proces autoryzacji przez odrzucenie oczekującego kodu urządzenia.
Należy zaktualizować bibliotekę Better Auth do wersji 1.6.11, w której problem został naprawiony. Patch dostępny jest w repozytorium GitHub (tag v1.6.11).
Better Auth w wersjach od 1.6.0 do 1.6.10 (włącznie) z aktywnym pluginem deviceAuthorization
Podatność została zgłoszona i naprawiona w ramach GitHub Security Advisory GHSA-cq3f-vc6p-68fh. Fix wprowadzono w commicie 99a254a79b59d5a3f5ca2123260118cddb5beed7.
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:LBetter Auth
APPBetter-Auth1.6.0 – 1.6.11 (bez)
Powiązane podatności
Better Auth: pominięcie weryfikacji client_secret w endpointach OAuth token
SSRF w Better Auth — niezweryfikowane endpointy OIDC w pluginie SSO
Race condition w Better Auth umożliwia wielokrotne użycie kodu autoryzacyjnego OAuth2
Better Auth: Auth Bypass przez nieprawidłowe wiązanie konta OAuth
Race condition w Better Auth — wielokrotne użycie refresh token