Session Fixation (auf Deutsch etwa: „Festlegung einer Kommunikationssitzung“) ist ein Angriff auf eine verbindungsbehaftete Datenkommunikation zwischen zwei Computern.

Modus Operandi

[Bearbeiten | Quelltext bearbeiten]

Während die Teilnehmer einer verbindungslosen Kommunikation Nachrichten ohne definierten Bezug zueinander austauschen, wird bei einer verbindungsbehafteten Kommunikation zunächst eine logische Verbindung (Sitzung, engl. Session) aufgebaut. Damit ein Rechner mehr als eine Sitzung gleichzeitig unterhalten kann, wird jede Session mit einer eindeutigen, möglichst schwer zu erratenden Session-ID identifiziert.

Um den Angriff dieses Typs durchzuführen, lässt sich der Angreifer von dem anzugreifenden System eine gültige Session-ID ausstellen und schiebt diese dem Opfer unter. Authentisiert sich das Opfer anschließend auf Basis dieser Session-ID gegenüber dem anzugreifenden System mit seinen Zugangsdaten, kann auch der Angreifer Zugriff auf dieses System erlangen, solange die von ihm vorher festgelegte Session-ID gilt. Ab diesem Zeitpunkt kann sich der Angreifer als sein Opfer ausgeben und unter dessen Rechtekontext Daten ausspähen oder verändern.

Im Gegensatz zum Session Hijacking versucht der Angreifer bei der Session-Fixation also nicht, eine bestehende Session seines Opfers zu entführen.

Techniken des Unterschiebens

[Bearbeiten | Quelltext bearbeiten]

Dieser Angriff ist am häufigsten bei der Kompromittierung von Webanwendungen anzutreffen, darum bezieht sich der folgende Abschnitt auch ausschließlich auf ein solches Szenario. Während es für den Angreifer in der Regel relativ leicht ist, an eine gültige Session-ID zu gelangen, hat er für das Unterschieben nur eine begrenzte Anzahl Möglichkeiten zur Verfügung:

URL-Manipulationen

[Bearbeiten | Quelltext bearbeiten]

Akzeptiert die Webanwendung Session-IDs als Parameter eines HTTP-GET- oder -POST-Aufrufes, kann der Angreifer dem Opfer die Session-ID mit Hilfe einer manipulierten URL unterschieben. Eine solche manipulierte URL könnte wie folgt aussehen, wobei 30fz93 hier die Session-ID wäre:

http://www.example.com/login.asp?session=30fz93

Um den Inhalt und insbesondere die Parameter der URL zu verschleiern, könnte der Angreifer auch auf einen Kurz-URL-Dienst zurückgreifen. Die URL kann dem Opfer beispielsweise per E-Mail zugesendet oder sonst wie genannt werden oder sie kann als Link oder als Ziel eines HTML-Formulars auf einer Webseite hinterlegt werden. Bei dieser Methode des Unterschiebens ist der Angreifer aber immer darauf angewiesen, dass sein Opfer die URL öffnet bzw. ein Formular absendet. Wird die manipulierte URL aber beispielsweise als Quell-URL für ein in eine Webseite oder E-Mail eingebettetes Bild verwendet, wäre selbst dies nicht notwendig. Dies kann allerdings verhindert werden, indem ein vom Browser getrennter E-Mail-Client genutzt wird.

Cross-Site-Scripting

[Bearbeiten | Quelltext bearbeiten]

Ist die zu kompromittierende Webanwendung anfällig für einen Cross-Site-Scripting-Angriff und kann der Angreifer über diese Sicherheitslücke JavaScript-Code einführen, kann er hierüber auch eine zuvor generierte Session-ID unterschieben.

Cross-Site-Cooking

[Bearbeiten | Quelltext bearbeiten]

Ist der Browser des Opfers anfällig für einen Cross-Site-Cooking-Angriff, kann der Angreifer dem Opfer ein Cookie für die zu kompromittierende Webanwendung unterschieben, falls dieses eine völlig andere Webseite besucht, über die der Angreifer Kontrolle hat.

Zugriff auf den PC des Opfers

[Bearbeiten | Quelltext bearbeiten]

Hat der Angreifer physikalischen Zugriff auf den Rechner und das Benutzerkonto seines Opfers, kann er die Session-ID direkt in dem Browser seines Opfers hinterlegen. Alternativ kann er sich auch vom Rechner seines Opfers aus eine neue Session-ID ausstellen lassen und sich merken. Obwohl es sich dann strenggenommen nicht mehr um ein Unterschieben, sondern um ein Ausspähen der Session-ID handelt, gehört auch diese Methode noch zum Angriff der Session fixation. Ein physikalischer Zugriff ist nicht notwendig, wenn der Angreifer aus der Ferne die Kontrolle über den PC erlangen kann. Dies kann entweder über eine Sicherheitslücke in anderen Anwendungen oder dem Betriebssystem, über ein Benutzerkonto mit administrativen Rechten oder über ein Trojanisches Pferd geschehen.

Gegenmaßnahmen

[Bearbeiten | Quelltext bearbeiten]

Es gibt mehrere Sicherungsmaßnahmen sowohl für den Anbieter des Webdienstes als auch für den Nutzer.

Nutzer

[Bearbeiten | Quelltext bearbeiten]

Die folgenden Maßnahmen bieten keine absolute Sicherheit gegen Angriffe durch Session Fixation, heben jedoch die technischen Hürden für Angreifer.

Dienstanbieter

[Bearbeiten | Quelltext bearbeiten]
[Bearbeiten | Quelltext bearbeiten]