Broken Authentication ist aktuell Platz 2 auf der Liste der größten Risiken für Webanwendungen und kann frei übersetzt werden mit ‚defekte Identitätsprüfung‘. Damit ist dieser Punkt enger gefasst als Sensitive Data Exposure, aber immer noch ein sehr undefinierter Begriff, welcher viele Überschneidungen mit anderen Themen (auch auf der Liste der OWASP Top 10) hat.

Was ist Authentication?

Grundsätzlich muss für jede Anwendung (egal ob im Web oder nicht), welche Funktion oder Daten nur einem bestimmten Nutzerkreis (‚die Befugten‘) zur Verfügung stellen will, eine Identitätsprüfung oder Authentifizierung durchführen, denn ein beliebiger Nutzer muss ja als befugt identifiziert werden.

Der Standard im Web und auch bei lokalen Anwendungen ist dabei die Kombination aus Benutzername und Passwort. Allerdings treten Verfahren, wie MFA (Multi-Factor-Authentication) oder FIDO immer mehr in den Vordergrund. Bei MFA wird Benutzername und Passwort durch einen weiteren Authetifizierungsfaktor, wie einen Hardwaretoken oder eine App, ergänzt. Hier werden meisten alle 30 oder 60 Sekunden neue Einmalpasswörter erzeugt, welche der Benutzer bei der Anmeldung eingeben muss. FIDO hingegen versucht Passwörter gänzlich zu ersetzen.

Welche Schwachstellen gibt es bei der Authentication?

Wie auch immer die Authentifizierung durchgeführt wird, oft ist es der Fall, dass dieser Prozess bei Webanwendungen schlecht implementiert oder einfach fehlerhaft ist. Dies hat zur Folge, dass ein Angreifer ohne Authentifizierung auf bestimmte Daten zugreifen kann oder sich als ein anderer Benutzer einloggen kann oder oder oder …

In der realen Welt gibt es einige Stellen an denen häufig Broken Authentication Schwachstellen auftreten. Die Passwort-Zurücksetzen-Funktion ist das prominenteste Beispiel. Hier kann es zum Beispiel passieren, dass sich ein Angreifer die Zurücksetzen-Mail an eine beliebige E-Mailadresse senden kann. Dadurch kann jeder Benutzeraccount übernommen werden. Andere einfache Beispiele sind keine Begrenzung bei den Passworteingabeversuchen oder schlechte Passwortrichtlinien.

Beispiel: Session Fixation

Ein komplexeres Beispiel ist Session Fixation. Das Sessionmanagement, also die Zuordnung und Beibehaltung einer Sitzung pro Nutzer, ist ebenfalls Teil dieses Themas. Sobald ein Benutzer sich authentifiziert hat, bekommt dieser eine Session zugewiesen. So kann die Anwendungen Daten zur aktuellen Sitzung (wie zum Beispiel den Warenkorb oder letzte Suchen) speichern und die Identität des Benutzers während des gesamten Besuchs der Webanwendung beibehalten. Wird diese Session über einen Parameter in der URL gespeichert, zum Beispiel mit

https://www.beispiel.de/start?phpsessionid=12345678

und dieser Wert wird schon beim ersten Aufruf der Seite gesetzt (bevor der Nutzer sich einloggt oder registriert), dann kann ein Angreifer dies ausnutzen. Der Angreifer erzeugt sich eine Session (indem er die Seite besucht, denn die Session wird direkt angelegt), schickt den Link unter einem Vorwand zu einem Opfer und sobald dieses sich registriert oder einloggt, kann der Angreifer mit der gleichen phpsessionid, die Daten des Benutzers sehen. Im Worst-Case kann der Angreifer allein mit der Session ID das Passwort zurücksetzen oder dieses auslesen.

In diesem Fall wird die Session fixiert bevor der Nutzer sich einloggt oder registriert. Deswegen Session Fixation). Es gibt viele andere Wege die Session eines anderen Benutzers zu übernehmen und die Folgen sind immer schwerwiegend!

Broken Authentication ist also ein sehr komplexes Thema mit vielen Überschneidungen zu anderen OWASP Top 10 Themen (so zum Beispiel auch Injection), aber der Kern liegt darin, dass die Authentifizierung irgendwie durch einen Angreifer umgangen oder umfunktioniert werden kann.


2 Kommentare

OWASP Top 10 – Maxanit Consulting · Juni 27, 2020 um 12:00 pm

[…] Broken Authentication […]

Überblick Bug-Bounty-Artikel – Maxanit Consulting · Juli 12, 2020 um 12:40 pm

[…] Broken Authentication […]

Schreibe einen Kommentar zu Überblick Bug-Bounty-Artikel – Maxanit Consulting Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.