Sicherheit bei gleichzeitigen Logins
Unbegrenzte Logins können schwerwiegende Fehler in der Geschäftslogik verbergen.
Ein Benutzer meldet sich an einem Laptop an. Sekunden später meldet sich dasselbe Konto in einem anderen Browser an. Dann auf einem Mobilgerät. Dann über einen API-Client. Alles funktioniert einwandfrei.
Das scheint unbedenklich zu sein, da viele Apps mehrere Geräte unterstützen. Aber man muss sich fragen: Sollte jede Anwendung unbegrenzte Sitzungen zulassen?
In einigen Systemen sind mehrere Sitzungen ein Feature. In anderen ist es eine Schwachstelle, die Angreifer nutzen, um unentdeckt zu bleiben. Dies ist eine Schwachstelle in der Geschäftslogik. Der Code funktioniert wie geplant, aber das Design selbst ist schwach.
Der Unterschied: • Traditionelle Bugs nutzen Programmierfehler aus. • Fehler in der Geschäftslogik nutzen Designentscheidungen aus.
Denken Sie an einen Movie-Streaming-Dienst. Wenn ein Abonnement es zehn Personen ermöglicht, gleichzeitig zu schauen, funktioniert das Login-System. Die Geschäftsregel hingegen versagt.
Dies gilt für das Bankwesen, Admin-Panels und SaaS-Produkte.
So testen Sie dies:
- Melden Sie sich über Browser A an und halten Sie die Sitzung aktiv.
- Öffnen Sie ein Inkognito-Fenster in Browser B.
- Melden Sie sich mit denselben Anmeldedaten an.
- Prüfen Sie, ob die erste Sitzung noch funktioniert.
- Prüfen Sie, ob Sie auf beiden Sitzungen sensible Aktionen durchführen können.
Apps mit hohen Sicherheitsanforderungen erzwingen oft diese Regeln:
- Eine aktive Sitzung pro Konto.
- Abmeldung alter Sitzungen, wenn ein neuer Login erfolgt.
- Kontrollen zur Verwaltung von Geräten.
- Benachrichtigungen bei neuen Logins.
Wenn ein Angreifer Anmeldedaten stiehlt, kann er ewig eingeloggt bleiben, wenn Sie unbegrenzte Sitzungen zulassen. Er bleibt aktiv, während der echte Benutzer ebenfalls aktiv bleibt. Keiner der beiden bemerkt den Eindringling.
Der Kontext ist entscheidend. Apps, die viele Sitzungen benötigen:
- Messaging-Apps.
- Soziale Medien.
- E-Mail-Dienste.
Apps, die eine strenge Kontrolle benötigen:
- Bankensysteme.
- Admin-Dashboards.
- Plattformen im Gesundheitswesen.
So beheben Sie es:
- Speichern Sie aktive Sitzungs-IDs in einer Datenbank.
- Wenn ein neuer Login erfolgt, beenden Sie die alte Sitzung.
- Ermöglichen Sie es Benutzern, aktive Geräte und Standorte einzusehen.
- Fügen Sie eine Schaltfläche „Von allen Geräten abmelden“ hinzu.
- Senden Sie E-Mail- oder SMS-Benachrichtigungen bei neuen Logins.
Suchen Sie nicht nur nach Code-Bugs wie SQL-Injection. Suchen Sie nach Lücken zwischen dem, was Ihre App tut, und dem, was Ihr Unternehmen erfordert.
Überprüfen Sie noch heute Ihre Sitzungsrichtlinien. Ihr größtes Risiko ist vielleicht kein fehlerhafter Code, sondern eine fehlerhafte Logik.