C'è un modo per impedire agli hacker di usare i cookie per aggirare la verifica in due passaggi?

16

Prendiamo gli accessi Steam / Google / FB / Microsoft / Twitter come esempi.

Tutti offrono una verifica in due passaggi tramite messaggio SMS. Supponiamo che l'hacker non abbia accesso al mio telefono. Ma ha accesso al mio computer in un determinato momento.

L'hacker ha estratto il mio cookie dal mio browser (è facile da fare) e poi ha messo quel cookie nel suo browser.

In teoria, poteva semplicemente usarlo per accedere al servizio senza dover passare attraverso il processo di verifica in due fasi.

C'è un modo per rilevare questo tipo di comportamento o impedire che ciò accada?

Inoltre, per i fornitori di servizi che utilizzano l'autenticazione OAuth fornita da quelli menzionati sopra, c'è qualcosa che potrebbero fare per rilevare un simile comportamento?

    
posta Steve 26.03.2018 - 17:48
fonte

2 risposte

20

La risposta di Matthew è sicuramente la risposta corretta, ma ho pensato di seguire ulteriori dettagli:

L'autenticazione basata su cookie ha un grosso punto debole: il cookie è tutto ciò che serve per l'autenticazione. Se qualcuno è in grado di rubare i cookie di un utente, non c'è nulla di costruito nel processo di autenticazione dei cookie che consenta al server sapere che gli shenanigans siano accaduti. Usi l'esempio di un utente malintenzionato che ha accesso fisico al computer, ma è un caso raro da cercare. Le vulnerabilità XSS su siti con cookie non sicuri sono un modo molto più comune di rubare i cookie. Comune anche: attacchi di fissazione della sessione, sniffing di pacchetti su reti wireless non sicure per siti che non utilizzano https e varie altre forme di attacchi MITM. Per essere chiari, questo non è solo un problema per l'autenticazione basata su cookie. Il problema di fondo è che HTTP è un protocollo stateless, il che significa che se riesci a riprodurre completamente una richiesta precedente, non c'è modo (inserito in HTTP) che il server sappia che non sei la stessa persona.

Quindi, in che modo i servizi si assicurano che la persona con cui parlano sia la persona con cui vogliono effettivamente parlare? La risposta non è necessariamente diretta. Come menziona Matteo, devi monitorare le tue credenziali di accesso in altri modi: modifiche agli indirizzi IP, modifiche al browser, modifiche degli user-agent, ecc ... In pratica, tieni traccia dei metadati relativi ai dispositivi con cui stai parlando e fai molta attenzione a eventuali modifiche sospette.

Come si nota in un commento, anche questo non è infallibile. Ovviamente le persone possono fingere agenti utente. Questo potrebbe essere contrastato usando tecniche di fingerprinting del dispositivo ( Device fingerprinting e mass Computer Surveillance ) a cui un aggressore ha sostanzialmente meno controllo. Gli indirizzi IP non sono corretti, in particolare per i gestori di telefonia mobile, ma fino a quando ogni dispositivo ha il proprio cookie, anche questo può potenzialmente essere monitorato e contabilizzato. Se un determinato cookie è stato associato allo stesso indirizzo IP per 6 mesi e viene visualizzato improvvisamente in un altro paese, è probabile che tu abbia un problema. Se un dispositivo cambia frequentemente gli indirizzi IP (ad esempio un telefono) ma ora si presenta con un indirizzo IP non associato a un gestore di telefonia mobile o alla loro normale area geografica, probabilmente hai un problema. L'altra cosa da tenere a mente è che ogni dispositivo dovrebbe avere un cookie unico. Pertanto, anche se normalmente cambia l'indirizzo IP associato a un cookie, se ora stai ricevendo richieste da quel cookie da due diversi indirizzi IP allo stesso tempo , probabilmente hai un problema.

Alla fine, il modo più semplice per sistemare le cose se il loro sembra essere qualcosa di sospetto è semplicemente invalidare tutti i cookie (ovvero disconnettere l'utente). L'utente legittimo è solo un po 'scomodato - devono solo riconnettersi. L'utente malintenzionato ha però perso tutti gli accessi e deve ricominciare da capo.

Il take away

Ci dovrebbe essere un paio di ovvi suggerimenti dalla discussione di cui sopra:

  1. Non esiste una risposta definitiva. Un attaccante sufficientemente intelligente ha molti modi per cercare di nascondere che ha rubato le credenziali, una volta rubate.
  2. Un sistema che non ha impostato estese sicurezza / monitoraggio attorno alle proprie credenziali di accesso non avrà modo di sapere che qualcosa sta succedendo e nessun modo di reagire.
  3. Non è chiaro il punto "Ok, sei sicuro adesso". C'è molto che un sistema può fare per proteggere le credenziali di accesso, ma alla fine ci sono cose non sotto il controllo del server che possono permettere il furto di credenziali. Ci sono modi per rilevare le credenziali rubate, ma non sono sempre facili o semplici e possono richiedere un grande sforzo per l'impostazione, la messa a punto e l'uso. È anche possibile essere troppo zelanti e causare problemi agli utenti legittimi.

Quindi, come fanno i grandi a minimizzare il danno potenziale arrecato dalle persone che si allontanano con le credenziali? Risposta breve: difesa approfondita. Credenziali di accesso sicuro a tutti i livelli dell'applicazione, monitoraggio dei metadati dai client che utilizzano le credenziali di accesso e, in caso di dubbio, eseguirne il logout.

    
risposta data 26.03.2018 - 20:31
fonte
18

Il metodo di base è quello di cambiare cookie su base abbastanza regolare - fare in modo che un utente malintenzionato che ottiene un cookie dal proprio computer abbia solo un periodo limitato in cui è valido. Anche se la sessione viene mantenuta aperta per un periodo più lungo, puoi sostituire il cookie associato alla sessione su base più regolare.

Per rilevare questo tipo di abuso, i servizi possono anche fornire un elenco di sessioni attive, associate all'indirizzo IP / tipo di dispositivo / ecc. Ciò consente agli utenti di vedere se ci sono sessioni inaspettate aperte e di chiuderle.

È anche una buona idea chiedere un secondo fattore per ogni azione importante all'interno dell'applicazione (come @ Xavier59 menzionato nel commento) - potrebbero essere cose come cambiare la password, cambiare l'indirizzo email associato o tentare di disattivare 2FA.

    
risposta data 26.03.2018 - 18:00
fonte

Leggi altre domande sui tag