Mis on seansi fikseerimine?

Veebisaitidelt on leitud palju erinevat tüüpi turvaauke, üks huvitav neist on "Session Fixation". Seansi fikseerimine on probleem, mille puhul ründaja saab mõjutada seansi identifikaatorit ehk kasutaja seansi ID-d ja seejärel kasutada seda oma kontole juurdepääsu saamiseks. Seda tüüpi haavatavus võib töötada kahel viisil: see võib lubada ründajal leida või määrata teise kasutaja seansi ID.

Kuidas seansi fikseerimise rünnak sooritatakse

Kasutaja seansi ID on sageli veebisaidi autentimise võtmeosa ja on paljudel juhtudel ainsad andmed, mis tuvastavad konkreetse sisselogitud kasutaja. Selle probleemiks on see, et kui ründaja saab määrata või õppida teise kasutaja seansi ID-d, saab ta kasutada seansimärki ja seejärel kasutajana tegutseda.

Tavaliselt tehakse selleks kasutajat meelitades klõpsama teatud tüüpi andmepüügilingil. Link ise on täiesti seaduslik, kuid sisaldab muutujat, mis määrab kindlaksmääratud seansi ID. Kui kasutaja logib seejärel sisse seansi ID-ga ja server ei määra talle uut seansi ID-d sisselogimisel saab ründaja lihtsalt määrata oma seansi ID samaks ja pääseda ligi ohvri omale konto.

Teine viis, kuidas ründaja saab ohvri seansi ID avastada, on see, kui see kuvatakse URL-is. Näiteks kui ründaja saab petta ohvrit talle linki saatma ja see sisaldab ohvri seansi ID-d, saab ründaja kasutada seansi ID-d ohvri kontole juurdepääsuks. Mõnel juhul võib see juhtuda täiesti juhuslikult. Näiteks kui kasutaja kopeerib URL-i koos seansi ID-ga ja kleebib selle sõbrale või foorumisse, logitakse iga linki järgiv kasutaja sisse kasutaja kontoga.

Seansi fikseerimise parandusmeetmed

Sellele probleemile on mõned lahendused ja nagu alati, on parim lahendus rakendada põhjaliku kaitse strateegia raames võimalikult palju parandusi. Esimene lahendus on muuta sisselogimisel kasutaja seansi ID-d. See hoiab ära selle, et ründaja ei saaks kunagi mõjutada sisselogitud kasutaja seansi ID-d. Samuti saate serveri konfigureerida nii, et see aktsepteeriks ainult enda loodud seansi ID-sid ja lükkaks selgesõnaliselt tagasi kõik kasutaja antud seansi ID-d.

Veebisait peaks olema konfigureeritud nii, et see ei pane kunagi URL-i tundlikke kasutajaandmeid (nt seansi ID-d) ja peaks paigutama selle GET- või POST-päringu parameetrisse. See takistab kasutajal kogemata oma seansi ID-d kahjustamast. Kasutades nii seansi ID-d kui ka eraldi autentimisluba, kahekordistate ründajal vajamineva teabe hulka ja takistate ründajatel teadaolevate seansi ID-dega seanssidele juurdepääsu.

On ülioluline, et kõik kehtivad kasutaja seansi ID-d tühistataks väljalogimisnupule klõpsamisel. Seansi ID on võimalik iga taotluse korral uuesti genereerida. Kui eelmised seansi ID-d on kehtetud, takistab see ründajatel ka teadaoleva seansi ID kasutamist. See lähenemisviis vähendab oluliselt ka ohuakent, kui kasutaja avalikustab oma seansi ID.

Lubades mitut neist lähenemisviisidest, võib süvendatud kaitsestrateegia selle probleemi kui turvariski kõrvaldada.