FixVibe

// docs / baas security / auth0 hardening

Lista kontrolna bezpieczeństwa Auth0: 22 elementy

Auth0 to platforma tożsamości jako usługa z ogromną powierzchnią — aplikacje, API (serwery zasobów), najemcy, akcje, reguły (stare), połączenia i granty. Błędna konfiguracja któregokolwiek z nich to obejście uwierzytelniania. Ta lista kontrolna to 22-elementowy audyt obejmujący aplikacje, listy dozwolonych callbacków / wylogowania, tokeny i rotację odświeżania, niestandardowe akcje, RBAC, wykrywanie anomalii i bieżące monitorowanie. Każdy element jest weryfikowalny w panelu Auth0 w mniej niż 10 minut.

Dla równoważnej listy kontrolnej w Clerk zobacz Lista kontrolna bezpieczeństwa Clerk. Dla tła, dlaczego błędne konfiguracje warstwy tożsamości są ślepymi punktami narzędzi AI, zobacz Dlaczego narzędzia kodowania AI pozostawiają luki w bezpieczeństwie.

Typ aplikacji i typy grantów

Typ aplikacji i włączone typy grantów to ustawienia o największym wpływie w Auth0. Pomylenie ich otwiera klasy ataków, których żadna ilość kodu frontendowego nie zamknie.

  1. Użyj Typu aplikacji = Single Page Application dla aplikacji tylko w przeglądarce i Regular Web Application dla aplikacji renderowanych po stronie serwera. Niewłaściwy typ pozwala na niewłaściwe typy grantów — np. Regular Web App z grantem SPA umożliwia przepływ Implicit bez PKCE, który wycieka tokeny przez fragmenty URL.
  2. Wyłącz typ grantu Implicit w każdej aplikacji. Panel → Application → Advanced Settings → Grant Types → odznacz Implicit. Przepływ Implicit zwraca tokeny w fragmentach URL, gdzie są logowane w historii przeglądarki i analityce. Użyj Authorization Code z PKCE zamiast tego.
  3. Wyłącz grant Password, chyba że masz udokumentowaną potrzebę. Grant Resource Owner Password Credentials (ROPC) wymaga, abyś sam obsługiwał hasła użytkowników — pokonując większość tego, dla czego kupiłeś Auth0. Wyłącz go, chyba że integrujesz starszy system.
  4. Włącz Authorization Code z PKCE w każdym kliencie publicznym. Panel → Advanced Settings → OAuth → JsonWebToken Signature Algorithm = RS256, OIDC Conformant = włączone. PKCE jest wymagane dla aplikacji mobilnych i SPA, aby zapobiec przechwyceniu kodu.

Listy dozwolonych callbacków i URL wylogowania

Otwarte przekierowania na ścieżce callbacka OAuth to prymityw kradzieży tokenów. Lista dozwolonych Auth0 to Twoja jedyna obrona.

  1. Ustaw Allowed Callback URLs na dokładną produkcyjną ścieżkę callbacka — bez wieloznaczników. https://yourapp.com/callback, a nie https://yourapp.com/*. Wieloznaczne callbacki pozwalają atakującym przekierowywać tokeny do dowolnych podścieżek w Twojej domenie.
  2. Ustaw Allowed Logout URLs na skończoną listę. Ta sama reguła: tylko jawne URL. Otwarte przekierowanie wylogowania pozwala atakującym tworzyć strony phishingowe, które wyglądają jak Twój stan po wylogowaniu.
  3. Ustaw Allowed Web Origins tylko na Twoje produkcyjne pochodzenie. Używane do cichej autoryzacji (odnowienie tokenu przez ukryty iframe). Wieloznaczne pochodzenie pozwala stronom atakującego wykonywać cichą autoryzację wobec Twojego najemcy.
  4. Ustaw Allowed CORS origins dla punktów końcowych API, a nie aplikacji. Tenant Settings → Advanced → Allowed CORS origins. Domyślnie pusta (ograniczona); dodawaj tylko jawne pochodzenia, które kontrolujesz.

Tokeny i rotacja odświeżania

Czas życia tokenu, rotacja odświeżania i algorytm podpisywania decydują o promieniu wybuchu każdego wycieku tokenu.

  1. Włącz rotację tokenu odświeżania. Application → Refresh Token Settings → Rotation. Każde odświeżenie wystawia nowy token odświeżania i unieważnia stary. W połączeniu z absolutnym wygaśnięciem to powstrzymuje kradzież tokenów.
  2. Ustaw Refresh Token Reuse Interval na 0 (lub tak nisko, jak pozwala Twoja tolerancja powtórki). Interwał ponownego użycia pozwala na użycie tokenu dwukrotnie w tym samym oknie — wyłącz to, chyba że masz konkretny powód, aby go zachować.
  3. Ustaw Absolute Refresh Token Expiry na 14-30 dni, a nie nieskończoność. Application → Refresh Token Expiration → Absolute Expiration. Auth0 domyślnie używa tylko Inactivity, co oznacza, że bezczynna sesja może trwać latami.
  4. Ustaw JWT Signature Algorithm na RS256. Application → Advanced → OAuth → JsonWebToken Signature Algorithm. RS256 używa podpisywania asymetrycznego, więc klient nie może sfałszować tokenów. Nigdy nie używaj HS256 dla aplikacji skierowanych do klienta.
  5. Weryfikuj roszczenia aud i iss na każdym JWT, który otrzymuje Twoje API. Użyj oficjalnego Auth0 SDK po stronie serwera — weryfikuje je automatycznie. Ręczne parsowanie JWT zwykle pomija walidację odbiorcy, co jest obejściem uwierzytelniania.

Akcje i niestandardowy kod

Auth0 Actions (i starsze Rules) działają po stronie serwera przy logowaniu i innych zdarzeniach cyklu życia. Mają dostęp do całego kontekstu żądania. Niezabezpieczony kod tutaj to luka obejmująca całego najemcę.

  1. Nigdy nie loguj event.user ani event.transaction jako całego obiektu. Zawierają adresy e-mail, adresy IP i inne PII. Używaj tylko logowania na poziomie pól i loguj tylko to, czego potrzebujesz.
  2. Użyj magazynu sekretów dla każdego klucza API lub URL webhooka. Actions → Edit → Secrets. Nigdy nie wstawiaj inline klucza API jako literału ciągu w kodzie akcji — kod jest widoczny dla każdego z dostępem do edytora akcji w najemcy.
  3. Waliduj dane wejściowe przed utrwaleniem ich jako user_metadata lub app_metadata. Akcja samoobsługowa, która zapisuje event.body.name do user.user_metadata.display_name, jest wektorem stored-XSS, jeśli Twój frontend renderuje to pole bez ekranowania.

RBAC i serwery zasobów

Jeśli używasz Auth0 RBAC, mapowanie roli na uprawnienia to Twoja warstwa autoryzacji. Pomyl to, a każdy uwierzytelniony użytkownik może trafić na punkty końcowe administratora.

  1. Definiuj serwery zasobów (API) jawnie w panelu Auth0, a nie w locie. Każde API ma identyfikator (audience), zakresy i ustawienia podpisywania. Bez zarejestrowanego API wszystkie tokeny są wystawiane dla domyślnego „Auth0 Management API" — niewłaściwa publiczność.
  2. Skonfiguruj Uprawnienia na API i wymagaj ich w swoim kodzie z roszczeniem scope. Nie sprawdzaj członkostwa w roli w logice aplikacji; sprawdzaj zakresy w tokenie dostępu. Zakresy to natywny mechanizm autoryzacji OAuth.
  3. Przetestuj, że uwierzytelniony użytkownik bez wymaganej roli / zakresu nie może trafić na uprzywilejowane punkty końcowe. Zaloguj się jako zwykły użytkownik, spróbuj wywołać POST /api/admin/users/delete. Odpowiedź musi być 403.

Wykrywanie anomalii i dzienniki najemcy

Auth0 emituje zdarzenia o wysokim sygnale. Ustaw je, aby alarmowały Twój zespół, a nie tylko siedziały w buforze dziennika.

  1. Włącz Ochronę przed atakami: Bot Detection, Brute Force, Suspicious IP Throttling. Panel → Security → Attack Protection. Każda jest domyślnie wyłączona na bezpłatnych poziomach; włącz je wszystkie dla produkcji.
  2. Streamuj dzienniki najemcy do SIEM lub dzienników aplikacji. Panel → Monitoring → Streams. Auth0 zachowuje dzienniki przez 30 dni na większości planów; długoterminowe zachowanie wymaga strumienia do Twojego własnego systemu.
  3. Alarmuj przy szczytach fcoa (nieudane uwierzytelnianie międzypochodzeniowe) i fp (nieudane logowanie). Wybuch tych w krótkim oknie to credential stuffing. Kieruj do swojego kanału on-call.

Następne kroki

Uruchom skanowanie FixVibe wobec swojego produkcyjnego URL — kontrola baas.clerk-auth0 flaguje sekrety klienta Auth0 spakowane w JavaScript i inne klasy ujawniania dostawcy tożsamości. Dla równoważnika w Clerk zobacz Lista kontrolna bezpieczeństwa Clerk. Dla widoku parasolowego obejmującego dostawców BaaS przeczytaj Skaner błędnych konfiguracji BaaS.

// skanuj swoją powierzchnię baas

Znajdź otwartą tabelę, zanim zrobi to ktoś inny.

Podaj produkcyjny adres URL. FixVibe wyliczy dostawców BaaS, z którymi komunikuje się Twoja aplikacja, pobierze odciski palców ich publicznych punktów końcowych i zgłosi, co nieuwierzytelniony klient może odczytać lub zapisać. Bezpłatnie, bez instalacji, bez karty.

  • Bezpłatny poziom — 3 skanowania / miesiąc, bez karty przy rejestracji.
  • Pasywne pobieranie odcisków palców BaaS — bez weryfikacji domeny.
  • Supabase, Firebase, Clerk, Auth0, Appwrite i inne.
  • Podpowiedzi naprawy AI przy każdym znalezisku — wklej z powrotem do Cursor / Claude Code.
Lista kontrolna bezpieczeństwa Auth0: 22 elementy — Docs · FixVibe