Luki w OAuth i wzorce ataków
Proszę poznać manipulowanie redirect URI, ataki CSRF na endpoint autoryzacji oraz luki związane z wyciekiem tokenów.
Luki w OAuth i wzorce ataków to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.
Open Redirect w redirect_uri
Serwery autoryzacji OAuth muszą rygorystycznie weryfikować parametr redirect_uri. Jeśli serwer zezwala na dopasowanie prefiksu lub symboli wieloznacznych (np. akceptuje dowolny adres URL zaczynający się od "https://app.example.com"), napastnik może przygotować żądanie autoryzacji przekierowujące do "https://app.example.com.attacker.com/steal" albo do otwartego przekierowania w prawidłowej domenie, kradnąc kod autoryzacyjny.
CSRF w punkcie końcowym autoryzacji
Bez ochrony przed CSRF napastnik może zainicjować przepływ OAuth i nakłonić przeglądarkę ofiary do jego ukończenia. Ofiara nieświadomie autoryzuje klienta napastnika. Zapobiega temu parametr "state" (RFC 6749): klient generuje losową wartość state, dołącza ją do żądania i sprawdza, czy w wywołaniu zwrotnym otrzymał tę samą wartość. Niezgodność powoduje przerwanie przepływu.
Przechwycenie kodu autoryzacyjnego
Na platformach mobilnych złośliwe aplikacje mogą zarejestrować ten sam niestandardowy schemat URI co prawidłowy klient OAuth i przechwytywać kody autoryzacyjne przekierowywane po uwierzytelnieniu użytkownika. PKCE (RFC 7636) zapewnia pełną ochronę: przechwycony kod jest bezużyteczny bez wartości code verifier, którą na początku przepływu wygenerowała wyłącznie prawidłowa aplikacja.
Wyciek tokenu przez nagłówek Referer
Gdy token ID lub token dostępu znajduje się we fragmencie adresu URL albo w parametrze zapytania, kolejne przejścia z tej strony powodują umieszczenie adresu URL w nagłówku Referer, co może prowadzić do wycieku tokenu do skryptów analitycznych firm trzecich lub dostawców CDN. Aby uniknąć pojawiania się tokenów w adresach URL, należy zawsze używać przepływu z kodem autoryzacyjnym i dostarczaniem tokenów za pośrednictwem kanału zaplecza.
Ataki typu mix-up w konfiguracjach z wieloma dostawcami
Gdy klient obsługuje wielu dostawców OAuth, ataki typu mix-up nakłaniają klienta do wysłania kodu autoryzacyjnego uzyskanego od dostawcy A do punktu końcowego tokenów dostawcy B. Klient musi zweryfikować claim "iss" w tokenach ID oraz powiązać wywołanie zwrotne z konkretnym dostawcą, który zainicjował przepływ, korzystając z parametru state lub JARM (JWT-Secured Authorization Response Mode).
SSRF przez redirect_uri
Ataki typu server-side request forgery (SSRF) wymierzone są w implementacje OAuth, które wykonują żądania HTTP po stronie serwera do adresu redirect_uri. Jeśli serwer autoryzacji pobiera redirect_uri w celu jego zweryfikowania, napastnik może podać wewnętrzny adres IP (np. http://169.254.169.254/latest/meta-data/), aby uzyskać dostęp do metadanych instancji w chmurze lub usług wewnętrznych. Rygorystyczna weryfikacja redirect_uri na podstawie listy dozwolonych adresów zapobiega temu zagrożeniu.
Przejęcie konta przez kolizję claim adresu e-mail
Wiele aplikacji używa claim adresu e-mail z tokenu ID OIDC do łączenia kont między dostawcami. Jeśli napastnik kontroluje adres e-mail odpowiadający kontu ofiary u innego dostawcy, może zarejestrować się u innego dostawcy przy użyciu tego adresu i uzyskać dostęp do konta ofiary. Ochrona polega na łączeniu kont wyłącznie na podstawie pary (iss, sub), nigdy samego adresu e-mail.
Pomieszanie algorytmów JWT
Ataki polegające na pomieszaniu algorytmów JWT wykorzystują implementacje, które ufają nagłówkowi "alg" przy wyborze algorytmu weryfikacji. Atak polega na zmianie wartości "alg" z "RS256" na "HS256" i podpisaniu tokenu kluczem publicznym serwera użytym jako sekret HMAC (ponieważ klucz publiczny jest jawny). Ochrona: w kodzie weryfikującym należy zawsze jawnie określać oczekiwany algorytm i nigdy nie ufać wartości alg z nagłówka tokenu.
Wyłudzanie danych OAuth przez podszywanie się pod ekran zgody
Napastnicy rejestrują złośliwe klientów OAuth pod nazwami i z logotypami wyglądającymi wiarygodnie, a następnie wysyłają do celów linki phishingowe. Ofiara widzi prawdziwy ekran zgody OAuth (hostowany przez Google, Microsoft itp.) dotyczący złośliwej aplikacji i udziela jej dostępu. Ochrona: należy sprawdzić, czy client_id odpowiada oczekiwanej aplikacji; Google i Microsoft udostępniają programy weryfikacji klientów dla prawidłowych aplikacji.
Ataki polegające na eskalacji zakresu
Eskalacja zakresu występuje, gdy klient uzyskuje tokeny z szerszymi uprawnieniami, niż użytkownik autoryzował. Błędy implementacji polegające na pomijaniu weryfikacji zakresu w punkcie końcowym tokenów, buforowaniu tokenów z połączonymi zakresami z różnych żądań lub braku sprawdzenia, czy zakres w wystawionym tokenie nie wykracza poza zakres autoryzowany, mogą prowadzić do eskalacji uprawnień za pośrednictwem OAuth.
Podsumowanie najlepszych praktyk bezpieczeństwa
Implementacje OAuth należy chronić przez: stosowanie walidacji redirect_uri na podstawie dokładnego dopasowania, wymaganie PKCE dla wszystkich klientów publicznych, weryfikowanie parametru state w celu ochrony przed CSRF, wiązanie tokenów ID na podstawie (iss, sub), a nie adresu e-mail, jawne określanie oczekiwanych algorytmów JWT, żądanie minimalnych zakresów, używanie krótkotrwałych tokenów dostępu z rotacją refresh tokenów oraz kontrolowanie wyglądu ekranów zgody pod kątem ryzyka podszywania się pod markę.
Sprawdzenie redirect_uri w OAuth
Serwer autoryzacji OAuth akceptuje każdy redirect_uri, który zaczyna się od "https://app.example.com". Jaki atak to umożliwia?
Podsumowanie lekcji: schematy ataków OAuth
Najważniejsze ataki OAuth: otwarte przekierowanie wskutek zbyt liberalnej walidacji redirect_uri (należy stosować dokładne dopasowanie), CSRF wskutek braku parametru state, przechwycenie kodu na urządzeniach mobilnych (ograniczane przez PKCE), wyciek tokenów w adresach URL, ataki typu mix-up w konfiguracjach z wieloma dostawcami (należy weryfikować iss), SSRF przez pobieranie redirect_uri po stronie serwera, kolizja claim adresu e-mail (należy używać iss+sub), pomieszanie algorytmów JWT (należy wymusić oczekiwany algorytm) oraz phishing przez fałszywe ekrany zgody.
Ucz się Cryptology Academy dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 67
- Lekcje
- 261
Często zadawane pytania
Czy lekcja „Luki w OAuth i wzorce ataków” jest bezpłatna?
Tak — pełny tekst „Luki w OAuth i wzorce ataków” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Luki w OAuth i wzorce ataków”?
Proszę poznać manipulowanie redirect URI, ataki CSRF na endpoint autoryzacji oraz luki związane z wyciekiem tokenów. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?
Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Luki w OAuth i wzorce ataków”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?
Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Przepływy OAuth 2.0 i typy tokenów
- PKCE: zabezpieczanie klientów publicznych
- Uprawnienia OpenID Connect i tokeny ID
- Luki w OAuth i wzorce ataków