Sicherer "Passwort zurücksetzen"-Prozess
Wie lässt sich der Prozess zum Zurücksetzen von Passwörtern sicher gestalten? Welche Vor- und Nachteile gibt es bei der Implementierung einer Rücksetzfunktion?

Wie lässt sich der Prozess zum Zurücksetzen von Passwörtern sicher gestalten? Welche Vor- und Nachteile gibt es bei der Implementierung einer Rücksetzfunktion?
Es gibt zahlreiche verschiedene, völlig legitime Blickwinkel auf dieses Thema – aber auch eine Menge ziemlich schlechter Prozessdefinitionen. Die meisten Endbenutzer dürften bereits mit vielen davon in Berührung gekommen sein. Anhand einiger Beispiele soll daher erläutert werden, wie der Prozess zum Zurücksetzen von Passwörtern funktionieren sollte und was bei der Implementierung zu beachten ist. Dieser Artikel kann auch als Testkatalog für einen Penetrationstest herangezogen werden.
Passwortspeicherung: Hashing, Verschlüsselung und Klartext
Zunächst muss geklärt werden, wie Passwörter gespeichert werden. Es gibt grundsätzlich drei Möglichkeiten, wie Passwörter in einer Datenbank abgelegt werden können:
- Klartext – Die Passwörter werden im Klartext gespeichert.
- Verschlüsselt – In der Regel wird symmetrische Verschlüsselung verwendet, und das verschlüsselte Passwort wird in einer eigenen Spalte abgelegt.
- Hash-Wert – Ein Einwegverfahren, bei dem das Passwort idealerweise zusätzlich mit einem Salt versehen wird.
Passwörter sollten niemals im Klartext gespeichert werden! Eine Injection-Schwachstelle, eine nachlässige Datensicherung oder einer von einem Dutzend anderer kleiner Fehler – und schon sind sämtliche Passwörter öffentlich zugänglich.
Verschlüsselung ist besser, hat aber ebenfalls Schwächen. Das Problem dabei: Wo verschlüsselt wird, kann auch entschlüsselt werden. Sobald es gelingt, die verschlüsselten Daten in Klartext umzuwandeln, liegen die Passwörter wieder offen vor.
Hashing beschreibt eine Einwegfunktion. Die einzige Möglichkeit, ein eingegebenes Passwort mit dem gespeicherten Hash abzugleichen, besteht darin, die Eingabe ebenfalls zu hashen und die Ergebnisse zu vergleichen. Um Angriffe mit Werkzeugen wie Rainbow Tables zu verhindern, wird dem Prozess ein Zufallswert hinzugefügt – das sogenannte Salt. Dadurch muss jedes Passwort einzeln per Brute-Force-Angriff getestet werden.
Eine detaillierte Anleitung finden Sie in dem Artikel "Passwörter unknackbar speichern".
Passwort zurücksetzen statt erinnern
Warum wird eine „Erinnerung" überhaupt benötigt? Weil der Benutzer sein Passwort vergessen hat. Doch was ist das eigentliche Ziel? Dem Benutzer zu helfen, sich wieder anzumelden. Eine Passwort-Erinnerungsfunktion ist dafür allerdings der falsche Ansatz.
Der Begriff „Erinnerung" wird umgangssprachlich verwendet, aber das eigentliche Ziel ist, dem Benutzer auf sichere Weise zu helfen, wieder Zugang zu seinem Konto zu erhalten. Da dies sicher geschehen soll, gibt es zwei Gründe, warum das Zusenden des aktuellen Passworts nicht funktioniert:
- E-Mail ist ein unsicherer Kanal. Genauso wie keine sensiblen Daten über HTTP gesendet werden sollten, ist auch die Transportschicht von E-Mails nicht sicher. Tatsächlich ist das Problem noch gravierender als bei einem unsicheren Transportprotokoll, da E-Mails oft dauerhaft gespeichert bleiben und von Systemadministratoren eingesehen werden können.
- Der Betreiber des Dienstes sollte ohnehin keinen Zugriff auf das Passwort haben. Wie im vorigen Abschnitt zur Speicherung erläutert, gibt es bei korrekter Implementierung keine Möglichkeit, das Passwort auszulesen und per E-Mail zu verschicken.
Aufzählung von Benutzernamen und die Auswirkungen auf die Anonymität
Die Meldung „Es ist kein Benutzer mit dieser E-Mail-Adresse registriert" ist keine gute Wahl. Das Problem ist offensichtlich: Eine Website bestätigt damit indirekt, dass ein Benutzer mit einer bestimmten E-Mail-Adresse registriert ist – oder eben nicht.
Das daraus entstehende Risiko ist ein Social-Engineering-Risiko. Sobald ein Angreifer eine Person einem Dienst zuordnen kann, verfügt er über eine verwertbare Information. Beispielsweise kann er die Person kontaktieren, sich dabei als Vertreter der Website ausgeben und im Rahmen eines Spearphishing-Angriffs nach zusätzlichen Informationen fragen.
Diese Praxis birgt zudem die Gefahr einer sogenannten Benutzernamen-Aufzählung: Eine ganze Sammlung von Benutzernamen oder E-Mail-Adressen kann auf ihre Existenz auf der Website überprüft werden, indem einfach Anfragen in großer Zahl abgesetzt und die Antworten ausgewertet werden. Empfehlungen zur Sicherheit von Webanwendungen gibt auch das BSI.
Zurückgesetztes Passwort senden vs. Reset-URL
Als Nächstes muss die Art und Weise betrachtet werden, wie das Passwort zurückgesetzt wird. Es gibt zwei gängige Ansätze:
- Ein neues Passwort auf dem Server erzeugen und per E-Mail versenden
- Eine eindeutige URL per E-Mail versenden, über die das Zurücksetzen durchgeführt werden kann
Der erste Ansatz hat ein weiteres großes Problem: Er macht die böswillige Sperrung eines Kontos denkbar einfach. Ist die E-Mail-Adresse einer Person bekannt, die ein Konto auf der Website besitzt, kann dieses Konto jederzeit durch das Zurücksetzen des Passworts gesperrt werden. Das entspricht einem Denial-of-Service-Angriff. Daher sollte ein Zurücksetzen erst nach erfolgreicher Verifizierung des Kontoinhabers durchgeführt werden.
Mit einer Reset-URL ist eine Webadresse gemeint, die für diesen speziellen Zurücksetzungsvorgang einzigartig ist. Diese URL muss zufällig generiert sein und darf keine Rückschlüsse auf das betroffene Konto ermöglichen. Beispielsweise sollte eine Reset-URL nicht einfach ein Pfad wie „/reset/?user=Jan" sein.
Stattdessen muss ein eindeutiges Token erstellt werden, das als Teil der Reset-URL per E-Mail verschickt wird und anschließend auf dem Server mit einem Datensatz des entsprechenden Benutzerkontos abgeglichen wird. Dadurch wird bestätigt, dass der Inhaber des E-Mail-Kontos tatsächlich derjenige ist, der das Passwort zurücksetzen möchte. Da dieser Prozess dem Benutzer die Möglichkeit gibt, ein neues Passwort zu erstellen, muss selbstverständlich sichergestellt werden, dass die URL über HTTPS geladen wird.
Darüber hinaus sollte das Token zeitlich begrenzt sein, sodass der Zurücksetzungsvorgang innerhalb einer bestimmten Zeitspanne – beispielsweise einer Stunde – abgeschlossen werden muss. Auf diese Weise wird das Zeitfenster, in dem ein Zurücksetzen möglich ist, auf ein Minimum beschränkt. Sollte jemand die Reset-URL abfangen, kann er sie nur innerhalb dieses kurzen Zeitfensters nutzen. Natürlich kann ein Angreifer jederzeit eine neue Zurücksetzung anfordern, aber dadurch wird ein neues Token und eine neue URL erzeugt.
Schließlich sollte es sich um einen einmaligen Vorgang handeln. Sobald der Zurücksetzungsvorgang abgeschlossen ist, muss das Token gelöscht werden, sodass die Reset-URL nicht mehr funktioniert. Wie bereits im vorigen Punkt beschrieben, soll dadurch sichergestellt werden, dass ein Angreifer nur ein sehr begrenztes Zeitfenster für den Missbrauch der Reset-URL hat. Außerdem wird das Token nach einer erfolgreichen Zurücksetzung ohnehin nicht mehr benötigt.
Einige dieser Schritte mögen übertrieben erscheinen, doch sie beeinträchtigen die Nutzbarkeit der Funktion in keiner Weise und erhöhen die IT-Sicherheit – wenn auch für Szenarien, die hoffentlich selten eintreten. In 99 % der Fälle wird der Benutzer das Zurücksetzen innerhalb kürzester Zeit durchführen und sein Passwort in absehbarer Zukunft nicht erneut zurücksetzen müssen.
Die Rolle von CAPTCHA
Ein CAPTCHA ist weniger eine Sicherheitsmaßnahme als vielmehr ein Mittel zur Unterscheidung zwischen Mensch und Maschine. Ziel ist es, die automatisierte Übermittlung von Formularen zu verhindern, die natürlich auch für Angriffe auf die IT-Sicherheit missbraucht werden könnte. Im Kontext der Passwortzurücksetzung bedeutet ein CAPTCHA, dass die Rücksetzfunktion nicht automatisiert ausgenutzt werden kann – weder um eine Person mit E-Mails zu überhäufen noch um die Existenz von Konten zu überprüfen (was ohnehin nicht möglich sein sollte, wenn die Hinweise im Abschnitt zur Identitätsprüfung weiter oben befolgt wurden).
Geheime Fragen und Antworten
Das Problem bei Passwortzurücksetzungen, die vollständig von E-Mail abhängen, besteht darin, dass die Kontosicherheit der betreffenden Website dann zu 100 % von der Sicherheit des E-Mail-Kontos abhängt. Wer Zugriff auf die E-Mail hat, hat damit Zugriff auf jedes Konto, das allein durch den Empfang einer E-Mail zurückgesetzt werden kann. Für solche Konten ist die E-Mail-Adresse praktisch der Generalschlüssel zum digitalen Leben.
Eine Möglichkeit, dieses Risiko zu mindern, ist die Implementierung geheimer Fragen und Antworten. Der Benutzer wählt dabei eine Frage, deren Antwort nur er kennen sollte, und wird dann möglicherweise zur Beantwortung aufgefordert, bevor eine Passwortzurücksetzung durchgeführt wird. Das gibt zusätzliche Gewissheit, dass die Person, die das Zurücksetzen durchführen möchte, tatsächlich der Kontoinhaber ist.
Bei geheimen Fragen müssen die Benutzer allerdings vor sich selbst geschützt werden.
Was macht also eine gute Geheimfrage aus? Es gibt einige Faktoren:
- Prägnanz – Die Frage muss auf den Punkt gebracht und unmissverständlich formuliert sein.
- Eindeutige Antwort – Es sollte keine Frage verwendet werden, die von ein und derselben Person unterschiedlich beantwortet werden könnte.
- Vielfältige Antwortmöglichkeiten – Eine Frage nach der Lieblingsfarbe würde nur eine kleine Menge möglicher Antworten ergeben.
- Schwer zu ermitteln – Wenn die Antwort für jeden leicht herauszufinden ist, bietet sie keinen Schutz.
- Zeitlich konstant – Die Frage nach dem Lieblingsfilm könnte nach einem Jahr eine andere Antwort liefern.
Ein wichtiger Aspekt bei der Antwortkomponente der Geheimfrage ist die Speicherung. Wird die Antwort im Klartext in der Datenbank gespeichert, birgt das ähnliche Risiken wie bei der Klartextspeicherung von Passwörtern: Bei einer Offenlegung der Datenbank wird der Wert sofort sichtbar, was nicht nur die betroffene Anwendung gefährdet, sondern möglicherweise auch andere, völlig unabhängige Anwendungen, die dieselben geheimen Fragen verwenden.
Durch geheime Fragen und Antworten werden Benutzer zudem anfälliger für Social Engineering. Den Versuch, jemandem direkt sein Kontopasswort zu entlocken, wird kaum jemand unternehmen. Tatsächlich kann man aber mit einer Person ganz zwanglos über viele Aspekte ihres Lebens sprechen, die Geheimfragen betreffen, ohne dabei Verdacht zu erregen. Die eigentliche Idee hinter Geheimfragen ist ja gerade, dass sie sich auf persönliche Lebenserfahrungen beziehen und dadurch leicht zu merken sind – und genau darin liegt das Problem: Menschen sprechen gerne über ihre Erlebnisse! Dagegen lässt sich wenig tun, außer darauf zu achten, dass die verfügbaren Geheimfragen so gewählt werden, dass ihre Antworten weniger leicht durch Social Engineering zu ermitteln sind.
Zwei-Faktor-Authentifizierung
Bisher ging es darum, eine Identität anhand des Wissens des Antragstellers zu überprüfen. Eine zusätzliche geheime Konstante wird als ein Faktor der Authentifizierung betrachtet. In den meisten Szenarien ist eine biometrische Validierung kaum praktikabel, insbesondere im Bereich der IT-Sicherheit von Webanwendungen. Daher wird in der Regel auf das zweite Attribut bei der Zwei-Faktor-Authentifizierung (2FA) gesetzt: den Besitz. Ein gängiger Ansatz für diesen zweiten Faktor ist die Verwendung eines physischen Tokens, etwa einer RSA SecurID oder des Google Authenticator. Dabei wird ein kryptischer PIN generiert, der nur kurzzeitig gültig ist und sich nicht durch statische Analyse ableiten lässt.
Zurücksetzen per Benutzername oder E-Mail-Adresse
Sollte das Zurücksetzen nur über die E-Mail-Adresse möglich sein? Oder auch über den Benutzernamen? Das Problem beim Zurücksetzen über den Benutzernamen ist, dass der Benutzer bei einem ungültigen Benutzernamen nicht benachrichtigt werden kann, ohne dabei preiszugeben, ob jemand anderes ein Konto mit diesem Namen besitzt. Beim Zurücksetzen per E-Mail, wie im vorigen Abschnitt beschrieben, wird sichergestellt, dass der rechtmäßige Eigentümer der E-Mail-Adresse stets eine Rückmeldung erhalten kann, ohne dass deren Existenz im System öffentlich wird. Mit einem bloßen Benutzernamen ist das nicht möglich.
Die Antwort lautet daher: Nur per E-Mail! Wird das Zurücksetzen über den Benutzernamen ermöglicht, gibt es unweigerlich Fälle, in denen der Benutzer sich fragt, was vor sich geht, oder in denen die Existenz von Konten offengelegt wird. Zwar handelt es sich nur um einen Benutzernamen und nicht um eine E-Mail-Adresse, und jeder kann sich einen beliebigen verfügbaren Benutzernamen wählen – dennoch besteht aufgrund der weit verbreiteten Wiederverwendung von Benutzernamen eine hohe Wahrscheinlichkeit, dass Kontoinhaber implizit preisgegeben werden.
Was passiert also, wenn jemand seinen Benutzernamen vergisst? Sofern der Benutzername nicht bereits die E-Mail-Adresse ist (was häufig der Fall ist), ähnelt der Vorgang einer Passwortzurücksetzung: Man gibt die E-Mail-Adresse ein und erhält eine Nachricht an diese Adresse, ohne dass deren Existenz preisgegeben wird. Der einzige Unterschied ist, dass die Nachricht diesmal lediglich den Benutzernamen enthält und nicht die URL zum Zurücksetzen des Passworts. Alternativ erklärt die E-Mail, dass für diese Adresse kein Konto existiert.
Identitätsprüfung und Genauigkeit von E-Mail-Adressen
Ein zentraler Aspekt bei Passwortzurücksetzungen ist die Überprüfung der Identität der Person, die das Zurücksetzen anfordert. Handelt es sich tatsächlich um den rechtmäßigen Kontoinhaber? Oder um jemanden, der versucht, das Konto zu übernehmen oder den Inhaber zu belästigen?
E-Mail ist offensichtlich der bequemste und am weitesten verbreitete Kanal zur Identitätsprüfung. Es ist zwar kein hundertprozentiger Nachweis, und es gibt viele Fälle, in denen der bloße Empfang von E-Mails unter der Adresse des Kontoinhabers nicht ausreicht – insbesondere wenn ein hohes Maß an Vertrauen in die Identität erforderlich ist (daher auch der Einsatz von 2FA) –, aber es ist fast immer der Ausgangspunkt eines Zurücksetzungsprozesses.
Entscheidend ist dabei, dass die E-Mail-Adresse überhaupt korrekt hinterlegt ist. Hat sich ein Tippfehler eingeschlichen, wird die Zurücksetzung schlicht nicht ankommen. Ein E-Mail-Verifizierungsprozess bei der Registrierung ist ein zuverlässiger Weg, die Korrektheit der Adresse sicherzustellen. Der Ablauf ist aus der Praxis bekannt: Nach der Registrierung wird eine E-Mail mit einer eindeutigen URL verschickt, die angeklickt werden muss, um zu bestätigen, dass der Empfänger tatsächlich der Inhaber des E-Mail-Kontos ist. Wenn die Anmeldung erst nach Abschluss dieses Vorgangs freigeschaltet wird, besteht ein klarer Anreiz, die E-Mail-Adresse korrekt anzugeben.
Wie bei vielen Sicherheitsaspekten geht auch dieses Modell zulasten der Benutzerfreundlichkeit, bietet im Gegenzug jedoch ein höheres Maß an IT-Sicherheit hinsichtlich des Vertrauens in die Identität des Benutzers. Bei Websites, bei denen der Benutzer großen Wert auf eine erfolgreiche und sichere Registrierung legt und bereitwillig einen zusätzlichen Schritt in Kauf nimmt (z. B. bei kostenpflichtigen Diensten oder Bankgeschäften), mag das kein Problem sein. Bei Konten, die der Benutzer als „Wegwerfkonten" betrachtet – etwa um einen Beitrag zu kommentieren, ohne personenbezogene Daten zu hinterlassen –, könnte der zusätzliche Aufwand ihn jedoch abschrecken.
Identifizieren, wer den Rücksetzvorgang initiiert hat
Es gibt naturgemäß Spielraum für den Missbrauch der Funktion zum Zurücksetzen von Passwörtern, und böswillige Akteure können dies auf verschiedene Weise ausnutzen. Ein einfacher, aber wirkungsvoller Trick zur Überprüfung der Anfragequelle besteht darin, die IP-Adresse des Anfragenden in die Rücksetz-E-Mail aufzunehmen. Dadurch erhält der Empfänger Hinweise zur Identifizierung der Quelle der Anfrage.
Benachrichtigung über eine Änderung per E-Mail
Ein Thema, das sich durch diesen gesamten Beitrag zieht, ist die Kommunikation: Dem Kontoinhaber sollte bei jedem Prozessschritt so viel wie möglich darüber mitgeteilt werden, was gerade geschieht – ohne dabei Informationen preiszugeben, die für böswillige Zwecke missbraucht werden könnten.
Eine Passwortänderung kann aus zwei verschiedenen Situationen heraus erfolgen:
Änderung des Passworts im angemeldeten Zustand, weil der Inhaber ein neues Passwort verwenden möchte. Oder Zurücksetzen des Passworts im abgemeldeten Zustand, weil der Inhaber es vergessen hat. Obwohl es in diesem Beitrag in erster Linie um das Zurücksetzen geht, mindert eine Benachrichtigung im ersten Fall das Risiko, dass jemand anderes das Passwort ohne Wissen des rechtmäßigen Inhabers ändert. Wie könnte das geschehen? Ein häufiges Szenario: Jemand hat sich das Passwort des rechtmäßigen Inhabers beschafft (etwa durch ein wiederverwendetes Passwort, das an anderer Stelle kompromittiert wurde, durch einen Keylogger oder weil es leicht zu erraten war) und ändert es, um den Inhaber auszusperren. Ohne E-Mail-Benachrichtigung hat der tatsächliche Inhaber keine Kenntnis von der Änderung.
Beim Zurücksetzen hingegen hat der Inhaber den Prozess natürlich selbst eingeleitet (oder die verschiedenen oben beschriebenen Maßnahmen zur Identitätsüberprüfung durchlaufen), sodass die Änderung keine Überraschung darstellen sollte. Dennoch dient die E-Mail-Benachrichtigung als positive Rückmeldung und zusätzliche Absicherung. Außerdem sorgt sie für ein einheitliches Nutzungserlebnis in beiden genannten Szenarien.
Verantwortung an andere Anbieter delegieren
Der Aufbau einer sicheren Kontoverwaltung ist in der Praxis nicht einfach. Das liegt nicht daran, dass es technisch besonders schwierig wäre, sondern daran, dass es eine Vielzahl von Konfigurationsmöglichkeiten gibt. Es geht nicht nur um das Zurücksetzen, sondern auch um den gesamten Registrierungsprozess, die sichere Speicherung von Passwörtern, den Umgang mit mehrfach fehlgeschlagenen Anmeldeversuchen und vieles mehr.
Heutzutage gibt es zahlreiche Drittanbieter, die einem die Mühe abnehmen, all dies selbst zu entwickeln, und alles in einen verwalteten Dienst abstrahieren. Zu den Optionen gehören unter anderem Keycloak, OpenID, OAuth, Google und Facebook.
Penetrationstest, um das schwächste Glied zu finden
All die oben genannten Punkte sind für die Absicherung eines einzelnen Kontos relevant. Was jedoch stets beachtet werden muss, ist das gesamte Ökosystem rund um das Konto. Diese Szenarien sind immer Bestandteil eines Penetrationstests.
Fazit
Auch wenn dieser Beitrag umfangreich erscheint, gibt es dennoch reichlich zusätzliches Material zu diesem Thema. Etwa die Rolle einer Rettungs-E-Mail-Adresse oder die Frage, was passiert, wenn der Zugang zum E-Mail-Konto verloren geht. Wie bereits erwähnt, liegt die Schwierigkeit bei Passwortzurücksetzungen nicht in der technischen Umsetzung, sondern in der Vielzahl der möglichen Angriffsvektoren. Sehr umfassende technische Richtlinien zum Thema "Bewertung von Authentisierungslösungen" können beim BSI nachgelesen werden.
Es gibt zahlreiche Beispiele, bei denen eine fehlerhafte Umsetzung zu Problemen geführt hat, und es existieren noch viele weitere Präzedenzfälle, in denen schiefgegangene Zurücksetzungen Schaden verursacht haben.
Bei der Gestaltung des Zurücksetzungsprozesses ist also Vorsicht geboten. Ein Bedrohungsbaum für die verschiedenen Berührungspunkte ist hilfreich, und beim Aufbau der Funktion sollte man wie ein Angreifer denken – andernfalls besteht eine hohe Wahrscheinlichkeit, dass jemand anderes als ein beauftragter Pentester genau das tut!