Come impedire che la fissazione della sessione MITM attacchi su un semplice HTTP alla prima richiesta?

5

I siti web hanno vari metodi implementati per dire al browser di usare sempre HTTPS - intestazione HSTS, redirec server su HTTPS, politica CSP. Tuttavia, la prima volta che un utente visita il sito può essere su HTTP palin. Solo dopo che il browser saprà che il sito dovrebbe essere su TLS lo utilizzerà sempre.

Ma cosa succede se un attacco ha accesso al traffico durante la prima visita e agisce come un uomo in mezzo?

Ad esempio, l'attaccante può eseguire un attacco di fissazione della sessione. L'utente malintenzionato visita il sito e viene assegnato un cookie con un ID di sessione. Quando l'utente visita il sito su HTTP, l'autore dell'attacco risponde per conto del server e assegna il suo cookie all'utente. Quindi l'attaccante lascia tutto il traffico in avanti. L'utente fa richieste con l'ID di sessione dell'utente malintenzionato, fornisce informazioni e così via. Ora l'utente malintenzionato può effettuare richieste con quell'ID e ottenere le informazioni dell'utente.

Cosa si può fare per fermare questo tipo di attacco?

    
posta Muhammad Umer 12.03.2018 - 22:09
fonte

1 risposta

1

Supponendo di reindirizzare sempre l'utente da HTTP a HTTPS, puoi inserire l'identificativo di sessione in un cookie sicuro solo HTTP che il server non invia mai via HTTP.

In realtà, nel mio caso l'HTTP a HTTPS accade in Apache, quindi il mio codice server non può semplicemente inviare il cookie a un utente con solo HTTP.

Almeno, questo funzionerà nello scenario che hai descritto nella tua domanda. Tuttavia, non ho mai sentito di un attacco MITM che si ferma alla prima richiesta. Le richieste HTTPS possono anche essere inoltrate dal MITM quindi a quel punto l'hacker ottiene comunque il cookie sicuro.

Come menzionato da StackzOfZtuff, potresti forzare le richieste a essere fatte solo in HTTPS registrando il tuo sito con HSTS aggiungendo questa intestazione HTTP:

 Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

Ovviamente, ciò significa che devi assicurarti di avere un certificato valido in qualsiasi momento o che il tuo sito non sarà accessibile per un po '. Potresti anche non voler includere sottodomini.

Con HSTS, la prima richiesta HTTP non si verifica mai (almeno dai browser che comprendono l'elenco HSTS. Tuttavia, sempre più browser eseguono prima il test con HTTPS anziché HTTP quando il protocollo non è stato specificato.)

    
risposta data 05.08.2018 - 01:23
fonte