Kürzlich haben unsere Experten von Kaspersky Blockchain Security beim Testen einer Blockchain-Plattform auf Schwachstellen festgestellt, dass der Passwortwiederherstellungsprozess der Plattform durch einen Benutzer-Enumerationsangriff anfällig war. Webentwickler müssen sich dieser Art von Angriff und seiner Gefahren bewusst werden.
Was ist ein Enumerationsangriff?
Webanwendungen mit Kennwort- und Anmeldeauthentifizierung enthalten normalerweise mehrere Komponenten, die mit der Benutzerdatenbank interagieren: das Anmeldefenster (aus offensichtlichen Gründen), das Registrierungsformular (um doppelte Benutzernamen zu vermeiden) und die Seite zur Passwortzurücksetzung (um sicherzustellen, dass das entsprechende Konto existiert). Wenn Webentwickler diese Funktionen nicht sicher genug implementieren, können Angreifer sie möglicherweise verwenden, um festzustellen, ob ein bestimmter Benutzername in der Datenbank vorhanden ist.
In der Vergangenheit war es üblich, dass Entwickler all diese Funktionen ohne Schutz implementierten, und Angreifer konnten eine Liste von Benutzernamen und ein Programm verwenden, das die Benutzernamen einzeln nacheinander eingab. Um potenzielle Hacker fernzuhalten, begannen die Entwickler im Laufe der Zeit, Schutztricks wie Captcha, Begrenzung der Anzahl der Anmeldeversuche und die Verwendung von Sternchen oder anderen Mitteln anzuwenden, um bestimmte Antwortdetails zu verbergen.
In modernen Webanwendungen bietet das Anmeldefenster normalerweise diesen Schutz. Bei Registrierungsformularen und bei Passwörtzurücksetzungseiten fehlt es jedoch manchmal. Darüber hinaus berücksichtigen Webentwickler nicht immer, dass die Anwesenheit oder Abwesenheit eines Benutzers in der Datenbank durch die Schnelligkeit der Serverantwort bestimmt werden kann. Wenn der Benutzername beispielsweise in der Datenbank angezeigt wird, dauert die Antwort des Servers 2 Millisekunden. Wenn nicht, dauert die Antwort doppelt so lange – 4 Millisekunden. Für einen Menschen ist der Unterschied nicht erkennbar, aber für automatisierte Enumerationstools ist er leicht zu erkennen.
Die Gefahren eines Enumerationsangriffs
Bei einem Enumerationsangriff kann ein Hacker überprüfen, ob ein Nutzername in der Datenbank vorhanden ist. Dadurch kann sich der Hacker nicht sofort anmelden, aber er erhält die Hälfte der erforderlichen Informationen. Um beispielsweise einen Brute-Force-Angriff auszuführen, anstatt Anmelde- und Kennwortpaare zu durchsuchen, benötigt man lediglich ein passendes Kennwort für einen verifizierten Benutzernamen, was Zeit und Mühe spart.
Außerdem nutzt fast jeder Dienst E-Mail-Adressen als Benutzernamen. Daher hat der durchschnittliche Benutzer ein Login für viele Websites, und nicht alle Websites nehmen die Sicherheit gleich ernst. Nachrichten über Datenleaks von Login und Passwörtern sind bedrückend häufig. Konsolidierte Sammlungen von Daten aus diesen Lecks sind in Hackerforen verfügbar. Außerdem verwenden Benutzer in der Regel dieselben Kennwörter auf verschiedenen Websites. Nachdem ein Angreifer sichergestellt hat, dass auf einer Website ein spezifischer Benutzername vorhanden ist, kann er auf eine solche Sammlung zurückgreifen, um festzustellen, ob auf anderen Websites Kennwörter für denselben Benutzer vorhanden sind, um sie dann zu verwenden.
Darüber hinaus setzen Spear-Phishing-Angreifer während der Spähphase häufig Enumerationsangriffe ein. Nachdem sie festgestellt haben, dass ihr Zielobjekt über ein Konto bei Ihrem Dienst verfügt, können sie eine E-Mail senden, die anscheinend von Ihnen stammt, den Benutzer auffordern, sein Kennwort zu ändern, und auf eine Phishing-Seite verlinken, die Ihrer Website ähnelt. Wenn der ahnungslose Kunde ein neues Passwort eingibt, muss er auch das alte bestätigen und damit den Betrügern alles zur Verfügung stellen, was sie brauchen.
So schützen Sie sich vor einem Enumerationsangriff
Haben Sie jemals bemerkt, wie moderne Websites auf die Übermittlung eines Formulars zum Zurücksetzen von Passwörtern reagieren? Sie sagen nämlich nicht: „Ein Link zum Zurücksetzen Ihres Passworts wurde an Sie gesendet“ oder „Die angegebene E-Mail-Adresse befindet sich nicht in unserer Datenbank“, wie es Websites gewohnt sind. Stattdessen nutzen sie: „Wenn diese E-Mail in unserer Datenbank vorhanden ist, senden wir Ihnen eine Nachricht mit einem Link.“ Mit anderen Worten, Websites bestätigen oder leugnen die Existenz des Benutzernamens nicht ausdrücklich. Sie haben die Änderung speziell zum Schutz vor Benutzernamen-Enumerationsangriffe vorgenommen.
Ebenso müssen Sie im Anmeldefenster nicht detailliert erklären, dass der Benutzer ein falsches Kennwort eingegeben hat oder dass kein solcher Benutzername im System vorhanden ist. Sagen Sie einfach, dass die Login / Passwort-Kombination nicht gefunden wurde. Unter UX-Gesichtspunkten ist es nicht ideal. Zum einen ärgere ich mich, wenn ich vergesse, welche E-Mail ich für die Registrierung verwendet habe, aber ich bin mir ziemlich sicher über das Passwort oder umgekehrt, aber die Website gibt mir keine Ahnung, in welchem Feld Ich habe mich geirrt Sicherheit geht jedoch praktisch immer zu Lasten des Komforts, und bei Authentifizierungsdiensten ist eine geringfügige Sicherheitsabweichung gerechtfertigt.
Natürlich sind auch die Verwendung eines Captchas und Einschränkungen bei Anmeldeversuchen ein Muss. Um die Sicherheit Ihrer Webanwendung zu gewährleisten, empfehlen wir außerdem, eine Prüfung durch Dritte durchzuführen. Und wenn Sie mit der Blockchain-Technologie arbeiten, können unsere Kollegen von Kaspersky Blockchain Security bei der Sicherheitsanalyse von Webanwendungen zur Seite stehen.