Qu'entraîne l'activation du paramètre Empêcher les erreurs liées à l'existence de l'utilisateur dans Amazon Cognito ?

Lecture de 7 minute(s)
0

Je souhaite en savoir plus sur le paramètre Empêcher les erreurs liées à l'existence des utilisateurs dans Amazon Cognito.

Brève description

L'énumération des utilisateurs est une vulnérabilité d'application Web dans laquelle un acteur malveillant utilise la force brute pour deviner ou confirmer l'existence d'utilisateurs valides dans un système. Amazon Cognito fournit une fonctionnalité de sécurité qui empêche les acteurs malveillants de trouver des utilisateurs valides au sein d'un groupe d'utilisateurs Amazon Cognito. Cette fonctionnalité de sécurité est disponible pour les zones les plus fréquemment visées par une attaque par énumération :

  • Authentification de l'utilisateur
  • Confirmation de l'utilisateur
  • Récupération du mot de passe
  • Inscription de l'utilisateur

Résolution

Authentification de l'utilisateur

Lorsque le nom d'utilisateur et le mot de passe d'un utilisateur inexistant sont saisis, Amazon Cognito répond par une exception nommée UserNotFoundException. Cette erreur d'existence de l'utilisateur indique explicitement que le nom d'utilisateur saisi n'existe pas. Suite à cette réponse, des acteurs malveillants peuvent utiliser la force brute pour lancer une attaque visant à deviner les utilisateurs valides dans votre groupe d'utilisateurs.

Activez le paramètre Empêcher les erreurs liées à l'existence de l'utilisateur afin que votre client d'application Amazon Cognito renvoie un message générique en cas de demandes de connexion concernant un utilisateur qui n'existe pas. Le message générique indique que le nom d'utilisateur ou le mot de passe est incorrect. Le paramètre Empêcher les erreurs liées à l'existence de l'utilisateur permet de se prémunir contre les attaques visant à deviner les informations d'identification, puisque le message d'erreur ne révèle pas l'existence de l'utilisateur.

Exemple de réponse lors de tentatives de connexion concernant un utilisateur inexistant

Voici des exemples de réponses lors de tentatives de connexion concernant un utilisateur inexistant.

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

Avec le paramètre Empêcher les erreurs liées à l'existence de l'utilisateur est désactivé : « Une erreur s'est produite (UserNotFoundException) lors de l'appel de l'opération InitiateAuth : l'utilisateur n'existe pas. »

Avec le paramètreEmpêcher les erreurs liées à l'existence de l'utilisateur activé : « Une erreur s'est produite (NotAuthorizedException) lors de l'appel de l'opération InitiateAuth : nom d'utilisateur ou mot de passe incorrect. »

Confirmation de l'utilisateur

Lorsque le paramètre Empêcher les erreurs liées à l'existence de l'utilisateur est activé et qu'un utilisateur est désactivé ou introuvable, Amazon Cognito renvoie les CodeDeliveryDetails. Les détails de la transmission du code sont renvoyés aux utilisateurs via un support de transmission simulé au lieu de renvoyer l'exception nommée UserNotFoundException. Lorsqu'un utilisateur existe au sein du groupe d'utilisateurs, Amazon Cognito envoie un code de confirmation à l'adresse e-mail ou au numéro de téléphone existant(e) de l'utilisateur. Le support de transmission simulé est déterminé par le format de saisie du nom d'utilisateur et les paramètres de vérification du groupe d'utilisateurs.

Exemple de réponse lors du renvoi d'un code de confirmation concernant un utilisateur inexistant

Voici des exemples de réponses lors du renvoi d'un code de confirmation concernant un utilisateur inexistant dans un groupe d'utilisateurs :

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

Avec le paramètre Empêcher les erreurs liées à l'existence de l'utilisateur désactivé : « Une erreur s'est produite (UserNotFoundException) lors de l'appel de l'opération ResendConfirmationCode : la combinaison nom d'utilisateur/id client est introuvable. »

Avec le paramètre Empêcher les erreurs liées à l'existence de l'utilisateur activé, avec une adresse e-mail aléatoire et un support de transmission simulé :

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

Récupération du mot de passe

Lorsque le paramètre Empêcher les erreurs liées à l'existence de l'utilisateur est activé et qu'un utilisateur est désactivé, est introuvable ou ne peut pas récupérer son mot de passe, Amazon Cognito renvoie les CodeDeliveryDetails. Les détails de la transmission du code fournissent un support de transmission simulé à l'utilisateur au lieu de renvoyer l'exception nommée UserNotFoundException. Le support de transmission simulé est déterminé par le format de saisie du nom d'utilisateur et les paramètres de récupération du groupe d'utilisateurs.

Avec les détails de récupération du code, vous pouvez constater que le code de récupération est envoyé à une adresse e-mail ou à un numéro de téléphone simulé(e) aléatoire. Ce support de transmission simulé complique la tâche de l'attaquant, qui ne parvient pas à distinguer les utilisateurs valides de ceux non valides.

Amazon Cognito renvoie les CodeDeliveryDetails avec un support de transmission simulé dans le flux de réinitialisation du mot de passe. Cependant, les codes de réinitialisation du mot de passe ne sont pas réellement envoyés au support de transmission simulé. Il s'agit d'une mesure de sécurité visant à éviter le spam d'adresses e-mail et de numéros de téléphone non vérifiés.

Exemple de réponse d'erreur lors de la récupération du mot de passe d'un utilisateur inexistant

Voici des exemples de réponses lors de la récupération de mots de passe d'utilisateurs qui n'existent pas dans le groupe d'utilisateurs :

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

Avec le paramètre Empêcher les erreurs liées à l'existence de l'utilisateur désactivé : « Une erreur s'est produite (UserNotFoundException) lors de l'appel de l'opération ForgotPassword : la combinaison nom d'utilisateur/id client est introuvable. »

Avec le paramètre Empêcher les erreurs liées à l'existence de l'utilisateur est activé, avec un numéro de téléphone est aléatoire et un support de transmission simulé :

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

Inscription de l'utilisateur

L'opération SignUp renvoie UsernameExistsException lorsqu'un nom d'utilisateur est déjà utilisé. Pour éviter l'erreur UsernameExistsException associée à une adresse e-mail ou à un numéro de téléphone lors de l'inscription, utilisez des alias basés sur la vérification.

Un enregistrement aboutit lorsqu'une adresse e-mail ou un numéro de téléphone est fourni(e) sous forme d'alias à partir d'un autre compte déjà utilisé. Lorsqu'un utilisateur tente de confirmer un compte à l'aide de cette adresse e-mail ou de ce numéro de téléphone et d'un code de vérification valide, l'erreur AliasExistsException est renvoyée. L'erreur indique à l'utilisateur qu'il existe un compte associé à cette adresse e-mail ou à ce numéro de téléphone.

Puisque l'erreur d'existence de l'utilisateur n'est révélée qu'après la saisie d'un code valide, ce processus élimine le risque potentiel d'identification d'utilisateurs valides par des acteurs malveillants. Pour en savoir plus sur les alias basés sur la vérification, consultez la section User pool attributes (Attributs du groupe d'utilisateurs) et cliquez sur l'onglet Customizing sign-in attributes (Personnalisation des attributs de connexion).

Comment modifier le paramètre Empêcher les erreurs liées à l'existence de l'utilisateur dans Amazon Cognito ?

Pour modifier le paramètre Empêcher les erreurs liées à l'existence de l'utilisateur, procédez comme suit :

  1. Connectez-vous à la console Amazon Cognito.
  2. Sélectionnez un groupe d'utilisateurs existant dans la liste.
  3. Sélectionnez la section App integration (Intégration de l'application).
  4. Sous App clients (Clients d'applications), sélectionnez un client d'application dans la liste.
  5. Dans la section App client information (Informations sur le client d'application), cliquez sur le bouton Edit (Modifier).
  6. Faites défiler l'écran vers le bas pour trouver le paramètre Prevent user existence errors (Empêcher les erreurs liées à l'existence de l'utilisateur) sous Advanced security configurations (Configurations de sécurité avancées). Sélectionnez ou désactivez cette option.
  7. Enregistrez vos modifications.

Pour plus d'informations sur les réponses d'erreurs, reportez-vous à la Gestion des réponses d'erreurs.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an