| Termin | Definicja |
|---|---|
| token o nieograniczonym czasie ważności | Token o nieograniczonym czasie ważności utrudnia egzekwowanie zasady regularnej rotacji poświadczeń. Czym jest token o nieograniczonym czasie ważnościToken o nieograniczonym czasie ważności to poświadczenie, którego wartość nie zawiera ustalonego terminu wygaśnięcia albo którego serwer nie sprawdza pod kątem upływu czasu. Po przedstawieniu takiego tokenu aplikacja może uznać żądanie za pochodzące od określonego użytkownika, urządzenia lub usługi. W praktyce token może być ciągiem losowych znaków przechowywanym po stronie serwera albo podpisanym dokumentem, takim jak token JWT. Samo słowo „token” nie oznacza jednak jednego konkretnego formatu ani jednego protokołu, dlatego sposób obsługi zależy od systemu, który go wystawia i weryfikuje. Największe ryzyko wynika z tego, że skopiowany token może pozostać użyteczny przez cały okres istnienia konta lub usługi. Jeżeli token działa jako bearer token, system zwykle nie wymaga dodatkowego dowodu własności: osoba, która go posiada, może próbować użyć go w żądaniu. Utrata tokenu przez wyciek z przeglądarki, historię poleceń, log aplikacji, kopię zapasową albo złośliwe oprogramowanie może więc umożliwić dostęp bez znajomości hasła użytkownika. Dlaczego brak wygaśnięcia utrudnia rotację poświadczeńRegularna rotacja polega na okresowym zastępowaniu starego poświadczenia nowym. Przy tokenie z określonym terminem ważności system może ograniczyć czas działania ujawnionego tokenu, nawet jeśli nie wykryto samego wycieku. Po upływie terminu serwer odrzuca token na podstawie zapisanej daty lub pola czasu zawartego w podpisanym dokumencie. Token bez wygaśnięcia nie zapewnia takiego automatycznego ograniczenia. Każdy egzemplarz trzeba unieważnić osobno albo zmienić reguły weryfikacji tak, aby przestał być akceptowany. Problem jest szczególnie widoczny wtedy, gdy ten sam token został zapisany w wielu miejscach. Może znajdować się w konfiguracji programu, menedżerze sekretów, zmiennej środowiskowej, pliku konfiguracyjnym, zadaniu harmonogramu lub na kilku komputerach. Wymiana tokenu w jednym miejscu nie unieważnia kopii pozostawionych gdzie indziej. Jeżeli system nie prowadzi rejestru wydanych poświadczeń, nie przechowuje ich identyfikatorów i nie udostępnia mechanizmu odwołania, administrator może nie mieć pewności, czy stare poświadczenie zostało skutecznie usunięte. Rotacja nie powinna ograniczać się do wygenerowania nowej wartości. Należy także określić moment unieważnienia starego tokenu, sprawdzić wszystkie zależności korzystające z poświadczenia oraz zweryfikować, czy aplikacje przełączyły się na nową wartość. W środowiskach, w których krótka przerwa jest niedopuszczalna, stosuje się kontrolowane nakładanie okresów działania dwóch tokenów: nowego i starego. Stary token musi jednak mieć jasno określony termin wycofania, a nie pozostawać aktywny bez końca. Unieważnianie, zakres uprawnień i kontrola użyciaToken bez terminu wygaśnięcia powinien mieć skuteczny mechanizm unieważniania. Serwer może przechowywać identyfikator tokenu na liście odwołanych poświadczeń, oznaczać token jako nieaktywny w bazie albo zmieniać klucz lub wersję podpisu używaną do weryfikacji. Każda z tych metod ma konsekwencje operacyjne. Lista odwołań musi być dostępna podczas sprawdzania żądania, a zmiana klucza może unieważnić wiele innych tokenów jednocześnie. W przypadku tokenu JWT samo sprawdzenie poprawności podpisu nie wystarcza do cofnięcia tokenu, jeśli odbiorca nie ma dodatkowego mechanizmu kontroli stanu. Ograniczenie uprawnień zmniejsza skutki przejęcia, ale nie zastępuje wygaśnięcia. Token powinien otrzymać wyłącznie zakres wymagany przez konkretną funkcję, na przykład dostęp tylko do odczytu wybranego zasobu. Warto oddzielać tokeny użytkowników od tokenów zadań automatycznych, stosować różne poświadczenia dla środowisk testowych i produkcyjnych oraz nadawać każdemu tokenowi możliwy do śledzenia identyfikator. Takie rozdzielenie pozwala wycofać jedno poświadczenie bez zatrzymywania pozostałych procesów. Kontrola użycia wymaga rejestrowania co najmniej czasu żądania, identyfikatora tokenu lub sesji, zakresu operacji, adresu źródłowego i wyniku autoryzacji, przy czym nie należy zapisywać pełnej wartości tokenu w logach. Analiza nietypowej częstotliwości żądań, nowych lokalizacji lub nagłej zmiany rodzaju operacji może pomóc wykryć przejęcie. Logi nie unieważniają poświadczenia, ale dostarczają informacji potrzebnych do podjęcia decyzji o jego odwołaniu i rozpoczęciu rotacji. Bezpieczniejszy sposób stosowania tokenówW większości systemów praktyczniejsze jest połączenie krótkotrwałego tokenu dostępowego z kontrolowanym mechanizmem odnowienia. Token dostępowy może wygasnąć po krótkim czasie, a odnowienie wymaga sprawdzenia stanu konta, urządzenia lub sesji. Dokładny czas powinien wynikać z modelu zagrożeń i charakteru operacji; nie istnieje jedna uniwersalna wartość poprawna dla wszystkich aplikacji. Poświadczenia należy przechowywać w przeznaczonym do tego magazynie sekretów albo w bezpiecznym magazynie systemowym, przesyłać wyłącznie przez szyfrowane połączenie i chronić przed przypadkowym ujawnieniem w kodzie oraz logach. Przed wdrożeniem trzeba udokumentować właściciela tokenu, jego zakres uprawnień, miejsce użycia, sposób rotacji i procedurę awaryjnego unieważnienia. Należy również przetestować, co dzieje się po odebraniu tokenu, zmianie hasła, zablokowaniu konta i usunięciu urządzenia. Jeżeli aplikacja nie potrafi odwołać długowiecznego tokenu, jego użycie powinno być traktowane jako istotne ryzyko konfiguracyjne wymagające ograniczenia dostępu i dodatkowego monitorowania. Przy diagnostyce komputera lub laptopa warto sprawdzić, czy token nie został zapisany w plikach konfiguracyjnych, pamięci podręcznej, historii terminala albo logach programu. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a podczas diagnostyki może również pomóc ustalić, czy problemy z aplikacją wynikają z lokalnej konfiguracji, uszkodzonego profilu użytkownika lub nieprawidłowego przechowywania poświadczeń. |