È male lasciare che gli amministratori cambino l'e-mail degli utenti quando ripristinano le password?

2

Sono confuso su come implementare la funzionalità di reimpostazione della password. Sto testando un'applicazione Web con due ruoli: amministratore e utente normale. Solo gli amministratori possono utilizzare la funzionalità di reimpostazione della password (non ha MFLAC).

Questa funzione trova un utente e carica una vista con i dati di base, ad esempio "TEST_USER" con l'e-mail "[email protected]". I campi non hanno l'attributo "readonly", quindi possono essere modificati dall'amministratore. Quando l'utente fa clic sul pulsante "Ripristina", l'applicazione invia un'email a "TEST_USER" con un URL ( https://host.com/resetPassword.aspx?token=TOKEN ).

Il link carica una pagina con due campi, "nuova password" e "verifica nuova password". Qui ho cambiato la password e completato il processo.

Se un utente malintenzionato modifica il valore nel campo "e-mail" ed entra in "[email protected]", l'applicazione invierà il link all'attaccante, consentendo così all'utente malintenzionato di modificare la password. È importante ricordare che questa funzione è suscettibile a CSRF perché non ha un token .

Quindi penso che questa sia una vulnerabilità perché un utente malintenzionato o un amministratore può modificare l'e-mail e reimpostare la password per qualsiasi utente senza che se ne accorga. Utilizzando CSRF, un utente malintenzionato può inviare un URL dannoso che reimposta la password a un amministratore.

Quindi penso che questo non sia un modo corretto per implementare questa funzionalità perché ho sentito che una buona pratica è l'invio di un solo token all'indirizzo email.

Penso che il modo corretto per farlo sarebbe:

  1. Assicurati che l'indirizzo e-mail appartenga all'utente la cui password è stata ripristinata.
  2. Dovresti inviare solo un token anziché un URL.
  3. Nella pagina ResetPassword.aspx incolla il token.
  4. Verifica l'utente con domande sulla sicurezza.
  5. Consenti all'utente di inserire "nuova password" e "verifica nuova password"

Questa è una vulnerabilità? È questo il modo corretto per implementare questa funzionalità?

    
posta Jorge 09.01.2018 - 21:04
fonte

2 risposte

1

Sì, questa è sicuramente una vulnerabilità. Due in realtà:

  1. La protezione CSRF mancante per un'azione sensibile
  2. Non richiede una password quando si modifica un indirizzo email

Il primo è ovvio e hai già spiegato perché è cattivo. Il secondo è negativo perché è essenzialmente lo stesso di non richiedere una password quando si modifica una password (che è non valido ), e ovviamente lascia che un amministratore prenda possesso degli account. Combinando questi due problemi, un utente malintenzionato non autenticato potrebbe rilevare account arbitrari.

Se il secondo problema è qualcosa che deve essere affrontato dipende dall'applicazione. Potrebbe essere utile che un amministratore disponga di autorizzazioni di ampia portata, incluso il controllo degli account di altri utenti. Se questo non è desiderato, un amministratore non dovrebbe avere la possibilità di cambiare gli indirizzi email, solo gli utenti dovrebbero essere in grado di farlo.

    
risposta data 11.01.2018 - 11:13
fonte
0

Solo un commento:

Verify the user with security questions.

Questa è un'idea apparentemente buona, che è stata usata molte volte 1 per hackerare le email. Le buone password sono difficili da stabilire, ma non ho mai trovato mai una buona domanda di sicurezza che solo l'utente può conoscere e facilmente ricordare. Basta leggere una pagina pubblica di Facebook per dare suggerimenti per le risposte alla maggior parte delle domande di sicurezza ...

E non dimenticare, puoi forse proteggere la tua privacy da un altro utente che ha solo un ruolo di amministratore così chiamato . Ma un amministratore di sistema può accedere ai dati archiviati non elaborati e può modificare qualsiasi password in qualsiasi momento. Semplicemente non hanno interesse a farlo ...

1 Almeno l'account email di Sarah Palin è stato violato in questo modo durante la campagna USA per le elezioni presidenziali

    
risposta data 10.01.2018 - 17:47
fonte

Leggi altre domande sui tag