Vad är sessionsfixering?

click fraud protection

Det finns många olika typer av säkerhetsbrister på webbplatser, en intressant kallas "Session Fixation". Sessionsfixering är ett problem där en angripare kan påverka sessionsidentifieraren aka sessions-id för en användare och sedan använda den för att få åtkomst till sitt konto. Det finns två sätt som den här typen av sårbarhet kan fungera, den kan tillåta angriparen att antingen hitta eller ställa in sessions-ID för en annan användare.

Hur en sessionsfixeringsattack utförs

En användares sessions-id är ofta en viktig del av autentiseringen av webbplatsen och är i många fall den enda informationen som identifierar den specifika användaren som är inloggad. Problemet med detta är att om en angripare kan ställa in eller lära sig sessions-id för en annan användare, kan de använda sessionstoken och sedan kunna agera som användare.

Vanligtvis görs detta genom att lura en användare att klicka på en typ av nätfiske-länk. Länken i sig är helt legitim men innehåller en variabel som anger ett specificerat sessions-id. Om användaren sedan loggar in med sessions-ID och servern inte tilldelar dem ett nytt sessions-ID på inloggning, kan angriparen helt enkelt ställa in sitt sessions-id att vara detsamma och ha tillgång till offrets konto.

Ett annat sätt som angriparen kan upptäcka offrets sessions-id är om det visas i en URL. Till exempel, om angriparen kan lura offret att skicka dem en länk och den inkluderar offrets sessions-ID, kan angriparen använda sessions-id: t för att komma åt offrets konto. I vissa fall kan detta ske helt av en slump. Om användaren till exempel kopierar webbadressen med sessions-id och klistrar in den till en vän eller i ett forum, kommer alla användare som följer länken att loggas in med användarens konto.

Sessionsfixeringssaneringar

Det finns några lösningar på det här problemet, och som alltid är den bästa lösningen att implementera så många korrigeringar som möjligt som en del av en djupförsvarsstrategi. Den första lösningen är att ändra användarens sessions-id när de loggar in. Detta förhindrar att en angripare någonsin kan påverka sessions-id: t för en inloggad användare. Du kan också konfigurera servern att endast acceptera sessions-ID som den har genererat och att uttryckligen avvisa alla sessions-ID som tillhandahålls av användaren.

Webbplatsen bör konfigureras för att aldrig placera några känsliga användardetaljer som sessions-id i URL: en och bör placera den i en GET- eller POST-begäranparameter. Detta förhindrar att användaren av misstag äventyrar sitt eget sessions-ID. Genom att använda både ett sessions-ID och en separat autentiseringstoken fördubblar du mängden information som angriparen behöver för att få och förhindrar angripare från att komma åt sessioner med kända sessions-ID.

Det är viktigt att alla giltiga sessions-ID för en användare blir ogiltiga när du klickar på utloggningsknappen. Det är möjligt att återskapa sessions-id vid varje begäran, om tidigare sessions-id är ogiltiga förhindrar detta också angripare från att använda känt session-id. Detta tillvägagångssätt minskar också avsevärt hotfönstret om en användare avslöjar sitt eget sessions-ID.

Genom att möjliggöra flera av dessa tillvägagångssätt kan en djupförsvarsstrategi eliminera detta problem som en säkerhetsrisk.