G 5.169 Unzureichendes Session-Management von Webanwendungen
Da das von Webanwendungen verwendete Protokoll HTTP zustandslos ist, wird der Benutzer der Webanwendung über die Dauer einer Sitzung mittels einer SessionID identifiziert. Kann eine dritte Person aufgrund eines unzureichenden Session-Managements die SessionID ermitteln, so kann sie die Webanwendung im Kontext dieser Sitzung verwenden. Dies hat z. B. zur Folge, dass ein Angreifer mit der Webanwendung als legitimer authentisierter Benutzer interagieren kann, ohne die eigentlichen Zugangsdaten (Benutzername, Passwort) zu kennen.
Die Funktionalität der Webanwendung kann somit von Dritten mit den Rechten des legitimen Benutzers genutzt werden, um unbefugt auf schützenswerte Daten zuzugreifen oder Befehle auszuführen.
Die folgenden Beispiele beschreiben Szenarien, die zu einer kompromittierten Sitzung führen können.
- Bei einem Session-Fixation-Angriff lässt sich ein Angreifer zunächst eine SessionID von der Webanwendung zuweisen und übermittelt diese dem Opfer (z. B. über einen Link in einer E-Mail). Folgt das Opfer diesem Link und authentisiert sich anschließend gegenüber der Webanwendung mit der vom Angreifer übermittelten SessionID, so kann der Angreifer die Anwendung anschließend mit der ihm bekannten SessionID verwenden. Auf diese Weise ist es ihm möglich, im Sicherheitskontext des angegriffenen Benutzers auf die Webanwendung zuzugreifen und so Funktionen zu nutzen, die einem unauthentisierten Nutzer nicht zur Verfügung stehen.
- Im Falle eines Session-Hijacking-Angriffs (Sitzungsübernahme) ist das Opfer bereits an der Webanwendung mit einer gültigen SessionID angemeldet. Wird die SessionID von der Webanwendung nicht zufällig gewählt (z. B. einfaches Inkrementieren eines Zählers bei der Vergabe von SessionIDs) kann ein Angreifer gültige SessionIDs durch gezieltes Ausprobieren erraten und die entsprechenden Sitzungen der angemeldeten Benutzer übernehmen.
- Werden Sitzungen von inaktiven Benutzern einer Webanwendung nicht automatisch nach einem bestimmten Zeitintervall ungültig (Session Timeout), bleiben die Sitzungen von nicht ordnungsgemäß von der Anwendung abgemeldeten Benutzern (z. B. durch Browser-Schließung) weiterhin gültig. Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Webanwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.