Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

zaakceptowanie przeterminowanego tokenu

Termin Definicja
zaakceptowanie przeterminowanego tokenu

Zaakceptowanie przeterminowanego tokenu to poważna luka pozwalająca korzystać z nieważnych już uprawnień.

Na czym polega zaakceptowanie przeterminowanego tokenu

Token uwierzytelniający jest wartością przekazywaną przez klienta do aplikacji w celu potwierdzenia tożsamości albo uprawnień do wykonania określonej operacji. Może występować jako ciasteczko sesyjne, token dostępu OAuth 2.0, klucz API albo podpisany token JWT. Każdy z tych mechanizmów powinien mieć jasno określony czas ważności lub sposób unieważnienia. Zaakceptowanie przeterminowanego tokenu oznacza, że serwer nadal uznaje taki token za prawidłowy po upływie przewidzianego okresu, mimo że użytkownik lub system wystawił go tylko na ograniczony czas.

W przypadku tokenu JWT zgodnego z RFC 7519 czas wygaśnięcia jest zwykle określany przez pole exp, zawierające datę w formacie NumericDate. Odbiorca tokenu powinien odrzucić go, gdy bieżący czas jest późniejszy od wartości exp, z uwzględnieniem ewentualnego, niewielkiego marginesu na różnicę zegarów. Sam fakt, że token ma poprawny podpis, nie wystarcza do jego zaakceptowania: podpis potwierdza integralność i źródło danych, ale nie znosi ograniczenia czasowego.

Jak błąd zmienia przepływ uwierzytelniania

Prawidłowy przepływ wygląda następująco: klient dołącza token do żądania, serwer weryfikuje jego format, podpis, wystawcę, odbiorcę, zakres uprawnień oraz ważność czasową, a następnie dopiero podejmuje decyzję o dostępie. Przy błędnej implementacji kontrola exp może zostać pominięta, wykonana po autoryzacji albo zastosowana tylko w jednej ścieżce programu. W rezultacie ten sam przeterminowany token może być odrzucany przy zwykłym odczycie danych, ale akceptowany przy zmianie hasła, pobraniu pliku lub modyfikacji ustawień konta.

Podobne ryzyko występuje przy tokenach okaziciela używanych w OAuth 2.0. Token dostępu powinien być przedstawiany przez klienta w nagłówku Authorization: Bearer, a serwer powinien sprawdzić jego aktualność i zakres. Jeśli aplikacja traktuje token jako stały identyfikator użytkownika bez ponownego sprawdzenia czasu życia lub statusu unieważnienia, osoba, która uzyskała ten token wcześniej, może nadal wykonywać operacje po wylogowaniu, zmianie uprawnień albo zakończeniu sesji. Problem może dotyczyć także pamięci podręcznej: system przechowujący wynik walidacji zbyt długo może uznać wygasły token za ważny nawet wtedy, gdy podstawowy moduł sprawdzający działa poprawnie.

Skutki techniczne i sposób potwierdzenia podatności

Skutek zależy od uprawnień zapisanych w tokenie. Przeterminowany token o ograniczonym zakresie może pozwolić na dalszy dostęp do pojedynczego zasobu, natomiast token administracyjny może umożliwić wykonywanie operacji o znacznie większym wpływie. W aplikacji lokalnej problem może ujawnić się jako dostęp do nieaktualnej sesji po wznowieniu programu. W usłudze internetowej może prowadzić do utrzymania dostępu do konta po wygaśnięciu sesji, mimo że interfejs użytkownika pokazuje już stan wylogowania. Sam błąd nie oznacza automatycznie przejęcia systemu, ale zwiększa okno czasowe wykorzystania przechwyconych poświadczeń.

Weryfikację należy prowadzić na autoryzowanym środowisku testowym. Trzeba zapisać moment wystawienia tokenu, jego deklarowany czas wygaśnięcia, moment wykonania żądania oraz odpowiedź serwera. Dla JWT można odczytać nagłówek i ładunek bez ujawniania klucza podpisującego, ale nie wolno traktować takiego odczytu jako dowodu ważności. Test powinien obejmować żądanie przed wygaśnięciem, żądanie po wygaśnięciu, ponowienie tego samego żądania po wylogowaniu oraz próbę użycia tokenu po odebraniu uprawnień. Oczekiwanym rezultatem po wygaśnięciu jest odmowa, zwykle z kodem HTTP 401, a nie wykonanie operacji i zwrócenie danych.

Naprawa walidacji tokenu na laptopie i komputerze

Usunięcie problemu wymaga poprawy po stronie serwera lub programu, który podejmuje decyzję o dostępie. Walidacja powinna odbywać się w jednym, wspólnym komponencie używanym przez wszystkie chronione endpointy. Dla JWT należy sprawdzać między innymi podpis, algorytm zaakceptowany przez konfigurację, exp, a w zależności od zastosowania także nbf, iss, aud i zakres uprawnień. Wartości czasu powinny być porównywane z wiarygodnym zegarem systemowym, a tolerancja na różnicę zegarów musi być mała i jawnie skonfigurowana. Po odrzuceniu tokenu aplikacja nie powinna wykonywać części operacji, która wymaga uwierzytelnienia, ani ujawniać szczegółów ułatwiających obchodzenie kontroli.

Na komputerze użytkownika należy również sprawdzić, czy aplikacja nie przechowuje tokenów w plikach tymczasowych, pamięci podręcznej lub lokalnym magazynie dłużej, niż wynika to z ich przeznaczenia. Usunięcie tokenu z interfejsu nie zastępuje unieważnienia po stronie serwera. Po zmianie kodu trzeba przetestować odświeżanie tokenu, wylogowanie, utratę połączenia z siecią i ponowne uruchomienie programu. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a przy problemach z aplikacją może pomóc w zebraniu objawów, logów oraz informacji potrzebnych do przekazania sprawy administratorowi lub producentowi oprogramowania.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę