Quali sono gli effetti dell'attivazione dell'impostazione Previeni errori di esistenza dell'utente in Amazon Cognito?

6 minuti di lettura
0

Desidero avere ulteriori informazioni sull'impostazione Previeni errori di esistenza dell'utente utenti in Amazon Cognito.

Breve descrizione

L'enumerazione degli utenti è una vulnerabilità delle applicazioni web in cui un malintenzionato utilizza tecniche di forza bruta per indovinare o confermare gli utenti validi in un sistema. Amazon Cognito fornisce una funzionalità di sicurezza per impedire ai malintenzionati di trovare utenti validi all'interno di un pool di utenti di Amazon Cognito. Questa funzionalità di sicurezza è disponibile per le aree in cui si verifica più di frequente l'enumerazione degli utenti:

  • Autenticazione dell'utente
  • Conferma dell'utente
  • Recupero della password
  • Registrazione dell'utente

Risoluzione

Autenticazione dell'utente

Quando vengono inseriti il nome utente e la password di un utente inesistente, Amazon Cognito risponde con un'eccezione denominata UserNotFoundException. Questo errore di esistenza utente indica esplicitamente che il nome utente inserito non esiste. In seguito a questa risposta di errore, i malintenzionati possono eseguire un attacco di forza bruta per indovinare gli utenti validi nel pool di utenti.

Attiva l'impostazione Previeni errori di esistenza dell'utente in modo che il client dell'app Amazon Cognito restituisca un messaggio generico per le richieste di accesso degli utenti inesistenti. Il messaggio generico indica che il nome utente o la password non sono corretti. L'impostazione Previeni errori di esistenza dell'utente aiuta a proteggersi dagli attacchi che tentano di indovinare le credenziali, dal momento che l'esistenza dell'utente non viene rivelata dal messaggio di errore.

Esempio di risposta di errore per tentativi di accesso di utenti inesistenti

Di seguito sono riportati esempi di risposte di errore per tentativi di accesso di utenti inesistenti.

$ aws cognito-idp initiate-auth --client-id 12ab34cd56ef78gh91ij23kl45m --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME="myuser",PASSWORD="password"

Con l'impostazione Previeni errori di esistenza dell'utente disattivata: An error occurred (UserNotFoundException) when calling the InitiateAuth operation: User does not exist." ["Si è verificato un errore (UserNotFoundException) durante la chiamata dell'operazione InitiateAuth: utente inesistente."]

Con l'impostazione Previeni errori di esistenza dell'utente attivata: "An error occurred (NotAuthorizedException) when calling the InitiateAuth operation: Incorrect username or password." ["Si è verificato un errore (NotAuthorizedException) durante la chiamata all'operazione InitiateAuth: nome utente o password errati."]

Conferma dell'utente

Quando l'impostazione Previeni errori di esistenza dell'utente è attivata e un utente viene disattivato o non viene trovato, Amazon Cognito restituisce CodeDeliveryDetails. I dettagli di consegna del codice vengono restituiti agli utenti con un supporto di consegna simulato anziché restituire l'eccezione denominata UserNotFoundException. Quando un utente è presente nel pool di utenti, Amazon Cognito invia un codice di conferma all'indirizzo email o al numero di telefono esistente dell'utente. Il supporto di consegna simulato è determinato dal formato di input del nome utente e dalle impostazioni di verifica del pool di utenti.

Esempio di risposta di errore per utente inesistente che invia nuovamente il codice di conferma

Di seguito sono riportati esempi di risposte di errore per il rinvio di un codice di conferma a un utente inesistente in un pool di utenti:

$ aws cognito-idp resend-confirmation-code --client-id 12ab34cd56ef78gh91ij23kl45m --username "myuser"

Con l'impostazione Previeni errori di esistenza dell'utente disattivata: "An error occurred (UserNotFoundException) when calling the ResendConfirmationCode operation: Username/client id combination not found." ["Si è verificato un errore (UserNotFoundException) durante la chiamata all'operazione ResendConfirmationCode: combinazione nome utente/ID client non trovata."]

Con l'impostazione Previeni errori di esistenza dell'utente attivata, in cui l'indirizzo e-mail è casuale e il supporto di consegna viene simulato:

{
  "CodeDeliveryDetails": {
    "Destination": "n****@g****.com",
    "DeliveryMedium": "Email",
    "AttributeName": "email"
  }
}

Recupero della password

Quando l'impostazione Previeni errori di esistenza dell'utente è attivata e un utente è disattivato, non viene trovato o non riesce a recuperare le password, Amazon Cognito restituisce CodeDeliveryDetails. I dettagli di consegna del codice forniscono un supporto di consegna simulato per un utente invece di restituire l'eccezione denominata UserNotFoundException. Il supporto di consegna simulato è determinato dal formato di input del nome utente e dalle impostazioni di ripristino del pool di utenti.

Con i dettagli di recupero del codice, è possibile vedere che il codice di ripristino viene inviato a un indirizzo email o a un numero di telefono simulato in modo casuale. Questo supporto di consegna simulato rende difficile per l'utente malintenzionato distinguere tra utenti validi e non validi.

Amazon Cognito restituisce CodeDeliveryDetails con un supporto di consegna simulato nel flusso di reimpostazione della password. Tuttavia, i codici di reimpostazione della password non vengono effettivamente inviati al supporto di consegna simulato. Si tratta di una misura di sicurezza per evitare lo spamming di indirizzi email e numeri di telefono non verificati.

Esempio di risposta di errore per il recupero della password di un utente inesistente

Di seguito sono riportati esempi di risposte di errore per il recupero della password di utenti inesistenti nel pool di utenti:

$ aws cognito-idp forgot-password --client-id 12ab34cd56ef78gh91ij23kl45m --username "myuser"

Con l'impostazione Previeni errori di esistenza dell'utente disattivata: An error occurred (UserNotFoundException) when calling the ForgotPassword operation: Username/client id combination not found." ["Si è verificato un errore (UserNotFoundException) durante la chiamata dell'operazione ForgotPassword: combinazione nome utente/ID client non trovata."]

Con l'impostazione Previeni errori di esistenza dell'utente attivata, in cui il numero di telefono è casuale e il supporto di consegna viene simulato:

{
  "CodeDeliveryDetails": {
    "Destination": "+*******0874",
    "DeliveryMedium": "SMS",
    "AttributeName": "phone_number"
  }
}

Registrazione dell'utente

L'operazione SignUp restituisce UsernameExistsException quando un nome utente è già in uso. Per prevenire l'errore UsernameExistsException per un indirizzo email o un numero di telefono durante la registrazione, utilizza alias basati sulla verifica.

Una registrazione ha esito positivo quando un indirizzo email o un numero di telefono viene fornito come alias da un altro account già in uso. Quando un utente tenta di confermare un account con questo indirizzo email o numero di telefono e un codice di verifica valido, viene restituito l'errore AliasExistsException. L'errore indica all'utente che esiste già un account con questo indirizzo email o numero di telefono.

Poiché l'errore di esistenza dell'utente viene rivelato solo dopo aver inserito un codice valido, questo processo elimina il rischio che eventuali malintenzionati identifichino gli utenti validi. Per ulteriori informazioni sugli alias basati sulla verifica, consulta User pool attributes (Attributi del pool di utenti) e seleziona la scheda Customizing sign-in attributes (Personalizzazione degli attributi di accesso).

Come posso modificare l'impostazione Previeni errori di esistenza dell'utente in Amazon Cognito?

Per modificare l'impostazione Previeni errori di esistenza dell'utente, segui i seguenti passaggi:

  1. Accedi alla console Amazon Cognito.
  2. Seleziona un pool di utenti esistente dall'elenco.
  3. Scegli la sezione App integration (Integrazione delle app).
  4. In App clients (Client dell'app), seleziona un client dell'app dall'elenco.
  5. Nella sezione App client information (informazioni sul client dell'app), scegli il pulsante Edit (Modifica).
  6. Scorri verso il basso per trovare l'impostazione Prevent user existence errors setting (Previeni errori di esistenza dell'utente) in Advanced secutiry configurations (Configurazioni di sicurezza avanzate). Seleziona o deseleziona questa opzione.
  7. Salva le modifiche.

Per ulteriori informazioni sulle risposte agli errori, consulta Managing error responses (Gestione delle risposte di errore).


AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa