Web-Sicherheit

März 30, 2011

Zurücksetzten von Passwörtern in Webanwendungen

Filed under: Allgemein — sebastiankuebeck @ 08:25
Tags: , , , ,

Wenn es um die Sicherheit von Webanwendungen geht, gibt es zahlreiche weiße Flecken auf der Landkarte. Diese „unerforschten Territorien“ sind Mechanismen, die die meisten Webanwendungen besitzen, für die aber keine allgemein anerkannten, sicheren Implementierungsstrategien existieren. Ein solcher Mechanismus ist zum Beispiel jener, mit dem Benutzer ihre Passwörter zurücksetzten können, wenn sie diese vergessen haben. Er ist auch unter den Bezeichnungen Password Recovery Feature oder Forgotten Password Feature bekannt.

Der Sicherheitsberater David Ferguson hat kürzlich in einem White Paper zahlreiche gängige Implementierungen dieses Mechanismus analysiert und daraus Tipps für die eigene Implementierung abgeleitet. Generell werden zwei Arten von Mechanismen benutzt, um einen Benutzer auch ohne Passwort zu authentifizieren:

  • Zusenden des Passworts an den Benutzer über einen zweiten, möglichst unabhängigen Kanal (z.B.: E-Mail, SMS). Dabei kann auch ein Code zugeschickt werden, der dann beim Zurücksetzten in der Webanwendung eingegeben werden muss.
  • Anstatt des Passworts wird eine Frage gestellt, deren Antwort im Idealfall nur der Benutzer kennen kann und die vom Benutzer bei der Registrierung vorgegeben wird.

Leider haben beide Methoden ihre Schwächen, weshalb David Ferguson vorschlägt, diese Mechanismen sicherer zu gestalten oder intelligent zu kombinieren, damit sie keine bequeme Hintertür für Hacker darstellen.

Zusenden des Passworts oder eines Codes

David Ferguson kommt genau wie Joseph Bonneau und seine Kollegen zu dem Schluss, dass die gängige Praxis, nämlich das vergessene  Passwort per E-Mail an den Benutzer zu schicken, keine gute Idee ist. Schließlich sind diese E-Mails ja nicht verschlüsselt und so lassen sie sich relativ leicht – beispielsweise in öffentlichen WLANs – abfangen.

Der Benutzer bekommt einen Link (mit einem eingebetteten Code), dem er folgen soll, damit er sein Passwort zurücksetzten kann.
Diese E-Mail kann natürlich leicht abgefangen werden.

Diese Methode lässt sich leider nicht dadurch verbessern, dass man lediglich einen Link mit einem geheimen Code in die E-Mail aufnimmt, denn der Code kann ja ebenfalls abgefangen werden.

Stellen von Fragen, deren Antwort nur der Benutzer kennt

Wie bereits in meinem Buch erwähnt, ist es nicht besonders schlau, die Frage durch den Benutzer selbst formulieren zu lassen, denn dieser wird in vielen Fällen das Passwort selbst in leicht verschleierter Form in die Frage einbauen. Leider sind auch Antworten auf gängige Fragen – wie beispielsweise die nach dem Mädchennamen der Mutter des Benutzers – für einen Hacker leicht durch ein paar Recherechen im Internet zu ermitteln.

Die Frage nach dem Jugendfreund lässt sich üblicherweise relativ leicht ermitteln.

David Ferguson schlägt hier vor, statt einer mehrere Fragen zu stellen und diese Fragen möglichst intelligent zu wählen. goodsecurityquestions hält beispielsweise zahlreiche nützliche Tipps für diese Sicherheitsfragen bereit.

Wie bereits erwähnt, macht es durchaus Sinn, nicht nur auf einen Mechanismus zu vertrauen sondern diese zu kombinieren, beispielsweise indem man erst einmal eine E-Mail mit einem Code an den Benutzer schickt. Der Benutzer muss dann diesen Code eingeben UND eine Sicherheitsfrage beantworten, damit er sein Passwort zurücksetzten kann. Darüber hinaus kann ein CAPCHA und ein Verzögerungsmechanismus bei falschen Eingaben Brute-Force-Angriffe deutlich erschweren. Es ist allerdings auch zu beachten, dass man die Benutzer nicht durch all die Absicherungsmechanismen überfordet!

Abschließend zählt der Autor noch einige gängige DOs und DON’Ts auf, die man bei der Implementierung dieser Art von Mechanismen beachten sollte. Das könnte allerdings suggerieren, dass es einfach wäre, einen solchen Mechanismus oder generell einen sicheren Authentifizeirungsmechanismus zu implementieren. Dem ist leider nicht so!

Generell ist es praktisch unmöglich, einen sicheren Authentifizierungsmechanismus zu implementieren, das gilt natürlich auch für jeden Mechanismus zum Zurücksetzten von Passwörtern!

Die Auswahl eines geeigneten Authentifizierungsmechanismus ist daher immer ein Kompromiss, der sorgfältig auf den jeweiligen Anwendungsfall abgestimmt werden muss. Also sollte man sich erst einmal grundlegend mit der Problematik der Authentifizierung vertraut machen und lernen, wie man Authentifizierungsmechanismen angreift, bevor man einen eigenen Authentifizierungsmechanismus implementiert.

In meinem Buch wird in Kapitel 5 der Unterschied zwischen Identifizierung, Authentifizierung, Authentisierung und Autorisierung erörtert und es werden diese Begriffe im Zusammenhang mit Webanwendungen ausführlich erklärt. Das Kapitel 11 widmet sich gängigen Fehlern in der Implementierung von Authentifizierungsmechanismen und wie man diese vermeiden und gegebenenfalls beheben kann.

Schreibe einen Kommentar »

Es gibt noch keine Kommentare.

RSS feed for comments on this post. TrackBack URI

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Bloggen auf WordPress.com.

%d Bloggern gefällt das: