OWASP: Session Management Cheat Sheet
Warto zapoznać się z udostępnionym ostatnio przez OWASP dokumentem Session Management Cheat Sheet. Zawarte w nim wskazówki warto porównać z wymaganiami zdefiniowanymi w OWASP Application Security Verification Standard, zwłaszcza z rozdziałem V3 – Session Management Verification Requirements.
Z moich doświadczeń wynika, że obecnie większość aplikacji korzysta z wbudowanego we framework mechanizmu sesji. Jest to zresztą pierwsze z wymagań ASVS. Takie podejście jest o tyle dobre, że w większości przypadków standardowa obsługa sesji jest po prostu wystarczająco dobra. Mimo wszystko pewne problemy wciąż się powtarzają, w szczególności:
- brak zmiany cookie po uwierzytelnieniu (lub “after reauthentication”),
- brak ochrony cookie przy pomocy flag Secure i httpOnly,
- brak ograniczenia ścieżki, do której wysyłane jest cookie,
- brak wygasania sesji po określonym czasie bezczynności,
- brak niszczenia sesji po wylogowaniu,
- przesyłanie identyfikatora sesji bez szyfrowania,
- przesyłanie identyfikatora sesji w query string ,
- ujawnianie identyfikatorów sesji (np. w logach),
Mechanizmy związane z uwierzytelnieniem i kontrolą dostępu są po prostu nieskuteczne, jeśli atakujący jest w stanie ustalić lub wykraść prawidłowy identyfikator sesji ofiary.
Dodatkowo warto pamiętać również, że:
- reguły same-origin policy dla rożnych elementów (cookie, DOM, JavaScript, XMLHttpRequest) nieco różnią się między sobą,
- sesja jest (często) dobrem wspólnym – dwie różne aplikacje na jednym serwerze mogą wzajemnie “brudzić” swoje sesje,
I w ramach bonusu: How and why session IDs are reused in ASP.NET.
Oryginał tego wpisu dostępny jest pod adresem OWASP: Session Management Cheat Sheet
Autor: Paweł Goleń