Biblioteka better-auth w wersjach przed 1.4.2 pozwala zewnętrznemu atakującemu na nadpisanie bazowego adresu URL (baseURL) poprzez wysłanie pierwszego żądania do serwera po jego uruchomieniu. Skutkuje to tym, że wszystkie trasy aplikacji zwracają odpowiedź 404, co uniemożliwia korzystanie z serwisu wszystkim użytkownikom (denial of service).
▸ Pokaż oryginał (EN)
better-auth (npm) before 1.4.2 allows an external request to configure baseURL when it is not otherwise defined (e.g., BETTER_AUTH_URL is unset). An attacker able to make the very first request to the server after startup can poison the router's base path, causing all routes to return 404 for all users (denial of service). The issue is not reachable when baseURL is explicitly configured or on typical managed hosting platforms.
Jeśli zmienna środowiskowa BETTER_AUTH_URL (lub inna konfiguracja baseURL) nie jest jawnie ustawiona, aplikacja akceptuje wartość baseURL z pierwszego przychodzącego żądania HTTP. Atakujący, który zdoła wysłać żądanie jako pierwszy po uruchomieniu serwera, może wstrzyknąć dowolną wartość bazowej ścieżki routera. Po zatruciu konfiguracji wszystkie kolejne żądania do poprawnych tras są obsługiwane przez router ze zmienioną bazą i zwracają błąd 404, co efektywnie paraliżuje działanie aplikacji dla wszystkich użytkowników. Problem nie występuje, gdy baseURL jest jawnie skonfigurowany lub gdy aplikacja działa na typowych platformach hostingowych zarządzanych (managed hosting).
Atakujący może trwale (do restartu serwera) spowodować niedostępność wszystkich tras aplikacji, zwracając błąd 404 dla każdego użytkownika — klasyczny denial of service. Atak nie wymaga uwierzytelnienia ani żadnej interakcji po stronie ofiary.
Należy zaktualizować pakiet better-auth do wersji 1.4.2 lub nowszej. Jako obejście — niezależnie od aktualizacji — należy jawnie ustawić zmienną środowiskową BETTER_AUTH_URL lub skonfigurować baseURL w kodzie aplikacji, co eliminuje możliwość zatrucia konfiguracji przez zewnętrzne żądanie.
Pakiet better-auth (npm) w wersjach przed 1.4.2, gdy baseURL nie jest jawnie skonfigurowany (np. brak zmiennej środowiskowej BETTER_AUTH_URL) i aplikacja nie jest hostowana na typowej zarządzanej platformie hostingowej.
Podatność jest osiągalna wyłącznie w wąskim oknie czasowym tuż po uruchomieniu serwera (race condition na pierwsze żądanie). Na typowych platformach managed hosting problem nie występuje zgodnie z opisem producenta.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/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