Dirottamento di sessione
Il termine dirottamento di sessione (session hijacking) si riferisce allo sfruttamento di una normale sessione di lavoro per raggiungere un accesso non autorizzato alle informazioni o ai servizi di un computer. In particolare, si tratta di un furto dei cookie usati per autenticare un utente su un sistema remoto.
Metodi di dirottamento
modificaSono rilevanti soprattutto per gli sviluppatori Web i cookie HTTP, utilizzati per tenere in piedi una sessione su molti siti web: essi possono essere rubati facilmente da un attaccante per mezzo di un calcolatore intermedio o con l'accesso ai cookie conservati sul calcolatore della vittima.
Molti siti web permettono che gli utenti generino e controllino la loro autenticazione, usando un username e password (che possono essere cifrate durante il transito). Affinché l'utente non abbia bisogno di re-inserire il proprio username e password in ogni pagina per mantenere la sua sessione, molti siti web utilizzano i cookie di sessione: una parte delle informazioni sono rilasciate dal server e restituite dal browser dell'utente per confermare la sua identità. Se un attaccante è in grado di rubare questo cookie, può fare egli stesso le richieste come se fosse l'utente vero, accedendo alle informazioni e ai dati personali. Se il cookie è persistente, lo scambio d'identità può continuare per un periodo di tempo considerevole.
Prevenzione
modificaI metodi per impedire il dirottamento di sessione sono i seguenti:
- L'uso di un numero casuale molto lungo o di una stringa come chiave di sessione. Ciò riduce il rischio che un attaccante possa indovinare semplicemente una chiave valida di sessione con gli attacchi di prova e di errori o le forzature del sistema.
- Rigenerare l'identificazione di sessione dopo che ci si è loggati. Ciò evita il fissaggio della sessione perché l'attaccante non può conoscere l'ID dell'utente dopo il login.
- La crittografia dei dati scambiati tra le due parti, in particolare la chiave di sessione. Questa tecnica è largamente diffusa nelle banche e in altri servizi basati sul web commerce, perché impedisce totalmente attacchi di tipo sniffing. Tuttavia, potrebbe essere ancora possibile effettuare un dirottamento di sessione di tipo diverso.
- Alcuni servizi fanno i controlli secondari contro l'identità dell'utente. Per esempio, un web server potrebbe controllare con ogni richiesta fatta che l'indirizzo IP dell'utente si abbini quello usato per ultimo durante la sessione. Ciò non impedisce gli attacchi da parte di chiunque condivida lo stesso indirizzo IP, e potrebbe essere uno svantaggio per gli utenti il cui indirizzo IP è soggetto a variazioni nel corso di una sessione di navigazione.
- Generando un campo di input nascosto contenente l'impronta univoca del browser mediante l'utilizzo di librerie JavaScript come FingerprintJS e controllando che essa combaci con quella registrata nella sessione.
Questo riduce drasticamente la finestra in cui un utente malintenzionato può utilizzare individuando se l'attacco ha avuto luogo, ma può causare altri problemi tecnici (per esempio, impedendo il pulsante indietro di funzionare correttamente).
Bibliografia
modifica- (EN) Shray Kapoor, Session Hijacking Exploiting TCP, UDP and HTTP Sessions (PDF).