Sonntag, 12. Februar 2012 |
Wie kann das in About Security #155 vorgestellte Session Hijacking verhindert werden? Um mögliche Gegenmaßnahmen entwickeln zu können, müssen zuerst die möglichen Angriffe bekannt sein. In diesem Fall lautet die entscheidende Frage: Wie gelangt ein Angreifer an Session IDs? Ist das bekannt, können diese Möglichkeiten der Reihe nach versperrt oder zumindest erschwert werden.
Um eine Session ID auszuspähen oder zu ermitteln, hat der Angreifer mehrere Möglichkeiten:
N E U ! Security
aktuell
Täglich aktuelle Security-Infos!
Da man den Angreifer nicht davon abhalten kann, statt seiner eigenen eine andere Session ID an den Webserver zu senden, muss verhindert werden, dass er überhaupt an eine andere, gültige Session ID gelangt. Für die oben vorgestellten Angriffe gibt es die folgenden Gegenmaßnahmen:
Wird eine Session nicht ausschließlich über die Session ID, sondern zusätzlich über die IP-Adresse des Benutzers identifiziert, erschwert dies das Session Hijacking. Jedoch sollte man dabei berücksichtigen, dass manche Internetprovider mehrere Proxies verwenden, sodass sich die IP-Adresse durchaus auch bei einer normalen Benutzung zwischendurch ändern kann. Und wird nur ein Proxy verwendet, haben viele Benutzer die gleiche IP-Adresse, können sich also untereinander die Sessions entführen, ohne dass die zusätzliche Schutzfunktion es bemerkt.
Statt der IP-Adresse könnte auch z.B. der User Agent Header des Browsers des Benutzers als zusätzliches Erkennungsmerkmal dienen. Den kann der Angreifer aber bei Bedarf nach seinen Vorstellungen manipulieren. Hat er also erst einmal erkannt, dass eine Session außer an die Session ID auch an den User Agent Header gebunden ist, kann er sie wieder entführen. Da er dafür aber auch den User Agent Header des Benutzers ermitteln muss, wird der Angriff schwieriger.
Um die Folgen von Session Hijacking zu minimieren, sollten Sessions nach einer bestimmten Zeit beendet und die zugehörigen Session IDs für ungültig erklärt werden. Damit steigt die Wahrscheinlichkeit, dass ein Angreifer eine inzwischen ungültige Session ID ausspäht. Dabei sollte es sowohl ein hartes Timeout (nach einer bestimmten festen Zeitdauer wird die Session beendet) als auch ein weiches Timeout (nach einer bestimmten Zeit der Inaktivität wird die Session beendet) geben. Außerdem sollten die Benutzer immer die Möglichkeit haben, ihre Session selbst zu beenden, z.B. indem sie sich ausloggen.
Statt die Session ID eines Benutzers auszuspähen, kann ein Angreifer ihm auch seine eigene Session ID unterschieben und authentifizieren lassen. Ein solcher Angriff wird als Session Fixation bezeichnet. Wie so ein Angriff funktioniert und wie Sie ihn verhindern können, erfahren Sie in der nächsten Folge.
Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!
About Security – Übersicht zum aktuellen Thema "Schwachstellensuche – II. Zustandsbasierte Angriffe"