Benutzeraufzählung
Zwei verschiedene Fehler verraten einem Angreifer, welche E-Mails echt sind.
Was ist Benutzeraufzählung?
Bei der Benutzeraufzählung bestätigt Ihre Anwendung, welche Adressen über Konten verfügen. Es braucht einen beobachtbaren Unterschied: eine andere Fehlerzeichenfolge, einen anderen Statuscode, eine langsamere Antwort. Sie senden zwei Anmeldetests und erhalten „Kein Konto gefunden“ für „Falsches Passwort“ sowie eine Latenzlücke, da bcrypt nur ausgeführt wird, wenn ein Hash zum Vergleich vorhanden ist. Der Fix gibt einen allgemeinen Fehler zurück und führt den Vergleich immer mit einem festen Dummy-Hash durch, wenn kein Benutzer vorhanden ist. Die Anmeldung und das Zurücksetzen des Passworts geben die gleiche Antwort.
Was Sie lernen in Benutzeraufzählung
- Erkennen, dass jeder Unterschied zwischen den Codepfaden für registrierte und nicht registrierte Benutzer (Antworttext, Statuscode, Latenz, Seiteneffekt) ein Enumeration-Orakel ist
- Die Korrektur mit einheitlichem Fehler bei der Anmeldung anwenden und sicherstellen, dass der Pfad ohne Benutzerkonto denselben bcrypt-Aufwand ausführt wie der Pfad mit vorhandenem Benutzerkonto
- Verstehen, dass Timing ein zweiter Enumeration-Kanal ist, der die Korrektur des Antworttexts übersteht und mit einem konstantzeitlichen Ersatzmechanismus geschlossen werden muss
- Registrierungs- und Passwortzurücksetzungsendpunkte auf dasselbe Muster prüfen, da beide in ihren normalen Antworten häufig zwischen registrierten und nicht registrierten Benutzern unterscheiden
- Enumeration mit Credential Stuffing verknüpfen: Das Filtern der Kandidatenliste auf registrierte E-Mail-Adressen verwandelt einen auffälligen Spray-Angriff in eine unauffällige Kampagne, die Ratenlimits umgeht
Benutzeraufzählung — Trainingsschritte
-
Eine Liste, die gefiltert werden muss
Bob verfügt über einen Datensatz mit E-Mail- und Passwortpaaren aus einer anderen Sicherheitsverletzung. Die meisten dieser Personen kennen Larksong nicht, daher wäre es langsam und auffällig, die gesamte Liste auf der Anmeldeseite auszuprobieren. Zunächst will er wissen, welche dieser E-Mail-Adressen tatsächlich zu Larksong-Konten gehören. Er öffnet die Larksong-Anmeldeseite im Browser und hält die DevTools bereit, um die Reaktion auf eine fehlgeschlagene Anmeldung zu beobachten.
-
Nicht registrierte E-Mail testen
Bob beginnt mit einem Ausgangswert. Er meldet sich mit einer Adresse an, die fast sicher zu keinem Larksong-Konto gehört, und einem Wegwerfpasswort. Anschließend beobachtet er die Antwort im Netzwerkbereich.
-
Die Ausgangsantwort
Das Formular zeigt einen Anmeldefehler; die entscheidenden Details stehen jedoch im Netzwerkbereich: eine 401-Antwort mit Antworttext und Antwortzeit. So sieht eine fehlgeschlagene Anmeldung mit einer nicht registrierten E-Mail-Adresse aus. Bob hält dies als Ausgangswert fest.
-
Eine vermutlich echte E-Mail testen
Nun versucht Bob es erneut mit einer Adresse aus seinem Datensatz, die seiner Ansicht nach zu einem echten Larksong-Konto gehört: marcus.delgado@gmail.com. Das Wegwerfpasswort behält er bei. Behandelt der Endpunkt beide Fälle gleich, entspricht die Antwort dem Ausgangswert. Falls nicht, ist genau dieser Unterschied der Gewinn.
-
Eine andere Antwort
Die Antwort hat sich geändert. Das falsche Passwort ist dasselbe, aber der Antworttext ist anders. Bob hat sich nie angemeldet, dennoch hat ihm der Anmeldeendpunkt gerade verraten, dass diese E-Mail-Adresse zu einem echten Larksong-Konto gehört.
-
Antwortzeiten prüfen
Die Formulierung ist ein Hinweis. Der Netzwerkbereich enthält einen zweiten, unauffälligeren: die Dauer jeder Anfrage.
-
Wissenscheck
Bevor Bob dies in großem Umfang ausführt, klären Sie genau, warum das echte Konto deutlich langsamer war.
-
Die Liste auswerten
Bob richtet ein Skript auf den Anmeldeendpunkt und übergibt ihm jede E-Mail-Adresse aus seinem Datensatz, jeweils mit einer Anfrage. Lautet die langsame Antwort Incorrect password , nimmt er die Adresse in seine bestätigte Liste auf. Von 50.000 Kandidaten gehören 8.400 zu echten Larksong-Konten. Der anschließende Credential-Stuffing-Angriff richtet sich nun nur gegen Adressen, von denen Bob weiß, dass sie existieren. So bleibt er klein, unauffällig und deutlich unter den Ratenlimits, die einen ungezielten Spray-Angriff erkennen würden.
-
Die Sicherheitswarnung
Sie verantworten den Anmeldedienst von Larksong. Über Nacht hat die Erkennung ein auffälliges Muster am Anmeldeendpunkt festgestellt und Ihnen den Befund per E-Mail gesendet. Lesen Sie den Befund und öffnen Sie anschließend den Code.
-
Den Anmelde-Handler öffnen
Die Anmelderoute befindet sich im Authentifizierungsdienst. Öffnen Sie den Handler und prüfen Sie, wie er bei einer fehlgeschlagenen Anmeldung über die zurückzugebende Antwort entscheidet.
Abdeckung der Sicherheits-Frameworks
OWASP Top 10
- A07:2025 Authentication Failures
- A07:2021 Identification and Authentication Failures
CWE
- CWE-204 Observable Response Discrepancy
- CWE-208 Observable Timing Discrepancy
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security