Debolezze di 3-Strike Security


10

Ho letto alcune pubblicazioni sulla sicurezza, in particolare la sicurezza / crittografia delle password, e c'è stata una cosa che mi chiedevo: la regola dei 3 strike è una soluzione perfetta per la sicurezza delle password? Cioè, se il numero di tentativi di password è limitato a un piccolo numero, dopo il quale tutte le richieste di autenticazione non saranno onorate, ciò non proteggerà gli utenti dalle intrusioni? Mi rendo conto che ottenere l'accesso o il controllo su qualcosa non significa sempre passare attraverso il sistema di autenticazione, ma questa funzione non rende obsoleti gli attacchi dizionario / forza bruta? C'è qualcosa che mi manca?


3
Questa domanda potrebbe essere stata posta meglio a Security per riferimento futuro.
maple_shaft

1
Come ho scoperto, c'è sempre un posto più appropriato da chiedere. Grazie, proverò a ricordarmelo.
prelic

Risposte:


13

Sì, renderà impossibili gli attacchi del dizionario attraverso il meccanismo di accesso . (Ciò non significa molto se ottengono l'accesso al database, tuttavia. Per motivi di sicurezza, è necessario eseguire correttamente l'hash e il salt delle password.)

Permette anche la possibilità di un attacco DOS contro un determinato utente. Diciamo che volevo impedirti di accedere. Tutto quello che dovrei fare è eseguire tre tentativi di accesso fasulli sul tuo account, e poi farlo di nuovo ogni volta che fai tutto il necessario per ripristinare l'accesso. Affrontare questo problema è un po 'più complicato.


1
Grazie! Per curiosità, quale sarebbe un approccio per affrontare l'ultimo problema che hai descritto? Per un esempio reale, tonnellate di forum online usano il nome utente pubblico come ID di accesso (al contrario di un'e-mail allegata all'acct o qualcos'altro), il che significa che posso vedere cosa utilizza ogni singolo utente per accedere. Cosa mi impedisce di bloccare ogni singolo utente dal proprio account? Un buon amministratore? Sembra che sarebbe banalmente facile bloccare ogni singolo utente fuori dal sito.
prelic

@prelic: Beh, per affrontare questo problema, implementerei qualcosa del tipo "se un determinato indirizzo IP fa troppi tentativi di accesso non validi, bloccali". Questo fermerà lo scenario che hai citato, ma non affronterà un serio tentativo di hacking come una botnet. Per questo hai bisogno di maggiore sicurezza.
Mason Wheeler,

4
La solita soluzione è quella di limitare la percentuale di tentativi che provengono da un determinato utente da un IP fisso a 5 al minuto. Non è perfetto, ma di solito non si creano problemi ad altri utenti, a meno che non ci si trovi dietro lo stesso proxy
Andrea

Un altro approccio è quello di presentare un captcha dopo 2 tentativi di accesso non riusciti dallo stesso IP, ma un determinato attaccante può semplicemente noleggiare un turk meccanico che cattura il captcha per questo scopo, inoltre è abbastanza difficile trovare un buon captcha che mantenga effettivamente le macchine su.
martedì

3

Concordo anche sul fatto che rende gli attacchi del dizionario meno efficaci come modi per ottenere l'accesso a un account senza l'autorizzazione adeguata. Però:

  • Questo approccio potrebbe trasformare un attacco del dizionario in un attacco DOS contro il sistema impedendo l'accesso se implementato male. Ad esempio, un server potrebbe essere invaso da tentativi di autenticazione. Un modo per aggirare questo problema è far sì che il servizio di autenticazione controlli il flusso degli accessi successivi a un account bloccato. Ad esempio, se un account è bloccato, presentare un ritardo prima di ogni tentativo di accesso successivo. Si potrebbe mettere un ritardo tra un tentativo di accesso e un "accesso negato", tuttavia, che mantiene la porta aperta a un attacco di negazione del servizio distribuito in cui un utente malintenzionato lancia molti tentativi di autenticazione simultanei.

  • Come è stato detto nell'altra risposta, questo potrebbe anche trasformare un attacco del dizionario in un DOS grezzo contro il legittimo proprietario dell'account che viene attaccato. I modi per mitigare l'impatto sul legittimo proprietario includono:

    • Rallentare l'esecuzione di nomi utente non fornendo indizi sul fatto che sia il nome utente o la password che sono sbagliati. Ciò rende gli attacchi in cui il colpevole sta indovinando nomi utente più visibili agli amministratori e meno efficaci.
    • Invece di bloccare un account dopo un numero fisso di tentativi falliti, è sufficiente bloccare quella modalità di autenticazione. In altre parole, richiedere a un utente il cui account è stato attaccato per autenticarsi utilizzando un metodo diverso (probabilmente più coinvolto, ma meno facilmente attaccato). Un buon esempio è come un telefono Android richiederà a un utente di utilizzare le informazioni di accesso a Google dopo aver fallito l'autenticazione utilizzando una sequenza di sblocco dello schermo o un PIN. In teoria, è un po 'come richiedere a un utente attaccato di richiedere lo sblocco del proprio account, tuttavia non richiede alcun intervento immediato da parte di un amministratore di sistema.
    • Invece di bloccare un account (o oltre a bloccare un account, per questa particolare modalità di autenticazione - vedi sopra), bloccare i tentativi di autenticazione dalla posizione in cui ha origine l'attacco. Ad esempio, se l'autenticazione viene eseguita tramite un nome utente e una password, sulla rete, dopo tre tentativi di autenticazione falliti, è possibile impedire a ulteriori tentativi da parte di utenti dello stesso IP o sottorete di accedere con un nome utente o una password. Laddove esiste una buona probabilità che più utenti (incluso l'attaccante) possano utilizzare lo stesso IP o sottorete, è possibile semplicemente disabilitare l'autenticazione nome utente / password per l'IP o la sottorete per un periodo di tempo, lasciando più metodi di autenticazione coinvolti aperti per innocenti utenti in prossimità dell'attaccante.
  • Se la tua paura sta inavvertitamente penalizzando un utente smemorato come se fosse un attaccante, invece di controllare il flusso di tentativi di accesso falliti dopo un numero fisso di tentativi falliti, potresti usare la frequenza dei tentativi di accesso come prova che un account viene attaccato. Ad esempio, se vengono visualizzati 10 tentativi di autenticazione nell'arco di un secondo, è possibile utilizzare uno dei metodi sopra indicati per impedire ulteriori tentativi di autenticazione simili. In alternativa, è possibile utilizzare questo rapido flusso di tentativi di accesso come segnale per iniziare a controllare il flusso. Questo metodo sta diventando sempre più popolare nei forum, mentre, dopo un certo numero di tentativi di accesso non riusciti da un determinato IP, a quell'IP viene impedito di autenticarsi per un breve periodo di tempo.

  • Infine, un buon modo per impedire a un utente di essere ripetutamente preso di mira da un attacco DOS è consentendogli di reimpostare sia la sua password che il suo nome utente . In altre parole, tratta sia il nome utente che la password come segreti. Laddove il nome utente viene utilizzato altrove (ad es. In un forum, se il nome utente è il nome visualizzato dell'utente), è sufficiente considerare questo nome visualizzato come qualcosa di separato. Questo approccio viene solitamente utilizzato dai social network in cui il nome utente utilizzato nell'autenticazione è il proprio indirizzo e-mail - qualcosa che può essere modificato, ma raramente condiviso - mentre il nome visualizzato utilizzato sul sito è qualcosa definito dall'utente che può o meno essere cambiato.

Spero comunque che una o alcune combinazioni di questi approcci possano tornare utili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.