| 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 tokenuToken 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 Jak błąd zmienia przepływ uwierzytelnianiaPrawidł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 Podobne ryzyko występuje przy tokenach okaziciela używanych w OAuth 2.0. Token dostępu powinien być przedstawiany przez klienta w nagłówku Skutki techniczne i sposób potwierdzenia podatnościSkutek 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 komputerzeUsunię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ę, 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. |