Ce este fixarea sesiunii?

Există multe tipuri diferite de vulnerabilități de securitate găsite pe site-uri web, una interesantă se numește „Session Fixation”. Fixarea sesiunii este o problemă în care un atacator poate influența identificatorul de sesiune, alias ID-ul de sesiune al unui utilizator și apoi îl poate folosi pentru a obține acces la contul său. Există două moduri în care acest tip de vulnerabilitate poate funcționa, poate permite atacatorului fie să găsească, fie să seteze id-ul de sesiune al altui utilizator.

Cum se efectuează un atac de fixare a sesiunii

Id-ul de sesiune al unui utilizator este adesea o parte cheie a autentificării site-ului web și este în multe cazuri singurele date care identifică utilizatorul specific conectat. Problema cu aceasta este că, dacă un atacator poate seta sau învăța ID-ul de sesiune al unui alt utilizator, acesta poate folosi simbolul de sesiune și apoi poate acționa ca utilizator.

De obicei, acest lucru se face prin păcălirea unui utilizator să facă clic pe un tip de link de phishing. Link-ul în sine este complet legitim, dar include o variabilă care setează un ID de sesiune specificat. Dacă utilizatorul se conectează cu ID-ul de sesiune și serverul nu îi atribuie un nou ID de sesiune de conectare, atacatorul poate pur și simplu să își seteze id-ul de sesiune să fie același și să aibă acces la cel al victimei cont.

Un alt mod în care atacatorul poate descoperi ID-ul de sesiune al victimei este dacă acesta apare într-o adresă URL. De exemplu, dacă atacatorul poate păcăli victima să îi trimită un link și acesta include ID-ul de sesiune al victimei, atacatorul poate folosi ID-ul de sesiune pentru a accesa contul victimei. În unele cazuri, acest lucru se poate întâmpla complet accidental. De exemplu, dacă utilizatorul copiază adresa URL cu ID-ul sesiunii și o inserează într-un prieten sau într-un forum, orice utilizator care urmează linkul va fi conectat cu contul utilizatorului.

Remedieri de fixare a sesiunii

Există câteva soluții pentru această problemă și, ca întotdeauna, cea mai bună soluție este să implementați cât mai multe remedieri posibil ca parte a unei strategii de apărare în profunzime. Prima soluție este să schimbați ID-ul de sesiune al utilizatorului atunci când acesta se conectează. Acest lucru împiedică un atacator să poată influența vreodată id-ul de sesiune al unui utilizator conectat. De asemenea, puteți configura serverul să accepte doar ID-urile de sesiune pe care le-a generat și să respingă în mod explicit orice ID-uri de sesiune furnizate de utilizator.

Site-ul web ar trebui configurat să nu plaseze niciodată detalii sensibile ale utilizatorului, cum ar fi ID-ul sesiunii, în adresa URL și ar trebui să îl plaseze într-un parametru de solicitare GET sau POST. Acest lucru împiedică utilizatorul să-și compromită accidental propriul ID de sesiune. Folosind atât un ID de sesiune, cât și un simbol de autentificare separat, dublezi cantitatea de informații de care are nevoie atacatorul pentru a obține și îi împiedici să acceseze sesiunile cu ID-uri de sesiune cunoscute.

Este vital ca toate ID-urile de sesiune valide pentru un utilizator să fie invalidate atunci când se face clic pe butonul de deconectare. Este posibil să se regenereze ID-ul sesiunii la fiecare solicitare, dacă ID-urile sesiunii anterioare sunt invalidate, acest lucru împiedică atacatorii să folosească id-ul de sesiune cunoscut. De asemenea, această abordare reduce semnificativ fereastra de amenințare dacă un utilizator își dezvăluie propriul ID de sesiune.

Permițând mai multe dintre aceste abordări, o strategie de apărare în profunzime poate elimina această problemă ca un risc de securitate.