Sie sind hier: HomeThemenSmart Automation / IoTSonstige

Veracode-Tips: Die vier gefährlichsten Authentifizierungs-Schwachstellen

Authentifizierungsprozesse, die Dreh- und Angelpunkt von der Sicherheit von Web-, Mobil- und anderen Anwendungen, weisen in Penetrationtests verschiedene Schwachstellen auf. Im Folgenden werden die vier häufigsten beschrieben.

Hacker, Maske Bildquelle: © Gerd Altmann | Pixabay

Das Unternehmen Veracode fand in neun von 10 Anwendungen wenigstens eine der folgenden Schwachstellen; sie stellen die häufigsten, aber für Entwickler auch am einfachsten abzustellenden Einfallstore für Angreifer bei Authentifizierungsprozessen dar.

1. Schwache Passwortregeln

Überraschenderweise finden sich immer noch etliche Anwendungen und Websites, die schwache Passwörter zulassen. Dies rührt daher, dass Entwickler versuchen, die richtige Balance zwischen Sicherheit und Nutzerfreundlichkeit zu finden. Bei einer Mindestlänge von nur fünf Zeichen wird der Passwortsicherheit allerdings eindeutig zu wenig Wert zugeschrieben. Im Endeffekt führt dies dazu, dass viele Endnutzer weiterhin Passwörter wie „123456“ oder „Passwort“ benutzen. Dadurch erhalten Angreifer Zugang zu den Benutzerkonten und viele Datenpannen von Unternehmen lassen sich oft auf ein genau solches Passwort zurückführen. Entwickler sollten also sicherstellen, dass Passwörter mindestens acht Zeichen haben müssen, alphanumerische Zeichen enthalten, eine Mischung aus Groß- und Kleinbuchstaben vorweisen und weder den Benutzernamen noch den Firmennamen beinhalten dürfen. Um kompromittierte Passwörter zu erkennen, können Entwickler beispielweise die API von haveibeenpwned einsetzen. https://haveibeenpwned.com/API/Consumers

2. Fehlende Zwei-Faktor-Authentifizierung 

Zwei-Faktor-Authentifizierung (2FA) ist mittlerweile eine der wichtigsten Applikations-Sicherheitsmaßnahmen und wird trotzdem von vielen Entwicklern nicht genutzt. 2FA kann auf vielen verschiedenen Wegen implementiert werden: RSA Tokens, Code-Generatoren wie der Google Authenticator oder einmalige Codes, die per SMS an den Endnutzer geschickt werden. Kompliziert wird es nur dann, wenn sich sowohl Nutzer mit Admin-Rechten als auch Nutzer ohne Admin-Rechte mit der gleichen Authentifizierungsmethode in die Anwendung einloggen. Für Anwendungen dieser Art reicht eine herkömmliche 2FA oft nicht aus. Es empfiehlt sich administrative Funktionen, wie zum Beispiel Benutzerkontenverwaltung, über eine separate Anwendung laufen zu lassen, die mit einer noch stärkeren Authentifizierungsmethode gesichert ist.

3. Mangelende Vorkehrungen gegen User Enumeration 

Bei fehlerhaften Login-Versuchen liefern Anwendungen oft Fehlermeldungen wie „Benutzername existiert nicht“ oder „Ungültiges Passwort“. User Enumeration beschreibt die systematische Ausnutzung dieses Umstands. Denn die Fehlermeldungen enthalten Informationen, die Rückschlüsse darüber erlauben, ob ein Konto mit dem entsprechenden Username existiert oder nicht. Und somit ist der Angreifer seinem Ziel einen Schritt näher. Vermeiden lässt sich User Enumeration, indem Entwickler anstatt unterschiedlicher Fehlermeldungen nur eine einzige generische einführen, wie zum Beispiel „Falls unser System Ihren Account gefunden hat, erhalten Sie in Kürze eine E-Mail“. 

4. Mangelnde Verschlüsselung bei Passwort-Resets 

Auch beim Zurücksetzen von Passwörtern können Schwachstellen entstehen. Die zwei Hauptgründe hierfür sind schwache Security-Tokens und die Tatsache, dass viele Anwendungen das Passwort per E-Mail an den Endnutzer schicken. Entwickler sind sich oft nicht im Klaren, dass Base64 Kodierung nicht automatisch auch Verschlüsselung gewährleistet. Wird also beim Vorgang des Passwort-Resets ein Security-Token eingesetzt, das auf Base64 basiert, kann dieses relativ einfach entschlüsselt werden. Im zweiten Schritt können Cyberkriminelle dann durch das Hinzufügen einer neuen E-Mail-Adresse das Passwort des Endnutzers ändern und sich somit Zugang zum Account verschaffen.

Eine weitere Schwachstelle kann durch das Versenden von Passwörtern an Endnutzer via E-Mail entstehen. Vertrauliche Daten per E-Mail zu schicken, birgt ein extrem hohes Risiko. Passwörter könnten dadurch ohne angemessene Verschlüsselung, beispielsweise durch „Salting“ oder „Hashing“, für Eindringlinge leicht zugänglich in den Datenbanken gespeichert werden. Die meisten Frameworks verfügen heutzutage über integrierte Funktionen, die bereits auf Sicherheit geprüft wurden. Entwickler sollten also generell die bereits im Framework bestehenden Funktionen einsetzen, anstatt eigene Passwort-Reset Funktionen zu programmieren.

Generell sollten Entwickler also im ersten Schritt sicherstellen, dass sie die beschriebenen vier häufigsten Schwachstellen prüfen und gegebenenfalls so gut es geht beheben, bevor es zum Penetrationstest kommt. In den meisten Fällen gelingt dies auch ohne großen Aufwand, sodass den Entwicklerteams mehr Zeit für die Bearbeitung komplexerer Schwachstellen bleibt.