Čo je fixácia relácie?

Na webových stránkach sa nachádza mnoho rôznych typov bezpečnostných zraniteľností, jedna zaujímavá sa nazýva „Session Fixation“. Fixácia relácie je problém, pri ktorom môže útočník ovplyvniť identifikátor relácie alias id relácie používateľa a potom ho použiť na získanie prístupu k svojmu účtu. Existujú dva spôsoby, ako môže tento typ zraniteľnosti fungovať, môže útočníkovi umožniť nájsť alebo nastaviť ID relácie iného používateľa.

Ako sa vykonáva útok fixácie relácie

ID relácie používateľa je často kľúčovou súčasťou autentifikácie na webovej lokalite a v mnohých prípadoch je jediným údajom, ktorý identifikuje konkrétneho prihláseného používateľa. Problém je v tom, že ak útočník môže nastaviť alebo zistiť ID relácie iného používateľa, môže použiť token relácie a potom môže konať ako používateľ.

Zvyčajne sa to robí oklamaním používateľa, aby klikol na určitý typ phishingového odkazu. Samotný odkaz je úplne legitímny, ale obsahuje premennú, ktorá nastavuje určené ID relácie. Ak sa používateľ potom prihlási pomocou ID relácie a server mu nepriradí nové ID relácie prihlásení, útočník môže jednoducho nastaviť svoje ID relácie tak, aby bolo rovnaké a mať prístup k id obete účtu.

Ďalším spôsobom, ako môže útočník zistiť ID relácie obete, je, ak sa objaví v adrese URL. Ak sa napríklad útočníkovi podarí oklamať obeť, aby jej poslala odkaz a obsahuje ID relácie obete, útočník môže použiť ID relácie na prístup k účtu obete. V niektorých prípadoch sa to môže stať úplnou náhodou. Ak napríklad používateľ skopíruje adresu URL s ID relácie a prilepí ju priateľovi alebo do fóra, každý používateľ, ktorý použije odkaz, bude prihlásený pomocou používateľského účtu.

Opravy fixácie sedenia

Existuje niekoľko riešení tohto problému a ako vždy, najlepším riešením je implementovať čo najviac opráv ako súčasť stratégie hĺbkovej obrany. Prvým riešením je zmeniť ID relácie používateľa pri prihlásení. To bráni útočníkovi, aby niekedy mohol ovplyvniť ID relácie prihláseného používateľa. Môžete tiež nakonfigurovať server tak, aby vždy akceptoval iba identifikátory relácií, ktoré vygeneroval, a explicitne odmietol akékoľvek identifikátory relácií poskytnuté používateľom.

Webová lokalita by mala byť nakonfigurovaná tak, aby do adresy URL nikdy neumiestňovala žiadne citlivé údaje o používateľovi, ako napríklad ID relácie, a mala by ju umiestniť do parametra požiadavky GET alebo POST. To zabraňuje používateľovi v náhodnom ohrození svojho vlastného ID relácie. Použitím ID relácie aj samostatného autentifikačného tokenu zdvojnásobíte množstvo informácií, ktoré útočník potrebuje na získanie, a zabránite útočníkom v prístupe k reláciám so známymi ID relácie.

Je dôležité, aby všetky platné ID relácie pre používateľa boli po kliknutí na tlačidlo odhlásenia neplatné. Je možné vygenerovať ID relácie pri každej požiadavke, ak sú predchádzajúce ID relácie neplatné, útočníkom to tiež bráni používať známe ID relácie. Tento prístup tiež výrazne znižuje okno hrozby, ak používateľ zverejní svoje vlastné ID relácie.

Povolením viacerých z týchto prístupov môže stratégia hĺbkovej obrany tento problém eliminovať ako bezpečnostné riziko.