Istnieje wiele różnych rodzajów luk w zabezpieczeniach znalezionych na stronach internetowych, jedna interesująca nazywa się „Session Fixation”. Utrwalanie sesji to problem, w którym atakujący może wpłynąć na identyfikator sesji, czyli identyfikator sesji użytkownika, a następnie użyć go do uzyskania dostępu do swojego konta. Istnieją dwa sposoby, w jakie ten typ luki może działać, może pozwolić atakującemu na znalezienie lub ustawienie identyfikatora sesji innego użytkownika.
Jak przeprowadzany jest atak polegający na utrwaleniu sesji
Identyfikator sesji użytkownika jest często kluczową częścią uwierzytelniania na stronie internetowej i w wielu przypadkach jest jedynymi danymi, które identyfikują konkretnego zalogowanego użytkownika. Problem polega na tym, że jeśli atakujący może ustawić lub poznać identyfikator sesji innego użytkownika, mogą używać tokena sesji, a następnie działać jako użytkownik.
Zazwyczaj odbywa się to poprzez nakłanianie użytkownika do kliknięcia łącza typu phishing. Sam link jest całkowicie legalny, ale zawiera zmienną, która ustawia określony identyfikator sesji. Jeśli użytkownik zaloguje się następnie przy użyciu identyfikatora sesji, a serwer nie przypisze mu nowego identyfikatora sesji podczas logowania, atakujący może po prostu ustawić taki sam identyfikator sesji i uzyskać dostęp do konta ofiary.
Innym sposobem, w jaki atakujący może odkryć identyfikator sesji ofiary, jest pojawienie się go w adresie URL. Na przykład, jeśli atakujący może nakłonić ofiarę do wysłania linku zawierającego identyfikator sesji ofiary, atakujący może użyć identyfikatora sesji, aby uzyskać dostęp do konta ofiary. W niektórych przypadkach może się to zdarzyć zupełnie przypadkowo. Na przykład, jeśli użytkownik skopiuje adres URL z identyfikatorem sesji i wklei go do znajomego lub na forum, każdy użytkownik podążający za linkiem zostanie zalogowany na konto użytkownika.
Naprawa utrwalania sesji
Istnieje kilka rozwiązań tego problemu i jak zawsze najlepszym rozwiązaniem jest wdrożenie jak największej liczby poprawek w ramach szczegółowej strategii obrony. Pierwszym rozwiązaniem jest zmiana identyfikatora sesji użytkownika podczas logowania. Zapobiega to możliwości wpływania przez atakującego na identyfikator sesji zalogowanego użytkownika. Można również skonfigurować serwer, aby zawsze akceptował tylko identyfikatory sesji, które wygenerował, i jawnie odrzucał wszelkie identyfikatory sesji podane przez użytkownika.
Witryna powinna być skonfigurowana tak, aby nigdy nie umieszczać żadnych wrażliwych danych użytkownika, takich jak identyfikator sesji w adresie URL i powinna umieszczać je w parametrze żądania GET lub POST. Zapobiega to przypadkowemu naruszeniu własnego identyfikatora sesji przez użytkownika. Używając zarówno identyfikatora sesji, jak i oddzielnego tokena uwierzytelniania, podwajasz ilość informacji, które atakujący musi zdobyć, i uniemożliwiasz atakującym dostęp do sesji ze znanymi identyfikatorami sesji.
Ważne jest, aby wszystkie ważne identyfikatory sesji dla użytkownika zostały unieważnione po kliknięciu przycisku wylogowania. Możliwe jest ponowne wygenerowanie identyfikatora sesji przy każdym żądaniu, jeśli poprzednie identyfikatory sesji zostaną unieważnione, uniemożliwia to również atakującym użycie znanego identyfikatora sesji. Takie podejście znacznie zmniejsza również okno zagrożenia, jeśli użytkownik ujawni swój własny identyfikator sesji.
Włączając wiele z tych podejść, dogłębna strategia obrony może wyeliminować ten problem jako zagrożenie bezpieczeństwa.