Sonntag, 12. Februar 2012 |
Auch ein gut entworfenes, theoretisch absolut sicheres Authentifizierungssystem kann durch Implementierungsfehler unsicher werden. Das können z.B. Informationslecks sein, eine Möglichkeit zum direkten Umgehen des Authentifizierungssystems oder eine allgemeine Schwächung des Systems.
Implementierungsfehler sind schwieriger zu finden als Designfehler wie ein fehlender Schutz vor Brute-Force-Angriffen oder unsichere Regeln für Passwörter. Daher ist eine allgemeine Beschreibung schwierig, die folgenden Hinweise sind also noch allgemeiner als das sonst schon der Fall ist.
Manche Webanwendungen verwenden ein mehrstufiges Authentifizierungssystem, bei dem nach der Eingabe von Benutzername und Passwort eine Challenge, z.B. die Auswahl eines bestimmten Bilds oder die Beantwortung einer Sicherheitsfrage, bestanden und/oder ein von einem Security-Token gelieferter Wert eingegeben werden muss. Diese Systeme sollen sicherer sein als eine einfache Benutzername-Passwort-Kombination, indem sich der Benutzer erst durch Benutzername und Passort identifiziert und die Webanwendung ihn danach durch weitere Schritte authentifiziert. Dabei können insbesondere Logikfehler dazu führen, dass das Gesamtsystem am Ende unsicherer ist, als es die Abfrage von Benutzername und Passwort allein wäre.
Die Implementierung könnte z.B. in jedem Schritt falsche Annahmen über die Interaktion des Benutzers mit vorhergehenden Schritten machen:
Zuerst wird die Authentifizierung für ein Benutzerkonto unter der Kontrolle des Testers einmal vollständig durchlaufen, wobei alle übertragenen Daten protokolliert werden.
Danach werden die in den einzelnen Schritte verwendeten und übertragene Daten untersucht. Werden bestimmte Daten in mehreren Schritten abgefragt oder an die Webanwendung gesendet? Für letzteres kommen wie üblich Cookies, versteckte Formularfelder oder gesetzte URL-Parameter in Frage.
Danach werden die verschiedenen Schritte der Authentifizierung mit präparierten Requests aufgerufen, indem z.B. die Reihenfolge geändert wird, ein bestimmter Schritt direkt aufgerufen oder aber ausgelassen wird, oder nach anderen Möglichkeiten zur Manipulation gesucht wird.
Werden Daten mehrmals übertragen, wird geprüft, was passiert, wenn in verschiedenen Schritten unterschiedliche Werte übertragen werden. Werden die Daten in jedem Schritt geprüft, oder gibt es Schritte, die sie ungeprüft verwenden? Können diese Schritte durch andere Werte manipuliert werden? Was passiert, wenn der erste Schritt mit einem Benutzernamen erfolgreich durchlaufen wurde und der zweite Schritt mit einem anderen Benutzernamen?
Werden zwischen Client und Webanwendung Daten ausgetauscht, die nicht vom Benutzer eingegeben wurden? Diese könnten Statusinformationen enthalten, deren Manipulation Auswirkungen auf den Authentifizierungsprozess hat. Z.B. könnte ein Parameter die zuletzt erfolgreich durchlaufene Stufe speichern, und durch eine Manipulation des Parameters können Stufen übersprungen werden.
In der nächsten Folge geht es um weitere Implementierungsfehler in mehrstufigen Authentifizierungssystemen.
Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!