Mittwoch, 8. Februar 2012 |
Mit Brute-Force-Angriffen lassen sich schwache Passwörter brechen (und mit etwas Pech auch stärkere). Da man schwache Passwörter nicht mit Sicherheit verhindern kann, muss man Brute-Force-Angriffe verhindern oder zumindest erschweren.
Sämtliche zur Authentifizierung gehörenden Funktionen müssen vor automatisierten Angriffen geschützt werden. Außer der Login-Funktion selbst betrifft das z.B. auch die Funktionen zur Änderung des Passworts und zum Zurücksetzen eines vergessenen Passworts. Dazu sind mehrere Maßnahmen notwendig:
Die Verwendung nicht vorhersagbarer Benutzernamen und die Verhinderung des Sammelns gültiger Benutzernamen erschwert einen Brute-Force-Angriff, da der Angreifer einen oder besser mehrere Benutzernamen kennen muss, um einen Erfolg versprechenden Brute-Force-Angriff durchzuführen. Zwar könnte man sowohl Benutzername als auch Passwort raten bzw. mögliche Werte dafür durchprobieren, aber die Erfolgswahrscheinlichkeit ist dabei deutlich geringer, zumal es keine Möglichkeit gibt (bzw. geben darf), zwischen einem aufgrund eines falschen Passworts und einem wegen eines nicht existierenden Benutzernamens fehlgeschlagenen Authentifizierungsversuch zu unterscheiden.
Auf fehlgeschlagene Authentifizierungsversuche muss angemessen reagiert werden. Bei sicherheitskritischen Anwendungen wie z.B. dem Onlinebanking ist es angebracht, das betreffende Benutzerkonto schon nach einer geringen Anzahl fehlgeschlagener Authentifizierungsversuche, z.b. 3 Stück, zu sperren und erst nach einer erfolgreichen Authentifizierung "out of band" wieder frei zu geben. Das könnte z.B. ein Telefonat mit dem Support und die Beantwortung einiger Sicherheitsfragen oder das persönliche Aufsuchen einer Filiale sein. Dieser sichere Ansatz hat allerdings einen unangenehmen Nebeneffekt: Ein Angreifer kann dadurch absichtlich, ein unaufmerksamer Benutzer bei Verwendung einer falschen Benutzerkennung unabsichtlich einen Denial-of-Service für einen Benutzer verursachen. Außerdem erzeugt die notwendige Möglichkeit zur Out-of-Band-Authentifizierung nicht zu vernachlässigende Kosten. Bei weniger sicherheitskritischen Anwendungen ist daher eine abgestufte Reaktion angebracht, z.B. eine Sperrung für eine kurze Zeitspanne von z.B. 30 Minuten nach dem dritten fehlgeschlagen Authentifizierungsversuch oder eine langsam steigende Wartezeit nach jedem Fehlschlag. Damit wird ein automatisierter Angriff effektiv ausgebremst, während die Gefahr eines Denial-of-Service sinkt und die Kosten für den notwendigen Support gering bleiben. Weitere mögliche Strategien wurden bereits in About Security #215 aufgeführt.
Wird ein Konto temporär gesperrt, müssen mehrere Punkte berücksichtigt werden (siehe auch About Security #216):
Alle auf die einzelnen Benutzerkonten abzielenden Schutzmaßnahmen schützen nur vor Angriffen, bei denen einzelne Benutzerkonten mit vielen Passwörtern ausprobiert werden. Bei einem Brute-Force-Angriff, bei dem eine Liste mit einer große Anzahl ermittelter oder erratener Benutzernamen der Reihe nach mit einem einzelnen Passwort durchprobiert wird, kommen diese Schutzmaßnahmen nicht zum Zuge (siehe About Security #217). Wird ein Benutzerkonto z.B. nach 6 fehlgeschlagenen Authentifizierungsversuchen gesperrt, kann der Angreifer ungestört 5 verschiedene Passwörter für alle Benutzerkonten ausprobieren, ohne dass die Sperre aktiviert wird. Da mit ziemlich großer Wahrscheinlichkeit ein paar Benutzer ein schwaches Passwort verwenden, ist die Erfolgswahrscheinlichkeit für einen solchen Angriff gar nicht mal so schlecht. Und sie steigt noch, wenn die Webanwendung sehr viele Benutzer hat und der Angreifer eine lange Liste ihm bekannter Benutzernamen durchprobieren kann.
Wie man so einem Angriff begegnet, erfahren Sie in der nächsten Folge, in der es außerdem um die Absicherung der Funktionen zum Ändern und Zurücksetzen des Passworts geht.
Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!