C'è qualche ragione per mostrare lo stesso messaggio per username non valido come password?

17

Ho visto una domanda / requisito sulla sicurezza che un accesso al sito web restituisce lo stesso messaggio di errore per la password non valida come per l'utente inesistente. L'idea è che questo rende impossibile scoprire nomi utente validi mediante la scansione dei messaggi di errore.

Nei casi in cui è disponibile l'auto-iscrizione, questo fa qualche differenza? Non puoi consentire l'iscrizione due volte con lo stesso nome utente, quindi un utente malintenzionato potrebbe semplicemente tentare di registrarsi con i nomi utente fino a quando non viene trovato un nome utente valido.

Grazie

    
posta Paul 24.03.2012 - 19:18
fonte

5 risposte

10

Se esiste un metodo almeno un per scoprire quali nomi utente sono disponibili sul sito, significa che puoi provare a utilizzare questi strumenti in modo brute-force / dictionary-attack / social engineer. Nel caso che hai descritto, non fa alcuna differenza di sicurezza tangibile per cercare di nascondere il motivo dell'errore nella pagina di accesso, poiché è banale scoprire il vero motivo altrimenti.

A seconda di cosa è più importante per te, puoi rendere il tuo processo di login più user (e attacker) amichevole, o invece provare a proteggere la tua registrazione (o qualsiasi altro) processo che potrebbe rivelare quali account esistono sul tuo sistema. / p>

Quando ti stai difendendo da tali casi relativi al processo di autenticazione per una tipica applicazione web, dovresti normalmente prendere in considerazione i seguenti percorsi:

  • Registrazione / Registrazione - questo può rivelare quali account sono disponibili e consentire di inondare il tuo sistema con account falsi / stantii, nomi accovacciati ecc. Captcha di solito può fornire una buona protezione, oltre a timeout, ma ha vinto fermare gli attacchi manuali più lenti. Suggerirei inoltre di non dare suggerimenti sulla disponibilità del nome utente o sul successo della procedura di registrazione. Puoi solo dire "Grazie per esserti registrato." Una email di conferma sarà inviata a breve per confermare l'account "(o qualcosa del genere)
  • Pagina di accesso : questo è il punto ovvio e la maggior parte delle applicazioni ha già una protezione abbastanza standard, inclusa la buona pratica di errori non rivelatori, ecc. Rallentare la procedura di accesso o monitorare l'abuso può anche aiutare. Anche il blocco per accessi non riusciti è possibile, ma in questo caso si è più esposti agli attacchi denial-of-service.
  • Hai dimenticato la password - questo è spesso trascurato quando si considera la perdita di informazioni. Quando qualcuno inserisce la propria email / nome utente nel campo della password dimenticata, è necessario rispondere con lo stesso messaggio indipendentemente dal fatto che l'e-mail / account sia noto o meno. Nota che questo potrebbe creare problemi di supporto ( "Ho inserito la mia email e il tuo sistema ha detto che mi sta inviando un'email di ripristino, ma non ho ricevuto nulla ..." )
  • Dettagli account / modifiche email : molte applicazioni ti consentono, ad es. cambia il tuo indirizzo e-mail o il nome dell'account. Ciò potrebbe anche escludere se un determinato account o un indirizzo e-mail esistano o meno. Le stesse regole si applicano qui.
risposta data 26.03.2012 - 22:28
fonte
6

No, non hai scelta per il processo di registrazione perché il nome utente deve essere univoco. Tuttavia, per mitigare l'attacco che descrivi, il tuo sistema dovrebbe forzare un ritardo tra i tentativi. Ad esempio, un ritardo di 15 secondi probabilmente non sarà evidente per gli umani (perché ci vorrà più tempo per scegliere un nuovo nome utente), ma un aggressore è limitato a 4 ipotesi al minuto.

Su una nota correlata, c'è una leggenda urbana su un sito web che richiedeva il suo utilizzo per avere password uniche così come nomi utente univoci. Inutile dire che questo ha non migliorare la sicurezza. : -)

    
risposta data 24.03.2012 - 19:21
fonte
4

Oltre agli ottimi punti già menzionati da Yoav: IMO l'unico modo per proteggere completamente contro la raccolta di informazioni durante la registrazione è utilizzare gli indirizzi email come nomi utente. In questo modo è possibile inviare una e-mail all'indirizzo utilizzato per la registrazione senza fornire alcun feedback direttamente sul sito. Il contenuto dell'email potrebbe essere simile a questo:

  • "Un account per [email protected] [con nome utente xy] era appena registrato su $ site. Fai clic qui per confermare."
  • "Qualcuno ha provato a registrare un account per un @ bc [con nome utente xy] su $ sito, tuttavia questo account esiste già. Se hai dimenticato la password, fai clic qui. Se non hai avviato la registrazione, ti preghiamo di ignorare questa email."

In questo modo, solo il proprietario dell'indirizzo email sarà in grado di verificare se è già stato creato un account per l'indirizzo.

La funzionalità di reimpostazione della password è come la maggior parte delle volte menzionata da Yoav non è incentrata sulla raccolta di informazioni. Abbiamo appena analizzato la sicurezza dei noti provider di cloud storage, che hanno consentito la raccolta di informazioni almeno attraverso la funzione di reimpostazione della password.

    
risposta data 27.03.2012 - 10:37
fonte
2

Sì, fa la differenza. Potrei scansionare il sito testando i nomi fino a trovare un nome valido, poi martellarlo con un tentativo di password a forza bruta. Non conoscendo un nome utente valido significa che devo indovinare che qualsiasi nome utente potrebbe essere valido, il che aumenta la mia incertezza e aumenta il numero di casi di test.

Se so qual è l'account che voglio forzare, allora no, non importa che non ci siano differenze nei messaggi.

    
risposta data 26.03.2012 - 21:16
fonte
0

@Hai detto molto bene.

Sì, è importante proteggere la privacy dei clienti e (probabilmente) la lista dei clienti.

Penso che una buona soluzione sia combinare le risposte di @Adam e @twobeers.

  1. Richiedi un passaggio di verifica via email ogni volta che un nome utente / email viene creato o modificato. Non rivelare se l'account esiste o meno.
  2. Limita il tasso a tutti i moduli che possono modificare il nome utente / email.

La combinazione di questi due protegge l'identità dei tuoi clienti e limita l'e-mail.

    
risposta data 03.09.2013 - 01:59
fonte

Leggi altre domande sui tag