OWASP07 - Authentication
OWASP07 I Fehler bei der Identifizierung und Authentifizierung
Einführung:
Anwendungsfunktionen im Zusammenhang mit der Authentifizierung und dem Session-Management sind häufig falsch implementiert, so dass Angreifer Passwörter, Schlüssel oder Session-Tokens kompromittieren oder andere Fehler in der Implementierung ausnutzen können, um vorübergehend oder dauerhaft die Identität von Benutzern zu übernehmen. Unter Ausnutzung dieser Schwachstelle kann ein Angreifer Benutzersitzungen übernehmen und auf Informationen zugreifen oder diese ändern, für die er keine Berechtigung hat. Früher war diese Kategorie an der zweiten Position unter dem Namen „Broken Authentication“ zu finden, heute ist es an der siebten Position und umfasst die Fehler bei der Authentifizierung und die „Common Weakness Enumerations“ (CWEs) im Zusammenhang mit Identifikationsfehlern.
Besondere CWEs sind:
- CWE-297: Unsachgemäße Validierung eines Zertifikats mit Host-Fehlanpassung
- CWE-287: Unzulässige Authentifizierung
- CWE-384: Sitzungsfixierung
Schwachstellen:
Für den Schutz vor authentifizierungsbezogenen Angriffen, sind die Authentifizierung und die Bestätigung der Identität des Benutzers entscheidend. Schwachstellen von Anwendungen für solche Angriffe können sein:
-
Standardpasswörter bzw. schwache oder bekannte Passwörter beispielsweise: 123456, password oder 123456789
-
Fehlende oder unwirksame Multi-Faktor-Authentifizierung
-
Brute-Force- oder andere automatisierte Angriffe
-
Die Möglichkeit ein Passwort mit „wissensbasierten Antworten“ wiederherzustellen wie zum Beispiel: “Was ist der Name deines ersten Haustieres?” oder “Auf welchem Typ von Auto hast du fahren gelernt?"
-
Die Speicherung von Passwörtern mittels schwacher Hash Funktionen wie SHA-1 oder im Klartext
-
Session-ID nicht gewechselt nach erfolgreichem Login
-
Session-ID wird nicht korrekt nach einer Abmeldung, einer festen Zeit oder Nicht-Aktivität ungültig gemacht
Wie kann man das verhindern?
Userseitige Implementierung:
- Implementieren Sie nach Möglichkeit eine Multi-Faktor-Authentifizierung, um automatisiertes Ausfüllen von Anmeldeinformationen, Brute-Force-Angriffe und die Wiederverwendung gestohlener Anmeldeinformationen zu verhindern.
- Implementieren Sie Prüfungen auf schwache Passwörter, z. B., indem Sie neue oder geänderte Passwörter mit der Liste der 10.000 schlechtesten Passwörter vergleichen.
- Schränken Sie fehlgeschlagene Anmeldeversuche ein oder verzögern Sie sie zunehmend.
- Protokollieren Sie alle Fehlversuche und alarmieren Sie die Administratoren, wenn Brute Force oder andere Angriffe entdeckt werden.
Serverseitige Implementierung:
- Session-IDs sollen nicht in der URL stehen
- Sitzungsmanager welche sicher und etabliert sind sollen zum Einsatz kommen
- Session-ID wird korrekt nach einer Abmeldung, einer festen Zeit oder Nicht-Aktivität ungültig gemacht
Beispiel-Angriffsszenarien:
Szenario 1:
Credential Stuffing, oder die Verwendung von Listen mit bekannten Kennwörtern, ist ein häufiger Angriff. Angenommen, eine Anwendung implementiert keinen automatischen Schutz vor Bedrohungen oder Credential Stuffing. In diesem Fall kann der Angreifer in der Anwendung verschiedenste Benutzerdaten durchprobieren, um festzustellen, ob die Anmeldeinformationen gültig sind.
Szenario 2:
Komplexitätsanforderungen von Passwörtern verleiten Benutzer dazu, schwache Passwörter zu verwenden und wiederzuverwenden. Die meisten Authentifizierungsangriffe erfolgen aufgrund der fortgesetzten Verwendung von Kennwörtern als einzigem Faktor. Wenn ein Angreifer von einem User ein Passwort geknackt hat, so wird der Angreifer davon ausgehen, dass der User dieses Passwort öfter verwendet und kann sich so möglicherweise bei noch mehr Accounts desselben Users authentifizieren. Unterbinden kann man dies mit einer Multi-Faktor-Authentifizierung.
Szenario 3:
Timeouts für Anwendungssitzungen sind nicht korrekt eingestellt. Ein Benutzer verwendet einen öffentlichen Computer, um auf eine Anwendung zuzugreifen. Anstatt sich abzumelden, schließt der Benutzer einfach denn Browser Tab und geht weg. Ein Angreifer verwendet denselben Browser eine Stunde später, und der Benutzer ist immer noch authentifiziert. Wäre die Timeout-Einstellung korrekt eingestellt, würde die Session nach einer Inaktivität von zehn Minuten ablaufen und das Szenario wäre womöglich nicht eingetroffen.
Wörtererklärung:
Session Token / Session ID:
Eine Session ID wird bei Anwendungen auf zustandslosen Protokollen als Identifikationsmerkmal verwendet, um mehrere zusammengehörige Anfragen eines Benutzers zu erkennen und einer Sitzung zuzuordnen. Insbesondere bei Webanwendungen finden Session IDs breite Verwendung.
CWEs:
Bei der Common Weakness Enumeration handelt es sich um ein Community-Projekt zur Auflistung verschiedener kategorisierter Schwachstellen in Soft und Hardware.
Credential Stuffing:
Ist eine Art von Cyberangriff, bei dem gestohlene Zugangsdaten, die in der Regel aus Listen von Benutzernamen und/oder E-Mail-Adressen und den dazugehörigen Passwörtern bestehen, verwendet werden, um durch groß angelegte automatisierte Anmeldeanfragen bei einer Webanwendung unbefugten Zugang zu Benutzerkonten zu erhalten.