È pericoloso mostrare che il nome utente / account non esiste al login? [duplicare]

62

In base alle Linee guida per l'autenticazione OWASP , "Un'applicazione dovrebbe rispondere con un messaggio di errore generico indipendentemente da se l'ID utente o la password non erano corretti, non dovrebbe fornire alcuna indicazione sullo stato di un account esistente. "

Tuttavia, ho riscontrato che molte app Web diffuse violano questa linea guida mostrando un messaggio che l'account non esiste.

Quindi cosa sta succedendo qui? Google, Microsoft e Slack stanno facendo qualcosa di insicuro o la linea guida OWASP è inutile?

    
posta styfle 25.04.2017 - 14:41
fonte

7 risposte

105

Questa è una considerazione tra sicurezza e usabilità, e quindi non c'è davvero una risposta giusta qui. Quindi ecco la mia opinione.

Se riesci a mantenere segreti i nomi utente, fallo. In questo caso non c'è modo di capire se esiste un nome utente e il login reagisce allo stesso modo se un utente esiste o meno. Nota che questo significa anche richiedere lo stesso tempo per restituire un messaggio di errore.

Questo comportamento potrebbe non essere possibile. Ad esempio, se gli utenti possono registrarsi e scegliere il proprio nome utente, è necessario notificarlo quando esiste già un nome utente nel sistema. In tal caso, rendere il login il più semplice possibile, fornendo il messaggio di errore più dettagliato. Se qualcuno può capire se un utente esista usando la funzione di registrazione, non è utile nasconderlo al momento del login.

    
risposta data 25.04.2017 - 15:20
fonte
27

Non è l'unica linea guida OWASP a non essere seguita da grandi giocatori. OWASP si concentra spesso sulla sicurezza e ignora l'usabilità. Può essere una valida scelta di progettazione se combinata con una politica di password decente, protezione brute-force (blocco, captcha, ..), MFA, monitoraggio dei tentativi di accesso falliti, ecc.

Prendi in considerazione che l'enumerazione degli utenti non è solo il problema di essere in grado di indovinare gli account utente che puoi successivamente utilizzare come forza bruta per l'autenticazione. Alcuni siti dovrebbero proteggere la privacy dei loro utenti (adulti, partiti politici, appuntamenti, ...). Se voglio verificare se il mio capo utilizza un sito web per adulti, posso usare impropriamente una vulnerabilità legata all'enumerazione degli utenti per sapere quali siti sta utilizzando.

    
risposta data 25.04.2017 - 15:23
fonte
12

Non puoi impedirlo. (a meno che tu non sia pronto a sacrificare una notevole quantità di usabilità.)

L'enumerazione degli utenti può essere indesiderabile e ci sono in effetti potenziali implicazioni sulla sicurezza (ad es. se un utente malintenzionato scopre che esiste un account valido denominato admin a cui potrebbero tentare di accedere). Ma per i siti di grandi dimensioni è qualcosa che non puoi smettere di accadere.

Anche se non rivelate durante il login che un utente non esiste, dovrete eventualmente avvisare i nuovi utenti quando tentano di registrare un nome già preso o con un indirizzo e-mail già utilizzato .

Non c'è un modo semplice per aggirare questo:

    
risposta data 25.04.2017 - 17:48
fonte
7

La sicurezza è relativa. È leggermente più sicuro non fornire informazioni sul fatto che l'account esista o meno. Ma ciò non significa che non sia sicuro fornire tali informazioni. È solo meno sicuro, e solo molto leggermente.

Questo è particolarmente vero negli esempi che dai; ci sono altri modi per trovare i nomi degli account, quindi non c'è alcun vantaggio nel cercare di nascondere se l'account esiste o meno.

Come per ogni forma di sicurezza per oscurità , nascondere i nomi degli account è un debole controllo di sicurezza, e sono necessari altri controlli.

    
risposta data 25.04.2017 - 16:07
fonte
3

Sono d'accordo con la risposta di @ Silver, ma voglio espandere. Tieni presente il contesto; le linee guida OWASP sono intese come regole empiriche per gli sviluppatori che non sono esperti di sicurezza. Se una società di sviluppo software ha un team di architetti di sicurezza di alto livello, non è necessario seguire le regole del cieco fino a quando capiscono l'intenzione dietro le regole e attenuano i rischi in altri modi.

Analogia: si suppone che cambi l'olio della tua auto ogni 3 mesi o 5.000 km, ma i meccanici dell'automobile spesso lo spingono più a lungo quando sanno che le loro abitudini di guida sono buone. E questo è perfettamente ok.

Per quanto riguarda le specifiche qui, non sono un esperto in vulns di enumerazione degli utenti, né sono a conoscenza del motivo per cui Google e Microsoft hanno preso le decisioni che hanno fatto, ma presumo che abbiano un elenco limitativo e nero per prevenire attacchi di enumerazione degli utenti su larga scala e hanno deciso altrimenti che la convenienza dell'utente vale il rischio aggiunto.

    
risposta data 25.04.2017 - 16:14
fonte
1

Probabilmente è troppo difficile dire che violano le linee guida OWASP, perché per applicazioni e servizi come Google, Microsoft, devono essere il più possibile "conformi agli utenti".

Inoltre, tutti hanno o offrono protocolli 2FA.

    
risposta data 25.04.2017 - 15:13
fonte
0

Lo scopo di non divulgare l'identificativo utente attivo è quello di impedire l'enumerazione di un numero elevato di account.

In senso stretto, puoi proteggerti consentendo account duplicati, ma questo è un design terribile e ti porterà a tutti i tipi di problemi.

Un altro modo per farlo è quello di assegnare agli utenti un identificatore - costruirne uno che non è utilizzato. Ma questa è una così scarsa esperienza di usabilità che potrebbe non valerne la pena *.

Il modo ragionevole per mitigare il rischio è implementare qualsiasi funzione anti-enumerazione, ad esempio un captcha di buona qualità, per rallentare qualsiasi tentativo di enumerazione. Quindi il design è ragionevolmente sicuro.

Il rischio residuo è allora che lasci aperta la verifica di un account di valore molto alto - ad esempio, [email protected]. Quindi attenuerai questo rischio implementando anche un controllo contro i tentativi di cracking della password, ecc.

* Salzer and Shroeder, Protezione delle informazioni nei sistemi informatici , Sezione IA3) h) Accettabilità psicologica: è essenziale che l'interfaccia umana sia progettata per la facilità d'uso, in modo che gli utenti applichino automaticamente e correttamente i meccanismi di protezione. Inoltre, nella misura in cui l'immagine mentale dell'utente dei suoi obiettivi di protezione corrisponde ai meccanismi che deve utilizzare, gli errori saranno ridotti al minimo. Se deve tradurre la sua immagine dei suoi bisogni di protezione in un linguaggio di specifica radicalmente diverso, farà errori.

    
risposta data 27.04.2017 - 09:07
fonte

Leggi altre domande sui tag