Supponiamo che CAPTCHA sia abilitato con il controllo del blocco dell'account (dopo cinque continui tentativi falliti, l'account verrà bloccato per 15 minuti) su un sistema.
La forza bruta è ancora una probabile minaccia?
Supponiamo che CAPTCHA sia abilitato con il controllo del blocco dell'account (dopo cinque continui tentativi falliti, l'account verrà bloccato per 15 minuti) su un sistema.
La forza bruta è ancora una probabile minaccia?
Le protezioni che descrivi sono buone che dovresti considerare, ma possono ancora esserci dei punti deboli:
Forse.
dipende da come si definisce "forza bruta".
Un blocco dopo X tentativi errati è ottimo per proteggere un account in cui un utente malintenzionato sta cercando un singolo bersaglio.
Esiste un altro scenario in cui l'aggressore ha scelto alcune password comuni "password, password123, ecc." E invece di attaccare un singolo utente, provano le 4 password comuni su ogni account di cui sono a conoscenza nel tuo sistema.
Utente: JimPW: password, password123, letmein, secretUser: BobPW: password, password123, letmein, secretUser: AlicePW: password, password123, letmein, secret
Questo è più comune negli scenari in cui gli aggressori stanno cercando di raccogliere le credenziali per la rivendita sulla darknet o di effettuare spostamenti laterali verso altri servizi in cui le password potrebbero essere state riutilizzate.
Ti suggerisco di aggiungere qualcosa per contare il tasso di accessi non validi complessivi, piuttosto che solo a livello di account o IP.
È una minaccia in un senso diverso. Se blocchi gli account per 15 minuti dopo 5 tentativi falliti, allora hai effettivamente integrato un meccanismo DoS.
Supponiamo che non voglia davvero entrare, ma sto bene solo causando caos, nessun problema. Basta fare qualche migliaio di accessi al secondo con nomi utente casuali. Ehi, non mi prenderò nemmeno la briga di fare il CAPTCHA, chi se ne frega. Tutto quello che voglio è fallire e bloccare .
Una strategia migliore di un periodo di tempo fisso dopo un numero fisso di errori potrebbe essere quadratica ( o esponenziale). Alcuni router AVM lo fanno. Primo errore di accesso, hai 15 secondi di blocco, il prossimo errore ne hai 30, ecc. Ecc. Questo è molto meno fastidioso per gli utenti legittimi e molti più problemi per gli aggressori. della ricetta che coinvolge l'indirizzo IP e il nome dell'account, limitando il ritardo massimo per coppia account-IP a un valore tollerabile. In caso contrario, un utente legittimo potrebbe comunque essere sottoposto a DoSed in modo semplice e indefinito. La crescita esponenziale affronta meglio il problema del "numero infinito di tentativi", tuttavia.
In realtà, trovare una coppia nome utente-password online con la forza bruta è, beh, presumere che le persone non lo siano t stupido, praticamente senza speranza. Sfortunatamente, le persone sono stupide, quindi non puoi presumere che non avranno una delle dieci password più stupide e devi presumere che sia fattibile. Quindi, sì, anche lì c'è un po 'di minaccia. In particolare perché, sebbene possa essere difficile scegliere come target un utente su un server, su un sistema di controllo basato esclusivamente sul nome utente, puoi indirizzare un migliaio di utenti su quello stesso server in parallelo senza problemi (ogni punteggio solo un solo errore!) e puoi farlo su un migliaio di server in parallelo. E non ti costa davvero nulla mantenere questo script in esecuzione per settimane (mesi, anni ...), riprovando ogni 15-20 minuti.
Quindi, mentre per l'account individuale le tue possibilità di attaccante sono molto basse, poiché i numeri si sommano, beh, virtualmente infinito sei destinato a colpire qualcuno, da qualche parte , alla fine, è inevitabile. Poiché altrimenti è banale provare un migliaio di utenti in parallelo, dovrebbe essere chiaro che anche devi considerare gli indirizzi IP nel tuo calcolo. Anche così, non offre una protezione al 100% contro una botnet con poche migliaia di bot, ma sicuramente rende l'attacco un po 'meno efficace, richiedendo più lavoro e gestione. Più lavoro è buono.
Non puoi vincere la gara una volta che sei un obiettivo serio, ma più fai fatica a far lavorare un attaccante, più è probabile che l'attaccante scelga qualcun altro (che è un bersaglio più facile) per iniziare con.
È più o meno la stessa cosa che chiudere la porta di casa invece di lasciarla completamente aperta. Un ladro può facilmente rompere la tua finestra e alla fine non puoi fare nulla per impedire a qualcuno di entrare. Ma data la possibilità di scegliere una porta aperta a casa del vicino e dover rompere la tua finestra, probabilmente sceglierà il modo più semplice. Meno spese, stesso profitto.
Sì, è ancora una minaccia, perché:
Idee per migliorare ciò che hai proposto:
15 * 2 ^ n
minuti con un limite di 2 ore, dove n
è il numero di blocchi precedenti nelle ultime 24 ore (primo tentativo è un blocco di 15 minuti, il secondo è 30, il terzo è 60, il quarto e i successivi sono 120). Esistono attacchi di forza bruta a bassa velocità, progettati specificamente per violare gli account con timeout o blocchi.
Se l'attaccante riesce a capire le soglie (cosa che può fare con le prove), può scrivere a un bot che rimanga appena sotto quella soglia.
Ovviamente questo limita il numero di combinazioni che può provare in un dato periodo di tempo, motivo per cui questi tipi di attacchi spesso durano mesi o anni ed è improbabile che compromettano account con password ragionevolmente lunghe.
Quindi, in combinazione con una sana politica delle password (questo è un argomento diverso, qui dirò solo che complessità! = sicurezza e lunghezza> complessità) e una solida implementazione del sistema descritto, è possibile ridurre notevolmente la probabilità di un compromesso. Nella maggior parte dei casi, è sufficiente che il rischio rimanente rientri ampiamente nel limite di accettazione del rischio.
Gli accessi con limite di velocità, il blocco degli account, ecc. sono utili per fermare qualsiasi attacco di forza bruta economicamente fattibile contro una schermata di accesso, ma non è necessariamente così che viene eseguito l'attacco.
Molto spesso gli account vengono compromessi perché l'attacco di forza bruta non viene eseguito contro la schermata di accesso stessa (che è limitante) ma contro una copia dei dati. Se un utente malintenzionato può accedere ai dati tramite un server compromesso o altri mezzi, l'attacco di forza bruta consiste proprio nel scaricare gli account e le password e quindi interrompere la crittografia su una macchina molto più potente.
La forza bruta non ha bisogno di usare molta "forza". La forza bruta può durare giorni ed essere una goccia dopo goccia, ma persistente. Considererei il captcha come un non problema per qualsiasi aggressore determinato.
Anche con i tuoi vincoli hai sottinteso che questi limiti si applicano solo a un singolo account. Quindi, se so che ci sono più account, posso comunque automatizzare il processo per continuare a provare.
Non sarò in grado di forzare l'intero spazio delle chiavi possibile con i tuoi vincoli, ma sarò in grado di forzare la parte superiore 1000 password per account in poco più di 2 giorni.
Dato che un elenco delle prime 1000 password coprirebbe molto probabilmente una percentuale ragionevole dei tuoi utenti, dovresti essere in grado di ottenere l'accesso al tuo sistema abbastanza presto.
Anche tu puoi difenderti?
Limitare il periodo di prova per IP? -> Vector per evitarlo: Botnet / VPN
Quindi aggiungiamo "viaggio impossibile" alla lista? (L'utente accede dalla Germania e dagli Stati Uniti entro un minuto)
Che ne dici di provare lo stesso IP con diversi utenti?
Una cosa da considerare è il valore della risorsa che si tenta di proteggere e quali passaggi aggiuntivi si desidera eseguire per proteggerla. Un'altra aggiunta abbastanza sicura alla forza del tuo sistema è un secondo fattore. Ma questi possono comportare un costo aggiuntivo per te, a seconda di cosa usi e di quante autenticazioni devi effettuare. Ad esempio, come servizio autonomo, Azure addebiterà 1,4 $ per 10 autenticazioni. Oppure potresti utilizzare un qualche tipo di servizio gratuito o un sistema "Grid" con dati univoci per utente.
La forza bruta è ancora una minaccia probabile?
"Probabile" dipende da quanto sei gustoso un bersaglio. Se sei un bersaglio desiderabile, allora sì, sono una minaccia.
Mentre un timeout con un limite di velocità e un blocco si prenderà cura della forza bruta, poiché otterrebbero solo X tentativi in Y minuti , è un grosso problema poiché consente agli aggressori esterni di bloccare i tuoi utenti quasi senza sforzo.
In questo caso puoi scegliere tra le minacce. Stai decidendo che in cambio della protezione dei singoli account, un utente malintenzionato può bloccare gli utenti. È un attacco diverso dal furto / modifica dei dati, ma è comunque un attacco.
Una soluzione migliore sarebbe richiedere password complesse e autenticazione a due fattori e non avere blocchi.
Se esegui entrambe le operazioni, i tuoi account saranno ragionevolmente al sicuro e i tuoi utenti non verranno bloccati.
La vulnerabilità qui è ridotta in modo significativo poiché l'attaccante dovrà rubare e violare il database delle password e i segreti 2FA per ottenere l'accesso, ma quando sono abbastanza in profondità per farlo, non lo fanno in realtà hanno più bisogno degli account utente.
Dipende tutto da ciò che stai proteggendo. Se è un blog Wordpress e gli utenti non possono commentare il tuo ultimo post, non è un grosso problema. Se il tuo sito contiene documenti finanziari, medici o di sicurezza, è un grosso problema.