Domanda:
Perché chiediamo la password esistente di un utente quando si modifica la password?
Craig Curtis
2012-11-21 10:46:07 UTC
view on stackexchange narkive permalink

In un contesto di applicazioni Web, quando un utente desidera modificare la propria password corrente, in genere dovrebbe prima immettere la password corrente. Tuttavia, a questo punto, l'utente è già stato autenticato utilizzando la password corrente per accedere.

Capisco in qualche modo che la password esistente sia richiesta per prevenire utenti malintenzionati (che potrebbero accedere alla sessione corrente sulla macchina dell'utente) dalla modifica della password. Tuttavia questo argomento non può essere utilizzato in nessuna situazione? Perché non chiedere la password ogni volta che viene effettuata una richiesta di informazioni sensibili? In che modo è diverso l'atto di cambiare una password?

Per quanto riguarda l'ultima parte della domanda, la mia università utilizza un'applicazione web per i prof per assegnare i voti, e quando vuoi inserire o inviare voti, viene richiesta la tua password. Quindi sì, succede che la password venga richiesta per altre attività sensibili.
La richiesta di una nuova autenticazione fornisce una difesa aggiuntiva contro i Cross Site Request Forgeries (CSRF) che, dato il contesto in cui si cambia la password, sarebbero particolarmente devastanti.
Ai vecchi tempi (quando le persone condividevano molto gli account) reinserire la password era anche un mezzo per [controllo ottimistico della concorrenza] (https://en.wikipedia.org/wiki/Optimistic_concurrency_control);se qualcun altro avesse già cambiato la password, non saresti in grado di cambiarla di nuovo.
Sette risposte:
D.W.
2012-11-21 11:01:39 UTC
view on stackexchange narkive permalink

Se un utente lascia il proprio computer incustodito per alcuni minuti (mentre è connesso), non vogliamo che qualcun altro sia in grado di passare e cambiare rapidamente la propria password. Per prima cosa, questo consentirebbe all'autore dell'attacco di cambiare anche l'indirizzo email associato e ora il legittimo proprietario non recupererà mai il suo account.

Per un'altra cosa, pensa solo al potenziale per l'ufficio scherzi!

La modifica della password è un'operazione abbastanza delicata che ha senso richiedere all'utente di autenticarsi nuovamente. Inoltre, poiché la modifica della password è un'operazione relativamente rara, ciò non presenta molti inconvenienti per gli utenti: cambia solo l'esperienza dell'utente nei rari casi in cui si cambia la password.

Sì, la comodità uccide la sicurezza, qualcosa che continuiamo a non imparare. Quindi inserendo la vecchia password per autenticare che la persona conosce almeno la vecchia password. Ho avuto un periodo in cui i burloni dell'ufficio avrebbero avuto varie diavolerie, l'ultima goccia era un blocco causato su un sito Web di fornitori in cui un singolo account era condiviso in tutta l'azienda. È incredibile quanto sia facile creare sei account separati e tenere le password per voi stessi dopo che i vostri giorni di acquisto e informazioni di vendita vengono tagliati mentre giocate a tag del telefono con il tecnico dell'help desk dall'altra parte. Avevano amato nessuna barriera ...
Thomas Pornin
2012-11-21 18:33:18 UTC
view on stackexchange narkive permalink

A parte la motivazione alla sicurezza espressa da altre risposte (perché la password è molto sensibile e non vogliamo che qualcuno che ottiene un accesso temporaneo, ad esempio un raid all'ora di pranzo, la trasformi in accesso permanente), possono esserci problemi pratici. Ad esempio, nei sistemi in cui sono presenti segreti utente crittografati con password , la vecchia password è necessaria per decrittografare tali dati e ricrittografarli con la nuova password. Questo è esattamente ciò che accade sui sistemi operativi Windows (è una delle grandi differenze con il modello di sicurezza Unix) e può applicarsi anche ad alcuni sistemi basati sul Web (a seconda di ciò che fa il sistema basato sul Web).

Stavo per includerlo, perché ho appena implementato una crittografia basata su password per alcune credenziali di terze parti nei nostri account utente. La modifica della password o di queste credenziali di terze parti richiede la conoscenza di quella vecchia per decrittografare i dati in modo che possano essere modificati e / o ricodificati.
Perché dici che è diverso da Unix? Questo è esattamente ciò che Gnome (e probabilmente anche KDE e OS / X) fanno con i loro portachiavi e / o directory crittografate (come moduli PAM).
Henning Klevjer
2012-11-21 13:38:07 UTC
view on stackexchange narkive permalink

Questo è chiamato il principio TOCTOU (Time of Check / Time of Use), il che significa che la garanzia di autenticazione dell'identità dell'utente (cioè l'utente è ancora lo stesso utente che si è autenticato al sistema) è troppo basso per consentirgli di eseguire alcune azioni, come cambiare la password o ridefinire l'identità.

Per assicurarsi che il livello di garanzia dell'autenticazione sia il più alto possibile quando vengono eseguite azioni critiche, il "delta TOCTOU", il tempo tra il controllo delle credenziali e l'utilizzo dei loro privilegi, deve essere il più breve possibile prevenire i problemi affrontati da DW

Per me, questo è un ovvio esempio di un compromesso regolabile tra sicurezza e usabilità.

Stéphane Chazelas
2012-11-22 03:04:45 UTC
view on stackexchange narkive permalink

Un altro motivo secondario per cui potrebbe essere necessaria la vecchia password è quando le password sono sottoposte ad hashing e se vuoi controllare che la nuova password non sia troppo simile a quella vecchia, devi chiedere all'utente, poiché non puoi altrimenti ottenere tali informazioni dalla password con hash.

Bristol
2012-11-21 16:55:48 UTC
view on stackexchange narkive permalink

Come le risposte precedenti hanno suggerito, si tratta di limitare i danni.

Un altro esempio potrebbe essere se la funzione di reimpostazione della password fosse implementata come una chiamata a http: //www.example. com / changepassword.php? newpassword = monkey quindi potrei creare un collegamento del genere, nasconderlo come un tinyurl o qualcosa del genere e inviare a qualcuno che volevo hackerare tale collegamento, e se lo cliccano mentre sono loggati allora io li ho bloccati fuori dal loro account e ne ho preso il controllo.

Questo è chiamato [Cross-Site Request Forgery (CSRF)] (http://en.wikipedia.org/wiki/Cross-site_request_forgery).
@Polynomial, Ed è spaventosamente sfruttabile per qualsiasi cosa anche nelle principali applicazioni web.
dany
2012-11-25 10:06:43 UTC
view on stackexchange narkive permalink

Se l'applicazione non utilizza il token CSRF (cross site request forgery), la password può essere facilmente aggiornata dall'attaccante semplicemente inviando un collegamento. Inoltre, sarà molto utile se un utente accede alla nostra sessione, quindi non sarà in grado di aggiornare la password.

saaj
2019-08-23 18:04:38 UTC
view on stackexchange narkive permalink

Stavo cercando uno standard, una linea guida o almeno un termine riconosciuto per la "conferma dell'azione sensibile". Quello che ho trovato è Cheat sheet sull'autenticazione OWASP e la sezione Richiedi nuova autenticazione per funzionalità sensibili. In sintesi, la superficie di attacco è simile a:

  • CSRF
  • XSS
  • dirottamento della sessione compreso l'accesso fisico temporaneo al browser di un utente

Per funzionalità sensibili la richiesta di credenziali correnti per un account (leggere la password corrente nella maggior parte dei casi) mitiga il rischio degli attacchi di cui sopra.

Alcuni prodotti e servizi (vedere di seguito) consentono di definire risorse sensibili e richiedono una nuova autenticazione o un incremento (l'utente deve fornire un fattore di autenticazione aggiuntivo).

Si noti inoltre che l'applicazione a livello di UI non è consigliato. Qui Auth0 ha un esempio di come emettere un token dedicato per una particolare risorsa sensibile con la loro libreria client.

Riferimento:



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...