Welche Auswirkungen hat die Aktivierung der Einstellung „Prevent User Existence Errors“ in Amazon Cognito?

Lesedauer: 5 Minute
0

Ich möchte mehr über die Einstellung „Prevent User Existence Errors“ in Amazon Cognito erfahren.

Kurzbeschreibung

Die Benutzeraufzählung ist eine Sicherheitslücke in Webanwendungen, bei der ein böswilliger Akteur Brute-Force-Techniken einsetzt, um gültige Benutzer in einem System zu erraten oder zu bestätigen. Amazon Cognito bietet eine Sicherheitsfunktion, um böswillige Akteure daran zu hindern, gültige Benutzer in einem Amazon-Cognito-Benutzerpool zu finden. Diese Sicherheitsfunktion ist für die geläufigsten Bereiche verfügbar, in denen die Benutzeraufzählung erfolgt:

  • Benutzerauthentifizierung
  • Benutzerbestätigung
  • Passwortwiederherstellung
  • Benutzerregistrierung

Auflösung

Benutzerauthentifizierung

Wenn der Benutzername und das Passwort eines nicht existierenden Benutzers eingegeben werden, reagiert Amazon Cognito mit einer Ausnahme namens UserNotFoundException. Dieser Benutzer-Existenzfehler besagt ausdrücklich, dass der eingegebene Benutzername nicht existiert. Basierend auf dieser Fehlerreaktion können böswillige Akteure einen Brute-Force-Angriff durchführen, um gültige Benutzer in Ihrem Benutzerpool zu erraten.

Aktivieren Sie die Einstellung Prevent User Existence Errors, damit Ihr Amazon-Cognito-App-Client eine generische Meldung für Anmeldeanfragen nicht existierender Benutzer ausgibt. Die generische Meldung besagt, dass der Benutzername oder das Passwort falsch sind. Die Einstellung Prevent User Existence Errors schützt vor Angriffen, bei denen die Anmeldeinformationen erraten werden, da die Fehlermeldung die Existenz des Benutzers nicht verrät.

Beispiel für eine Fehlerreaktion auf Anmeldeanfragen nicht existierender Benutzer

Im Folgenden finden Sie Beispiele für Fehlerreaktionen auf Anmeldeanfragen nicht existierender Benutzer.

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

Bei deaktivierter Einstellung Prevent User Existence Errors: „Beim Aufrufen des InitiateAuth-Vorgangs ist ein Fehler aufgetreten (UserNotFoundException): Der Benutzer ist nicht vorhanden.“

Bei aktivierter Einstellung Prevent User Existence Errors: „Beim Aufrufen des InitiateAuth-Vorgangs ist ein Fehler aufgetreten (NotAuthorizedException): Falscher Benutzername oder falsches Passwort.“

Benutzerbestätigung

Wenn die Einstellung Prevent User Existence Errors aktiviert ist und ein Benutzer deaktiviert ist oder nicht gefunden wird, gibt Amazon Cognito CodeDeliveryDetails zurück. Die Details zur Codeübermittlung werden an Benutzer mit einem simulierten Übermittlungsmedium zurückgegeben, anstatt die Ausnahme mit dem Namen UserNotFoundException zurückzugeben. Wenn ein Benutzer im Benutzerpool vorhanden ist, sendet Amazon Cognito einen Bestätigungscode an die bestehende E-Mail-Adresse oder Telefonnummer des Benutzers. Das simulierte Übertragungsmedium wird durch das Eingabeformat des Benutzernamens und die Überprüfungseinstellungen des Benutzerpools bestimmt.

Beispiel für eine Fehlerreaktion auf einen nicht existierenden Benutzer, der den Bestätigungscode erneut sendet

Im Folgenden finden Sie Beispiele für Fehlerreaktionen für das erneute Senden eines Bestätigungscodes an einen nicht existierenden Benutzer in einem Benutzerpool:

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

Bei deaktivierter Einstellung Prevent User Existence Errors: „Beim Aufrufen des ResendConfirmationCode-Vorgangs ist ein Fehler aufgetreten (UserNotFoundException): Die Kombination aus Benutzername/Client-ID wurde nicht gefunden.“

Bei aktivierter Einstellung Prevent User Existence Errors, bei der die E-Mail-Adresse zufällig ist und das Übertragungsmedium simuliert wird:

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

Passwortwiederherstellung

Wenn die Einstellung Prevent User Existence Errors aktiviert ist und ein Benutzer deaktiviert ist, nicht gefunden wird oder Passwörter nicht wiederherstellen kann, gibt Amazon Cognito CodeDeliveryDetails zurück. Die Codeübermittlungsdetails bieten einem Benutzer ein simuliertes Übermittlungsmedium, anstatt die Ausnahme mit dem Namen UserNotFoundException zurückzugeben. Das simulierte Übertragungsmedium wird durch das Eingabeformat des Benutzernamens und die Wiederherstellungseinstellungen des Benutzerpools bestimmt.

Anhand der Code-Wiederherstellungsdetails können Sie sehen, dass der Wiederherstellungscode an eine zufällige simulierte E-Mail-Adresse oder Telefonnummer gesendet wird. Dieses simulierte Übertragungsmedium erschwert es dem Angreifer, zwischen gültigen und ungültigen Benutzern zu unterscheiden.

Amazon Cognito gibt CodeDeliveryDetails mit einem simulierten Übertragungsmedium im Ablauf des Zurücksetzens des Passworts zurück. Die Codes zum Zurücksetzen des Passworts werden jedoch nicht wirklich an das simulierte Übertragungsmedium gesendet. Dies ist eine Sicherheitsmaßnahme, um zu verhindern, dass unverifizierte E-Mail-Adressen und Telefonnummern als Spam versendet werden.

Beispiel für eine Fehlerreaktion für die Wiederherstellung eines Benutzerpassworts, das nicht existiert

Im Folgenden finden Sie Beispiele für Fehlerreaktionen auf die Passwortwiederherstellung für Benutzer, die nicht im Benutzerpool existieren:

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

Bei deaktivierter Einstellung Prevent User Existence Errors: „Beim Aufrufen des Vorgangs ForgotPassword ist ein Fehler aufgetreten (UserNotFoundException): Kombination aus Benutzername/Client-ID wurde nicht gefunden.“

Bei aktivierter Einstellung Prevent User Existence Errors, bei der die Telefonnummer zufällig ist und das Übertragungsmedium simuliert wird:

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

Benutzerregistrierung

Der SignUp-Vorgang gibt UsernameExistsException zurück, wenn ein Benutzername bereits verwendet wird. Um den UsernameExistsException-Fehler für eine E-Mail-Adresse oder Telefonnummer bei der Registrierung zu verhindern, verwenden Sie verifizierungsbasierte Aliasnamen.

Eine Registrierung ist erfolgreich, wenn eine E-Mail-Adresse oder Telefonnummer als Alias von einem anderen Konto angegeben wird, das bereits verwendet wird. Wenn ein Benutzer versucht, ein Konto mit dieser E-Mail-Adresse oder Telefonnummer und einem gültigen Bestätigungscode zu bestätigen, wird der AliasExistsException-Fehler zurückgegeben. Der Fehler weist den Benutzer darauf hin, dass ein Konto mit dieser E-Mail-Adresse oder Telefonnummer existiert.

Da der Existenzfehler des Benutzers erst nach Eingabe eines gültigen Codes aufgedeckt wird, wird durch diesen Vorgang das potenzielle Risiko ausgeschlossen, dass böswillige Akteure gültige Benutzer identifizieren. Weitere Informationen zu verifizierungsbasierten Aliasnamen finden Sie unter Benutzerpool-Attribute, und wählen Sie die Registerkarte Anmeldeattribute anpassen aus.

Wie ändere ich die Einstellung „Prevent User Existence Errors“ in Amazon Cognito?

Gehen Sie wie folgt vor, um die Einstellung „Prevent User Existence Errors“ zu ändern:

  1. Melden Sie sich bei der Amazon-Cognito-Konsole an.
  2. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.
  3. Wählen Sie den Abschnitt App-Integration.
  4. Wählen Sie unter App-Clients einen App-Client aus der Liste aus.
  5. Wählen Sie im Abschnitt App-Client-Informationen die Schaltfläche Bearbeiten.
  6. Scrollen Sie nach unten, um die Einstellung „Prevent User Existence Errors“ unter Erweiterte Sicherheitskonfigurationenzu finden. Wählen oder deaktivieren Sie diese Option.
  7. Speichern Sie Ihre Änderungen.

Weitere Informationen zu Fehlerreaktionen finden Sie unter Fehlerreaktionen verwalten.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr