I tempi di caricamento aggiuntivi sui tentativi di accesso possono costituire una minaccia alla sicurezza?

2

Ho un'applicazione web costruita con PHP con una pagina di accesso in cui si suppone che il visitatore inserisca l'indirizzo email del suo account e la password corrispondente.

Poiché utilizzo la funzione di hashing nativo (lento) di PHP, ogni volta che un visitatore immette l'email di un account esistente, utilizzerà la funzione di verifica della password per verificare se la password è corretta. Ciò aumenta anche il tempo di caricamento della pagina di circa 0,5 secondi a causa del processo di verifica della password.

Se non c'è un account utente esistente con l'email di input, la pagina si carica velocemente perché non tenterà nemmeno di verificare la password se non c'è nulla da verificare.

Dato che chiunque provi a usare la forza bruta probabilmente capirebbe che esiste un account utente esistente per l'email di input a causa del tempo di elaborazione aggiuntivo della pagina, sarebbe una possibile minaccia per la sicurezza?

Nota: sto solo mostrando un errore di accesso generico come raccomandato da OWASP. Quindi non è un problema.

    
posta Kid Diamond 10.09.2014 - 22:01
fonte

5 risposte

4

Questo è un tipo di attacco temporale , che porta a un enumerazione del nome utente vulnerabilità.

Se questa è una minaccia o meno dipende dal design del tuo sistema. Se i nomi utente dovrebbero essere privati, è una preoccupazione. Alcuni sistemi sono scritti in modo tale che l'enumerazione degli utenti si adatta al design, come i provider di posta elettronica, dato che gli indirizzi di posta elettronica sono generalmente pubblici e se qualcuno ha l'indirizzo email [email protected] allora hanno sicuramente una sorta di account email in example.com e non vi è nulla trapelato lasciando che altri utenti sappiano che questo esiste. Il nome utente è pubblico comporta un rischio maggiore in quanto un utente malintenzionato saprà quali account possono essere presi di mira. In un sistema di posta elettronica, tuttavia, questo può essere ottenuto da un utente malintenzionato che invia un'email all'indirizzo per scoprire se rimbalza, quindi in questo caso non è possibile fare altro per limitare questo vettore di attacco (se si desidera che gli errori di battitura negli indirizzi di posta elettronica siano notificato al mittente, ovviamente).

Fondamentalmente la vulnerabilità è riassunto bene qui :

As an attacker if I can use your login or forgotten password page to narrow my list from 10000 targets to 1000 targets, I will.

A volte si presume che se un sito Web consente la registrazione dell'utente con nomi utente scelti dall'utente o una reimpostazione della password, l'enumerazione degli utenti è sempre possibile. Questo non è sempre il caso - un sistema di registrazione utente può essere combinato con un sistema di reimpostazione della password e consentire a un utente di seleziona un indirizzo email univoco come nome utente senza rivelare ad altre parti che è già in uso. Ciò si ottiene restituendo sempre lo stesso messaggio all'utente sul sito Web, ma inviando per e-mail il collegamento al passaggio successivo del processo all'indirizzo fornito. Ciò garantisce che solo chi ha accesso a quell'indirizzo email possa registrare o reimpostare la password. Naturalmente questo sarebbe per un sistema di sicurezza medio in cui si presume che un MITM di posta elettronica o altro compromesso non sia un vettore di attacco valido o utile.

Gli attacchi a tempo per loro natura richiederanno del tempo per l'esecuzione di un attaccante. Quindi potrebbero voler usare questo attacco sul tuo sistema per restringere la loro lista prima di tentare un attacco di forza bruta sui tentativi di accesso "lenti", che richiederanno anche del tempo.

Se desideri restringere il vettore di attacco, devi introdurre un ritardo artificiale che effettuerà tutti gli accessi indipendentemente dal fatto che abbiano un nome utente valido o meno per lo stesso intervallo di tempo.

    
risposta data 11.09.2014 - 17:22
fonte
2

Sono d'accordo che questo potrebbe essere visto come un attacco di canale laterale. Potrebbe rappresentare una minaccia significativa, ma dipende dalle circostanze poiché la maggior parte delle pagine di registrazione ti dirà se un'email è già stata registrata. Questo potrebbe essere un problema in cui agli utenti viene assegnato un nome utente casuale come un banco che assegna un ID cliente.

Basta cancellare la password fornita indipendentemente dal fatto che un utente venga trovato, se non viene trovato alcun utente usa qualcosa di arbitrario come sale. Ciò richiederà molto tempo indipendentemente dal fatto che un utente venga trovato.

    
risposta data 11.09.2014 - 00:21
fonte
2

Non vedo questa come una delle maggiori minacce. Sì, fornisce a un utente malintenzionato un modo per verificare che esista un determinato nome utente, ma in un'applicazione tipica esistono molti altri modi per ottenere queste informazioni.

Se si desidera impedire questo attacco di temporizzazione, è possibile riscrivere la pagina di accesso per hash la password prima di verificare se il nome utente esiste, rallentando così tutti i tentativi di accesso non riusciti alla stessa velocità.

    
risposta data 11.09.2014 - 01:59
fonte
2

: si tratta di una minaccia per la sicurezza.

Come altri hanno sottolineato, questo è un attacco di canale laterale. Sebbene tu stia seguendo i consigli OWASP e restituendo lo stesso messaggio, stai ancora rivelando a un utente malintenzionato se esiste un particolare account.

Se stavi usando nomi selezionati dall'utente, direi lascia stare. In tal caso, la procedura di registrazione rivela quali nomi utente esistono.

Tuttavia, ci sono rischi particolari con gli indirizzi email che significano che dovresti risolvere questo problema. In particolare:

  1. Un indirizzo email è collegato a una persona e se utilizzano o meno il tuo sito sono informazioni private. Se il tuo sito era pornografico o di reclutamento, rivelare che [email protected] è un membro potrebbe essere imbarazzante per loro.

  2. Ciò consente agli spammer di eseguire attacchi mirati di spear phishing. Possono iniziare con un elenco di indirizzi email, utilizzare la perdita per capire quali sono validi sul tuo sito e inviare un messaggio di phishing solo a quegli utenti.

La soluzione migliore è eseguire l'hash lento sulla password indipendentemente dal fatto che l'utente esista.

    
risposta data 11.09.2014 - 18:07
fonte
-2

Una mitigazione che non ho visto menzionata è di aggiungere un Google reCAPTCHA (o simile). Ciò impedirà i tentativi di "forza bruta" che è ciò che stai cercando di affrontare. Assicurati solo di eseguire la convalida reCAPTCHA prima di convalidare le credenziali inviate. L'aggiunta di questa funzionalità consente comunque di eseguire attacchi di temporizzazione fintanto che immettono i valori reCAPTCHA corretti. Se questo è il problema allora ci sono probabilmente problemi più grandi da affrontare (cioè strategia di mitigazione pianificata per potenziali vulnerabilità di 0 giorni).

    
risposta data 11.09.2014 - 22:49
fonte

Leggi altre domande sui tag