Ti interessano gli attacchi DoS se il tuo server usa bcrypt?

21

(Ho appena fatto questa domanda su "cryptography SE" e mi è stato suggerito di chiederlo qui)

EDIT Ho appena realizzato che la mia domanda è principalmente un dupe: Prevenire attacchi denial of service contro le funzioni di hashing lento

Se qualcuno sceglie bcrypt non è il server (i) particolarmente esposto a un attacco DoS che cercherebbe di massimizzare la CPU?

Se prendiamo, diciamo, un server web: anche se ha una gigantesca banda di rete, sembra che martellare a distanza il server con richieste di login HTTP POST potrebbe dare alla CPU un momento difficile.

Se il server non limita il limite nulla sembra nemmeno da una singola macchina / IP, non sarebbe troppo difficile forzare il servizio a fare molti calcoli.

Questo è qualcosa di cui preoccuparsi (ad esempio, devi aggiungere qualche tipo di firewall specifico che limita la velocità tenendo conto in particolare degli "attacchi di bcrypt remoti" o sto semplicemente paranoico qui?

    
posta Cedric Martin 27.09.2012 - 18:28
fonte

3 risposte

16

bcrypt è lento, il che aumenta sicuramente il rischio di un attacco DoS facile, ma ci sono diversi modi in cui puoi limitare i client prima di arrivare al passo bcrypt:

  • Tieni traccia degli indirizzi IP e ignori tutti gli utenti che tentano di accedere troppo rapidamente (forse inizia facendo una pausa per un determinato periodo di tempo prima di procedere all'autenticazione, quindi apri il tuo percorso fino a un indirizzo di blacklist).
  • Metti i tentativi di accesso in una coda di priorità e imposta la priorità in base al numero di tentativi di accesso non riusciti effettuati da un particolare indirizzo IP eseguito di recente. Questo lascerà il tuo server sotto pesante carico, ma gli utenti legittimi dovrebbero essere in grado di entrare.
  • Aggiungi un CAPTCHA . I CAPTCHA sono fastidiosi, quindi richiedilo solo se rilevi un attacco in corso o ricevi troppi tentativi da un singolo indirizzo IP.
  • Rendi la macchina del cliente fai qualcosa di costoso come parte del processo di accesso , come crackare un breve hash o trovare i fattori primi di un piccolo numero. Questo ha il vantaggio che l'utilizzo di un IP diverso non aiuta, ma significherebbe che JavaScript è necessario per accedere.
  • Rileva quando un utente tenta di accedere da una nuova posizione e invia loro un'email. Non preoccuparti nemmeno di provare a controllare la password fino a quando l'indirizzo IP non è autenticato. Questo ha lo svantaggio che gli hacker potrebbero infastidire (e spaventare) i tuoi utenti se hanno un numero sufficiente di indirizzi IP con cui lavorare.
risposta data 27.09.2012 - 19:05
fonte
6

If the server doesn't rate limit anything it looks like even from a single machine / IP it wouldn't be too hard to force the server into doing lots of computation.

DoS è un rischio con qualsiasi servizio. Maggiore è il livello di elaborazione richiesto, più importante è la limitazione dei tassi, sia che si tratti di password di hashing o di query di database.

Considerando il numero di round, pensa a come il tradeoff tra la gestione dell'autenticazione e il mantenimento dei sistemi disponibili. Vedi un'altra mia risposta che fa riferimento a quanti cicli di bcrypt utilizzare .

    
risposta data 27.09.2012 - 18:51
fonte
1

In cima alla mia testa, credo che avresti esaurito i socket o le porte prima di utilizzare tutta la CPU su una macchina moderna. Se non hai regolato la tua macchina su un valore basso per time_wait, le porte si esaurirebbero.

    
risposta data 28.09.2012 - 02:37
fonte

Leggi altre domande sui tag