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 kluczowym elementem uwierzytelniania w serwisie i w wielu przypadkach jest to jedyne dane identyfikujące konkretnego zalogowanego użytkownika. Problem polega na tym, że jeśli atakujący może ustawić lub poznać identyfikator sesji innego użytkownika, może użyć tokena sesji, a następnie działać jako użytkownik.
Zazwyczaj odbywa się to poprzez nakłonienie 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 następnie zaloguje się przy użyciu identyfikatora sesji, a serwer nie przypisze mu nowego identyfikatora sesji zaloguj się, atakujący może po prostu ustawić swój identyfikator sesji na taki sam i mieć dostęp do konto.
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, który podąży za linkiem, zostanie zalogowany na konto użytkownika.
Naprawa fiksacji sesji
Istnieje kilka rozwiązań tego problemu i jak zwykle 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 tak, aby zawsze akceptował tylko identyfikatory sesji, które wygenerował, i jawnie odrzucał wszelkie identyfikatory sesji dostarczone 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órych potrzebuje atakujący, aby uzyskać 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 na każde żądanie, 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.