OTP con restrizioni IP come Autenticazione ammin. Web sicura o meno

3

Ho creato un pannello di amministrazione Web con la seguente implementazione di sicurezza.

  1. Si trova in una sottodirectory del web, che attiverà un errore 404 quando tenterà di accedere (proprio come il link è rotto o non esiste).
  2. Questo (solo se viene aperta la sottodirectory corretta) a sua volta invia una e-mail all'amministratore, con un url, che ha un token.
  3. Il token è di 2 parti, uno è un md5 casuale di 5 numeri a 5 cifre casuali, un altro è un md5(strrev(md5(IP_ADDR))) . Il token viene salvato nel database invalidando tutte le altre sessioni.
  4. Questi token sono separati da un segno _.
  5. Quando l'amministratore (o chiunque) tenta di accedere all'URL, per prima cosa il token IP viene abbinato se lo stesso IP sta accedendo all'URL. In caso contrario, viene visualizzata la pagina 404.
  6. Se sì, il token casuale salvato nel database viene confrontato con quello inviato per posta. Se anche questo ha successo, si apre il pannello di amministrazione.
  7. Qualsiasi tentativo non valido mostrerà l'errore 404.
  8. Questo token verrà automaticamente invalidato ogni 20 minuti, grazie al cron job.

A condizione che l'e-mail possa essere aperta solo dall'amministratore del sito web.

Quali potrebbero essere i difetti in questa implementazione? Come può essere migliorato?

    
posta Sibidharan 06.04.2016 - 22:39
fonte

2 risposte

2

È improbabile che si possa dare una risposta unica a questa domanda poiché ognuno può coprire diversi difetti. Ecco alcuni, riguardanti solo la derivazione di token e l'uso di 404 :

La seconda parte del token può essere calcolata direttamente da qualsiasi avversario in quanto conosce il proprio indirizzo IP. Può quindi essere rimosso senza ridurre la sicurezza.

L'uso di un hash nella prima parte del token non aggiunge alcun valore di sicurezza, ma aumenta il sovraccarico (anche se probabilmente trascurabile, è ancora inutile). Il punto della password monouso è che per un avversario è difficile indovinare il valore generato casualmente; l'hashing del valore non fa nulla per aumentare la difficoltà in quanto un avversario deve indovinare i 5 numeri originali o l'hash.

Lo spazio di indovinare con il primo è di 1e25 valori in quanto si può semplicemente concatenare tutti i numeri. Questo è equivalente a log (1e25) / log (2) = 83.05 bit; non ottieni magicamente il 128 di MD5.

Hai bisogno di aumentare questo? La mia ipotesi sarebbe che un attacco di forza bruta ti manderebbe DOS in anticipo, ma c'è poco danno nell'usare più spazio quindi fallo.

L'uso degli errori 404 è sicurezza per oscurità che non è sicurezza.

    
risposta data 06.04.2016 - 23:12
fonte
1

Indipendentemente dalla qualità del tuo numero casuale a 5 cifre, vorrei approfondire la tua richiesta "A condizione che l'e-mail possa essere aperta solo dall'amministratore del sito web."

Supponiamo che l'account di posta elettronica degli amministratori sia protetto solo da password. In questo modo si combina una password (password di posta elettronica) con probabilmente la password dell'interfaccia di amministrazione Web. Risultante in due password che possono essere attaccate in modo simile. L'attaccante potrebbe pensare "quanto incoveniente, devo prendere due password". Ma lui è bravo ad attaccare le password! Non importa se lo fa una o due volte.

Quindi dovresti pensare ad aggiungere qualcosa, dove l'attaccante non è bravo. Un vero secondo fattore come un token hardware o un yubikey. Forse anche un pessimo autenticatore di Google (supponendo che non sia bravo a procurarsi malware sul tuo smartphone). Tra l'altro, tutti questi sono supportati dall'open source privacyidea .

    
risposta data 07.04.2016 - 12:19
fonte

Leggi altre domande sui tag