Freitag, 22. Oktober 2010


Topthema

Donnerstag, 29. Oktober 2009 | Topthema

About Security #228: Schwachstellen-Suche: Authentifizierung - Vorhersagbares

(Link zum Artikel: http://www.entwickler.de/entwicklerde/kolumnen/052127)

Manche Webanwendungen erzeugen bei der Registrierung vorhersagbare Benutzernamen und/oder Passwörter. Während die Gefahr eines vorhersagbaren Passworts offensichtlich ist, ist ein vorhersagbarer Benutzername zumindest auf den ersten Blick nicht gefährlich. Aber das ist zumindest zum Teil ein Irrtum.

Vorhersagbare Benutzernamen

Manche Webanwendungen, bei denen die Benutzer ihren Benutzernamen nicht selbst auswählen können, erzeugen ihn auf vorhersagbare Weise, z.B. in der Form

user[laufende Nummer]

oder

[fester Suffix][Initialen des Benutzers][laufende Nummer]

oder nach ähnlichen Mustern. Ein Angreifer, der den Aufbau der Benutzernamen kennt, kann dann eine Liste mit sehr hoher Wahrscheinlichkeit gültiger Benutzernamen erstellen, die er für weitere Angriffe, z.B. einen Brute-Force-Angriff auf das Authentifizierungssystem oder als Teil eines Social-Engineering-Angriffs, nutzen kann. Anders als bei den zuvor beschriebenen Methoden zum Ermitteln gültiger Benutzernamen ist in diesem Fall gar keine oder nur eine minimale Interaktion mit der Webanwendung nötig, der "Angriff" kann also nicht bemerkt werden.

Schwachstellen suchen

Bei der eigenen Webanwendung braucht man nach einer möglichen Schwachstelle nicht lange zu suchen, man muss sich nur fragen, ob der verwendete Algorithmus von einem Angreifer vorhersagbare Ergebnisse liefert oder nicht. Wenn die Benutzernamen vorhersagbar sind, muss man dann nur noch entscheiden, ob man das akzeptiert (vielleicht gibt es ja auch einen guten Grund, der sogar dafür spricht), oder ob man lieber eine Zufallskomponente einbringen möchte. Wie bereits erwähnt, handelt es sich in diesem Fall um keine direkt ausnutzbare Schwachstelle, evtl. muss man aber mit mehr Brute-Force-Angriffen auf erratene Benutzernamen sowie Social-Engineering-Angriffen rechnen.

Und wie geht man bei einem Black-Box-Test vor? Genau wie ein Angreifer: Werden die Benutzernamen bei der Registrierung von der Webanwendung vergeben, registriert sich ein Angreifer mehrmals kurz hintereinander und untersucht die erhaltenen Benutzernamen nach auffälligen Mustern oder Regelmäßigkeiten.

In einem zweiten Schritt werden, ausgehend von den bekannten Benutzernamen, möglicherweise zuvor vergebene Benutzernamen gebildet und für weitere Angriffe verwendet. Verrät die Anwendung durch die Fehlermeldungen bei der Authentifizierung, ob ein Benutzername gültig ist oder nicht, kann der Angreifer dies ausnutzen, um einige seiner selbst gebildeten Benutzernamen auf Gültigkeit zu prüfen und dadurch seine Annahme bestätigen oder widerlegen lassen.

Vorhersagbare Passwörter
About Security: Die komplette Serie

Vergibt die Webanwendung die Passwörter nach der Registrierung selbst, dürfen sie nicht vorhersagbar sein. Sonst könnte ein Angreifer über ein erratenes und noch nicht vom Benutzer geändertes Passwort Zugriff auf ein fremdes Benutzerkonto erlangen. Derartige Schwachstellen kommen besonders häufig in Intranet-Anwendungen vor, bei denen das Passwort aus dem Benutzernamen und/oder der Funktion des Benutzers abgeleitet wird, wenn nicht sogar immer das gleiche "Startpasswort" vergeben wird. Aber auch in normalen Webanwendungen ist ein vorhersagbares Passwort eine Gefahr. Manchmal reicht es aus, eine kleine Anzahl vergebener Passwörter zu kennen, um daraus auf andere Passwörter zu schließen, z.B. weil sie eine immer gleiche, fest vorgegebene Zeichenkette mit einer weiteren, vorhersagbaren oder zumindest auf einen kleinen Wertebereich eingrenzbaren Zeichenkette verbinden.

Schwachstelle suchen

Bei der eigenen Webanwendung... aber das hatten wir ja schon öfter. Daher gleich zum "Black-Box-Test" bzw. dem Vorgehen eines Angreifers:

Vergibt die Webanwendung die Passwörter, besorgt sich der Angreifer mehrere davon, z.B. indem er sich mehrmals kurz hintereinander registriert. Danach werden die Passwörter auf Regelmäßigkeiten wie immer wieder kehrende Bestandteile oder aufeinander folgende Sequenzen untersucht.

Ist ein Muster erkennbar, wird versucht, darauf aufbauend Passwörter für andere Benutzerkonten zu erraten. Ist der Benutzername ganz oder teilweise im Passwort enthalten, kann evtl. das Passwort für bekannte Benutzernamen gebildet werden. Andernfalls werden die erzeugten Benutzernamen für einen Brute-Force-Angriff auf ermittelte oder erratene/typische Benutzernamen verwendet.

Sichere Startpasswörter

Wird das Passwort von der Webanwendung erzeugt, muss es die gleichen Anforderungen erfüllen wie ein vom Benutzer gewähltes, d.h. insbesondere darf es in keinem Wörterbuch stehen oder erratbar, d.h. aus bekannten Passwörtern ableitbar, sein. Darf der Benutzer das Passwort ändern, ist es empfehlenswert, dieses "Startpasswort" nach dem ersten Login zwangsweise durch ein vom Benutzer selbst gewähltes Passwort ersetzen zu lassen, das dann natürlich auch den Ansprüchen an ein sicheres Passwort genügen muss.

Warum sollte man erst ein Passwort vorgeben, wenn der Benutzer das dann doch ändern darf? Nun, z.B. um bei der Registrierung als zusätzlichen Schritt die Daten des Benutzers zumindest teilweise zu prüfen, z.B. indem das Passwort an die angegebene E-Mail-Adresse gemailt oder an die Postanschrift verschickt wird. Diese Übertragung der Zugangsdaten an den Benutzer muss ebenfalls sicher erfolgen, und genau darum geht es auch in der nächsten Folge.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security - Übersicht zum aktuellen Thema:

Kommentare

Folgende Links könnten Sie auch interessieren