23 listopada 2010
Co to jest session fixation i jak się przed nim bronić?
wtorek, listopada 23, 2010 | Autor:
\m/ojtek

Sesje w aplikacjach internetowych
Ze względu na fakt, że protokół HTTP jest bezstanowy, wyszła potrzeba, aby identyfikować wywołania tego samego użytkownika i przechowywać zmienne pomiędzy nimi. Tym mechanizmem są sesje. Każda sesja jest identyfikowana ciągiem znaków (domyślnie jest to losowy, 32 znakowy łańcuch), który jest przechowywany w ciasteczku (cookies) lub przekazywany przez URL. Identyfikator sesji jest unikalny dla użytkownika, a więc osoba, która w nieuprawniony sposób wejdzie w jego posiadanie, praktycznie wykrada tożsamość danego użytkownika w danej aplikacji (portalu, sklepie internetowym, blogu, portalu społecznościowym).
Zagrożenia
Jako że, ciasteczka, czyli mechanizm zapisu informacji w przeglądarce użytkownika przez aplikację internetową, są mechanizmem względnie bezpiecznym, projektanci aplikacji zawsze powinni wybierać ten sposób przechowywania identyfikatora sesji. Przekazywanie SESSID (session id) w url’u wystawia aplikację na zagrożenie atakiem session fixation.
Szkodnik, który przejmie naszą sesje, może poczynić spore spustoszenie w naszej przestrzeni systemu, od publikacji kompromitujących treści, poprzez dostęp do prywatnych danych, historii naszej działalności (np. zakupów), poprzez nawet wykonanie w naszym imieniu dowolnej transakcji. Zagrożenia jakie za tym idą, są różne, ze względu na różne specyfiki aplikacji webowych.
Co to jest session fixation?
Session fixation polega na podsunięciu użytkownikowi linku do atakowanej aplikacji ze spreparowanym identyfikatorem sesji, który jest znany atakującemu. Jak to działa w praktyce? Przygotowujemy url w postaci:
- http://moja.aplikacja?sekcja=profil&SESSID=1234abcd1234abcd1234abcd1234abcd
Jak się bronić z punktu widzenia programisty?
Metoda jest prosta i domyślnie włączona w nowych wersjach PHP. Nigdy nie powinno się używać identyfikatora sesji przekazywanego przez URL! Aby to osiągnąć, można użyć następujących ustawień PHP (w pliku php.ini):
session.use_trans_sid = 0
session.use_cookies = 1
session.use_only_cookies = 1
Poza tym, powinniśmy regenerować id sesji przed logowaniami (metodą session_regenerate_id). Ostatnią rzeczą, która ochroni nas też przed innymi atakami, polegającymi na wyłudzeniu tożsamości, jest ponowne sprawdzenie hasła przed krytycznymi operacjami, takimi jak zmiana hasła, zmiana danych profilowych, usunięcie konta, czy dokonanie jakiejś sporej płatności. Tę metodę stosuje wiele znanych serwisów internetowych.
Jak się bronić z punktu widzenia użytkownika aplikacji?
Jako, że nie wiemy, czy aplikacja z której korzystamy jest podatna na tego typu ataki, powinniśmy zawsze ostrożnie korzystać z linków, które dostajemy z nieznanych źródeł. Jeśli jesteśmy zalogowani do portalu X, a za chwilę dostaniemy podejrzanie długi link, po wejściu na który znowu jesteśmy proszeni o hasło, to znaczy, że coś nie gra i należy się dwa razy zastanowić przed ponownym wykonaniem logowania.
[Od Redakcji]
Jak więc widzimy, ostrożne obchodzenie się z odnośnikami niewiadomego pochodzenia jest zawsze dobrym pomysłem. Szczególną ostrożność należy zaś zachować w sytuacji, gdy nieznany odnośnik zaprowadzi nas do jakiegokolwiek (nawet znajomo wyglądającego) interfejsu logowania. W takim wypadku pod żadnym pozorem nie należy podawać własnych poświadczeń.
Etykiety:
Bezpieczeństwo aplikacji,
Obrona - Atak
Komentarze (1)

Sortuj po: Data Ocena Ostatnia Aktywność
Wczytywanie komentarzy...
Wyślij nowy komentarz
Comments by IntenseDebate
Odpowiedz jako Gość, lub zaloguj się:
WróćPołączony jako (Wyloguj się)
Nie wyświetla się publicznie.
Publikowanie anonimowe.
Co to jest session fixation i jak się przed nim bronić?
2010-11-23T23:58:00+01:00
\m/ojtek
Bezpieczeństwo aplikacji|Obrona - Atak|
Subskrybuj:
Komentarze do posta (Atom)
Wyszukaj w HCSL:
Subskrybuj:
Najpopularniejsze artykuły wszech czasów:
- Urządzenia do kopiowania kart płatniczych
- Co tak naprawdę ujawniasz w Internecie?
- Dlaczego należy zasłaniać klawiaturę bankomatu?
- Publiczna wiadomość z ukrytym przekazem
- Przyszłość antywirusów jest jasna
- Sposób na obejście internetowych blokad
- Superbezpieczne hasła na... żółtej karteczce
- Funkcje sprzętowego kasowania danych w HDD!
- 12-latek odkrył krytyczną lukę w Firefoksie
- Przestępstwo nie popłaca
- Czy jesteśmy inwigilowani przez chiński sprzęt?
- Gotowy zestaw do podsłuchiwania GSM
- Jak działa internetowa mafia?
- Uwaga na nowy rodzaj ataków phishingowych!
- Microsoftowy poradnik dla organów ścigania!
- Polski super-bezpieczny system Qubes OS
- Dane wieczyście dostępne
- Pierwszy atak samochodowych crackerów
- Pliki PDF zdolne do wykonania dowolnego kodu
- Polskie służby współpracują z firmą Google?
- Więzienie za odmowę ujawnienia hasła
- Podrzucanie dziecięcej pornografii
- Zapomniany film o hakerach
- Łamanie haseł w Windows Vista i 7
Krzysztof Kotowicz · 749 tygodni temu
Dodatkowo powinno się jeszcze zebezpieczyć przed wymuszaniem ID sesji nie wygenerowanych przez serwer (nie tylko z powodu session fixation): przykład 2 z http://framework.zend.com/manual/1.11/en/zend.ses...