Freitag, 22. Oktober 2010


Topthema

Donnerstag, 23. Juli 2009 | Topthema

About Security #214: Schwachstellen-Suche: Authentifizierung – Grundlagen

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

Die Authentifizierung der Benutzer ist für viele Webanwendungen eine Grundvoraussetzung für die folgende Nutzung, entsprechend sind Angriffe darauf ebenso häufig wie gefährlich.

Webanwendungen unterscheiden sich insbesondere in zwei Punkten von normalen Anwendungen: Das Web ist anonym - Webanwendungen wissen nicht, wer mit ihnen kommuniziert, solange sie ihn nicht selbst identifiziert und authentifiziert haben. Und das Internet ist ein offenes Netz - die für die Kommunikation zwischen Client und Server verwendeten Kommunikationsprotokolle sind gut dokumentiert, und Dritte können die übertragenen Daten abfangen und manipulieren. Die Webanwendung weiss also ohne eigenes Zutun nie, wer mit ihr kommuniziert und ob die empfangenen Daten authentisch sind.

Authentifizierung - einfach, und doch so schwer...

Konzeptionell ist eine Authentifizierung sehr einfach: Der Benutzer gibt seinen Benutzernamen und sein Passwort für ein bestimmtes System ein, und das System prüft, ob die Eingaben korrekt sind. Sind sie korrekt, ist der Benutzer der, der er zu sein behauptet, ansonsten ist er es nicht.

Leider ist das ganze für Webanwendungen nicht so einfach, wie es sich für z.B. das lokale Anmelden an einem einzelnen Computer darstellt. Ein Dritter könnte z.B. die Zugangsdaten belauscht haben und sich damit später als der entsprechende Benutzer anmelden, oder er könnte die Zugangsdaten abfangen und das Passwort ändern, so das der eigentlich zum Zugriff befugte Benutzer von der Webanwendung nicht akzeptiert wird.

Authentifizierungsmechanismen

Es gibt eine ganze Reihe von Möglichkeiten, eine Authentifizierung für Webanwendungen durchzuführen:

  • HTML-Formulare
  • Multi-Faktor-Mechanismen wie z.B. die Kombination eines Passworts mit einem physikalischen Token
  • Client-SSL-Zertifikate und/oder Smartcards
  • HTTP-Basic- und -Digest-Authentication
  • Betriebssystemeigene Authentifizierungssysteme auf Grundlage von NTLM oder Kerberos
  • Authentifizierungsdienste von Drittherstellern
HTML-Formulare

Die häufigste Authentifizierungsmethode für Webanwendungen sind HTML-Formulare zur Eingabe von Benutzername und Passwort, die dann zur Prüfung an die Webanwendung gesendet werden. In sicherheitskritischen Bereichen wie z.B. beim Onlinebanking kommen weitere Schritte wie die Eingabe einer weiteren PIN oder TAN dazu, die aber ebenfalls über ein HTML-Formular eingegeben werden.

Eine weitere Steigerung sind dann Multi-Faktor-Mechanismen, die ein physikalisches Token erfordern. Das kann z.B. das Handy zum Empfang von mTANs oder ein Security-Token zum Erzeugen von One-Time-Passcodes sein, die dann i.A. ebenfalls über ein HTML-Formular eingegeben werden.

Diese Authentifizierungsmechanismen schützen aber gar nicht oder nur bedingt vor Angriffen wie Phishing oder Keyloggern auf dem Client-Rechner.

SSL-Zertifikate

Einige Webanwendungen verwenden Client-seitige SSL-Zertifikate oder in Smartcards implementierte kryptographische Verfahren, die zwar relativ sicher, dafür aber auch aufwendig zu verteilen und zu administrieren sind. Dementsprechend werden sie i.A. nur in besonders sicherheitskritischen Fällen eingesetzt.

HTTP-Authentifizierung

Die HTTP-basierten Authentifizierungsmechanismen (egal ob basic, digest oder Windows-basiert) werden meist nur in Intranets verwendet, um internen Benutzern den Zugriff auf Webbasierte Anwendungen mit ihren normalen Netzwerk- oder Domain-Zugangsdaten zu ermöglichen.

Authentifizierungsdienste

Authentifizierungsdienste von Drittherstellern wie Microsofts Passsport bzw. Windows Live ID oder das Liberty Alliance Project haben keine besonders große Verbreitung erlangt, mit OpenID könnte sich das aber ändern.

Schwachstellen und Angriffe
About Security: Die komplette Serie

Die meisten Schwachstellen in bzw. Angriffe auf die Authentifizierung betreffen alle genannten Mechanismen. Aufgrund der großen Verbreitung der HTML-Formulare werden sie im Folgenden aber soweit möglich daran beschrieben und für die anderen Mechanismen nur auf Unterschiede dazu hingewiesen.

Designfehler

Schwachstellen auf Grund von Designfehlern betreffen die Authentifizierung häufiger als alle anderen Bereiche der Webanwendung. Selbst im einfachsten Fall "HTML-Formular für Benutzername und Passwort" gibt es eine ganze Reihe von Möglichkeiten, Fehler zu machen.

Schlechte Passwörter

Viele Webanwendungen stellen gar keine oder nur unzureichende Anforderungen an die verwendeten Passwörter. Das führt dazu, das Passwörter oft viel zu kurz sind (wenn sie nicht sogar komplett leer gelassen werden können), normale Wörter oder der Benutzername als Passwort verwendet werden oder ein vorgegebener Default-Wert nicht ersetzt wird. Benutzern ist die Sicherheit der Passwörter meist ziemlich egal, denen ist es wichtiger, sie sich leicht merken zu können. Wenn die Webanwendung keine sicheren Passwörter erzwingt, wird ein großer Teil der Benutzer keine wählen und dadurch ihre Benutzerkonten angreifbar machen.

Dabei ist die Durchsetzung sicherer Passwörter die einzige Sicherheitsmaßnahme, die auf dem Client stattfinden kann. Ein Angreifer könnte die entsprechende Funktion zwar manipulieren und für sein eigenes Benutzerkonto ein unsicheres Passwort setzen, das ist für die Sicherheit der Webanwendung aber egal.

In der nächsten Folge geht es weiter um die Wahl sicherer Passwörter sowie um Brute-Force-Angriffe.

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

Kommentare

Folgende Links könnten Sie auch interessieren