Dovrebbe essere possibile in un buon software, utilizzando un link "Cambia password" per un singolo utente, cercare di indovinare le password per ogni utente di un'applicazione?

2

Sto litigando con il "Security Expert" della mia squadra su questa domanda di base e ho bisogno di aiuto per ottenere un valido argomento / i valido / i.

Il pretesto è il seguente: Dovrebbe essere possibile / valido cercare di indovinare / password brute-force per ogni utente conosciuto dell'applicazione, utilizzando il link "Cambia password" per un singolo utente ??

Gli ho fatto questa semplice domanda: Otteniamo un link a "Cambia password" per ogni account quando qualcuno chiede la modifica della password e sembra che utilizzando il link "Cambia password" puoi provare a indovinare la password di ogni utente dell'applicazione. È valido per una funzionalità di 'Cambia password' ?? Ha detto: "Sì, va bene"

Quindi, in pratica quando qualcuno chiede l'opzione "Cambia password" dal nostro software, riceve un link. Ora sembra che usando quel collegamento è possibile provare a fare richieste di forza bruta per "Cambia password" per Tutti gli utenti dell'applicazione. Il punto di My Security Expert è lo stesso è anche possibile dalla "Pagina di accesso" principale in quanto anche lì si può provare a forzare la modifica della password per ogni utente, quindi è ignaro (contro qualsiasi necessità di modifiche !!) al "Cambia "Password" contro questo problema. La stessa logica di rilevamento forza bruta è posizionata sotto sia la pagina "Cambia password" sia la pagina "Login Portal".

Aiuta l'aiuto !!

    
posta Deb 02.02.2016 - 14:03
fonte

3 risposte

1

Un buon design è rendere la pagina Change Password accessibile agli utenti registrati in modo tale che solo lui possa modificare la propria password. (l'identità degli utenti deve essere legata a qualcosa fuori dal loro controllo (ad esempio, sessionid) e non deve essere inviata come parametro che è ipotizzabile e può essere manomesso dall'utente per accedere alla pagina di modifica della password per gli altri)

La tua applicazione dovrebbe proteggere dagli attacchi di forza bruta usando soluzioni come captcha e / o meccanismi di blocco. Se c'è una tale logica dietro a entrambe queste pagine, allora è più probabile che tu vada bene, a meno che questo tipo di design non venga utilizzato in altre parti dell'applicazione dove un utente può impersonare un altro utente e apportare modifiche per conto di altri.

    
risposta data 02.02.2016 - 14:27
fonte
0

No, non dovrebbe essere possibile farlo!

Ci sono diversi problemi sollevati qui:

  1. Il link della password di modifica contiene l'ID utente. Suppongo che questo sia per gli utenti che hanno effettuato l'accesso a cambiare le loro password, quindi sono un po 'insicuro sul motivo per cui stai inviando link in quel caso. Sai che sono autorizzati (o almeno hanno la possibilità di accedere), quindi puoi tranquillamente cambiare la password in questo caso richiedendo la vecchia password (per impedire il furto della sessione) e la nuova password su uno schermo che richiede un utente per accedere. Non è necessario un collegamento e gli utenti possono modificare la propria password solo se conoscono la loro vecchia password.

  2. L'esperto dice che puoi forzare la forza dalla schermata di accesso. Questo non dovrebbe essere possibile. Potrebbe essere evitato richiedendo un CAPTCHA per l'accesso o altri metodi di protezione da forza bruta, come la limitazione della velocità IP.

  3. Non c'è alcuna protezione contro il furto di sessioni - dopo aver rubato un cookie di sessione, sarebbe stato possibile cambiare l'indirizzo email, richiedere una modifica della password, quindi cambiarlo in qualunque cosa volessi. Se questo richiede la vecchia password, va bene, ma permetterebbe quell'attacco a forza bruta - se posso cambiare la password, ho indovinato quella vecchia correttamente.

  4. Se si tratta di un sistema di password dimenticata (ad esempio, per le persone che non conoscono la loro vecchia password), non ha protezione contro la riproduzione. Dopo aver ricevuto un link, posso resettare la mia password tutte le volte che voglio. I collegamenti password dimenticati devono includere un token monouso, in modo che ogni ripristino possa avvenire solo una volta e, idealmente, entro un tempo relativamente breve della richiesta originale.

risposta data 02.02.2016 - 17:27
fonte
0

In generale, non dovresti mai includere le informazioni principali nei tuoi URL pubblici. "Informazioni principali" qui significa tutto ciò che può suggerire all'utente (o chiunque altro) quale sarà l'entrata successiva o precedente del tuo tavolo. Se devi includere user_id nell'URL, utilizza almeno qualcosa di simile a un indirizzo email per identificare l'utente. In questo modo, nessuno sarà in grado di indovinare quale potrebbe essere il prossimo indirizzo email. Se ritieni che qualcuno utilizzi ancora qualche regex malvagia e invii un link per reimpostare la password per ogni email, potresti fare un ulteriore passaggio per utilizzare una crittografia a due vie per qualsiasi informazione identificativa in modo che il tuo link assomigli a ...&userlogin=bNmaddaA_ad8... dove il valore potrebbe essere qualcosa come una stringa codificata in base64 che era già stata codificata in qualche altro modo. Ovviamente avresti la chiave segreta sul tuo back-end, quindi davvero cercando di decifrare tali informazioni arbitrarie ci vorrebbe un po 'di sforzo prima che la persona sia in grado di forzare la forza sul tuo server.

    
risposta data 27.08.2018 - 00:20
fonte

Leggi altre domande sui tag