Što je fiksacija sesije?

click fraud protection

Postoji mnogo različitih vrsta sigurnosnih ranjivosti koje se mogu pronaći na web stranicama, a jedna zanimljiva se zove "Session Fixation". Fiksiranje sesije je problem u kojem napadač može utjecati na identifikator sesije aka ID sesije korisnika i zatim ga koristiti za pristup svom računu. Postoje dva načina na koja ova vrsta ranjivosti može funkcionirati, a može omogućiti napadaču da pronađe ili postavi ID sesije drugog korisnika.

Kako se izvodi napad fiksacije sesije

ID sesije korisnika često je ključni dio autentifikacije na web stranici i u mnogim slučajevima jedini je podatak koji identificira određenog korisnika prijavljenog. Problem s ovim je u tome što ako napadač može postaviti ili naučiti ID sesije drugog korisnika, može koristiti token sesije i tada moći djelovati kao korisnik.

Obično se to radi tako da se korisnik navede da klikne neku vrstu veze za krađu identiteta. Sama veza je potpuno legitimna, ali uključuje varijablu koja postavlja navedeni ID sesije. Ako se korisnik tada prijavi s ID-om sesije, a poslužitelj mu ne dodijeli novi ID sesije prijave, napadač može jednostavno postaviti svoj ID sesije da bude isti i imati pristup žrtvi račun.

Drugi način na koji napadač može otkriti ID sesije žrtve je ako se pojavljuje u URL-u. Na primjer, ako napadač može prevariti žrtvu da joj pošalje vezu i ona uključuje ID sesije žrtve, napadač može koristiti ID sesije za pristup žrtvinom računu. U nekim slučajevima to se može dogoditi potpuno slučajno. Na primjer, ako korisnik kopira URL s ID-om sesije i zalijepi ga prijatelju ili na forum, svaki korisnik koji slijedi vezu bit će prijavljen s korisničkim računom.

Sanacije fiksacije sesije

Postoji nekoliko rješenja za ovaj problem, a kao i uvijek, najbolje rješenje je implementirati što više popravaka kao dio strategije dubinske obrane. Prvo rješenje je promijeniti ID sesije korisnika kada se prijave. To sprječava napadaču da ikada može utjecati na ID sesije prijavljenog korisnika. Također možete konfigurirati poslužitelj da prihvaća samo ID-ove sesije koje je generirao i da izričito odbije bilo koje ID-ove sesije koje je dao korisnik.

Web-mjesto treba biti konfigurirano tako da nikada ne stavlja nikakve osjetljive korisničke pojedinosti kao što je ID sesije u URL i treba ga postaviti u parametar zahtjeva GET ili POST. To sprječava korisnika da slučajno kompromituje vlastiti ID sesije. Korištenjem i ID-a sesije i zasebnog tokena za autentifikaciju udvostručujete količinu informacija koju napadač treba da dobije i sprječavate napadače da pristupe sesijama s poznatim ID-ovima sesije.

Od vitalnog je značaja da svi važeći ID-ovi sesije za korisnika budu poništeni kada se klikne gumb za odjavu. Moguće je regenerirati ID sesije na svaki zahtjev, ako su prethodni ID-ovi sesije poništeni, to također sprječava napadače da koriste poznati ID sesije. Ovaj pristup također značajno smanjuje prozor prijetnje ako korisnik otkrije vlastiti ID sesije.

Omogućavanjem više ovih pristupa, strategija dubinske obrane može eliminirati ovaj problem kao sigurnosni rizik.