In che modo i siti Web proteggono dagli attacchi di riproduzione 2fa?

1

Sto immaginando uno scenario in cui un utente malintenzionato può leggere il traffico tra un utente e un server. L'utente malintenzionato prende la password dell'utente e il codice 2fa utilizzato. L'utente malintenzionato accede quindi a tali informazioni prima che il codice 2fa scada.

Come è protetto contro?

    
posta Daffy 18.07.2018 - 10:32
fonte

3 risposte

1

È possibile riutilizzare la lista nera. È sufficiente risparmiare tempo (o codice) di accesso precedente e forzare l'utente ad attendere fino a quando non viene generato un nuovo OTP. Generalmente i token TOTP vengono aggiornati ogni trenta secondi.

Puoi usare OTP basato sul contatore; il riutilizzo non si verificherà mai quando entrambi i dispositivi incrementano il contatore.

    
risposta data 18.07.2018 - 10:51
fonte
1

Questo attacco MitM contro 2FA non ha importanza (principalmente). Se un utente malintenzionato ha la capacità di intercettare le comunicazioni in chiaro tra il client e il server, può semplicemente rubare il cookie di sessione quando viene rinviato. L'unico posto che fa la differenza è se è richiesto un codice 2FA quando si modifica la password o si disabilita 2FA, nel qual caso l'utente malintenzionato potrebbe rieseguire il codice per assumere il controllo dell'account. Anche se la riproduzione viene impedita, il possesso del cookie di sessione e della password consentirebbe a un utente malintenzionato di accedere a qualsiasi cosa che non richieda un codice 2FA aggiuntivo.

Per impedire il riutilizzo di un codice 2FA intercettato con altri mezzi (ad esempio intercettando sms / email), il server dovrebbe consentire l'uso di un codice solo una volta. Questo può essere fatto memorizzando un codice e inviandolo, quindi cancellando il codice una volta utilizzato.

Per TOTP, la prevenzione della riproduzione può essere eseguita memorizzando l'ultima finestra di autorizzazione riuscita e impedendo il riutilizzo del codice da quella finestra (o dalle finestre precedenti). La RFC richiede semplicemente un utilizzo singolo senza specificare alcuna implementazione particolare:

The verifier MUST NOT accept the second attempt of the OTP after the successful validation has been issued for the first OTP, which ensures one-time only use of an OTP.

HOTP e U2F impediscono la riproduzione in base alla progettazione, HOTP mediante l'uso di un contatore e U2F grazie all'utilizzo di un metodo di risposta alla sfida.

    
risposta data 18.07.2018 - 16:14
fonte
0

Prima di tutto: non importa che cosa dovresti usare TLS per crittografare il traffico di rete ovunque che ti protegge dallo sniffing della rete!

Un attacco non tecnico e comune all'uso della password è shoulder-surfing . Quindi non sono d'accordo con gli altri sostenendo che riutilizzare OTP non è un problema.

Devi registrare il contatore (per HOTP) o il time-step (per TOTP) dell'ultima autenticazione avvenuta con successo per impedire attacchi di riproduzione e rendere effettivamente un valore OTP una tantum.

Per HOTP è obbligatorio. Ma non tutte le implementazioni del validatore TOTP lo fanno perché introduce anche un piccolo inconveniente per l'utente di attendere il passo successivo (di solito 30+ secondi).

Se lo stai implementando, ti consiglio vivamente di leggere attentamente le considerazioni sulla sicurezza e le sezioni sui requisiti di sicurezza in RFC 4226 e / o RFC 6238 . Soprattutto gli aspetti della gestione sicura delle condizioni fuori sincrono / alla deriva sono importanti. Vale sicuramente la pena di riflettere su questo.

Nella mia implementazione ho rielaborato la gestione degli errori di recente per consumare sempre in modo affidabile un valore OTP valido, significa contatore di aggiornamento o time-step, anche se altre parti dell'elaborazione sono andate storte (ad es. password errata ecc.).

    
risposta data 18.07.2018 - 13:17
fonte

Leggi altre domande sui tag