Skip to content

Angriff und Abwehr des CookieMonster

Cookies, deren 'Secure'-Flag nicht gesetzt ist, werden auch über ungeschützte HTTP-Verbindungen übertragen und können dabei ausgespäht werden. Das ist besonders für Session- oder Authentifizierungscookies fatal, da sich der Angreifer damit als der angegriffene Benutzer ausgeben kann.

Mail als Beispiel

Nehmen wir als Beispiel mal eine Webmail-Anwendung: Nachdem der Benutzer sich auf einer HTTPS-geschützten Seite angemeldet hat und erfolgreich authentifiziert wurde, wird ein Cookie gesetzt, anhand dessen er danach identifiziert wird. Wer den Cookie kennt, kann auf die Mailbox des Benutzers zugreifen. Ganz konkret ist das z.B. bei der Nutzung ungeschützter WLAN-Verbindungen ein Problem, wie David Maynor und Robert Graham bereits 2007 auf der Konferenz "Black Hat USA" gezeigt haben (Berichte von George Ou und Brian Krebs). Mike Perry hat dazu ergänzend auf der Mailingliste Bugtraq berichtet, dass die Nutzung von HTTPS entgegen der Annahme von Robert Graham nicht als Schutz vor diesen Angriffen ausreicht.

Mike Perry hat dann 2008 auf der Sicherheitskonferenz Defcon ein Tool zur Demonstration dieser Angriffe vorgestellt: Der als Man-in-the-Middle agierende Angreifer fügt "on the fly" in eine gar nicht mit der angegriffenen Website in Verbindung stehenden Webseite einen Verweis auf ein Bild oder einen iframe von der angegriffenen Seite ein. Beim Laden der so präparierten Seite lädt der Browser des Opfers dieses Bild oder diesen iframe und sendet dabei den Cookie mit, der dann vom Angreifer belauscht wird. Das für den Angriff verwendete Tool CookieMonster kann für jede beliebige Webseite verwendet werden (Detaillierte Beschreibung). Weitere Informationen gibt diese Übersicht aller Blogeinträge von Mike Perry zum Thema.

Ein Tool ist nicht genug

Parallel zu Mike Perry und unabhängig davon hat Sandro Gauci von EnableSecurity ein gleichartiges Tool entwickelt: 'Surf Jack'. Dessen Funktion wird auch in einem Video demonstriert, außerdem gibt es ein Paper (PDF) mit einer Beschreibung des Angriffs.

Gegenmaßnahmen: Einfach, und doch komplex

Die Lösung des Problems ist ganz einfach: Für den Session-Cookie muss das 'Secure'-Flag gesetzt werden. Das ist weiter kein Problem, wenn der Cookie nur von sowieso nur über HTTPS zugänglichen Seiten verwendet wird. Wird er auch auf über HTTP zugänglichen Seiten benötigt, sind größere Änderungen nötig. Entweder muss die gesamte Website auf die Nutzung von HTTPS umgestellt werden, oder bei der Erkennung der Benutzer und ihres Authentifizierungsstatus muss größerer Aufwand betrieben werden. Es bietet sich z.B. folgende Möglichkeit an:

Lösung ohne Mithilfe des Benutzers

Statt eines Session-Cookies werden zwei separate Cookies verwendet: Einer zur Erkennung des authentifizierten Benutzers, z.B. "istEingeloggt", mit gesetztem 'Secure'-Flag, und einer zur bloßen Erkennung der Session ohne 'Secure'-Flag. Fehlt der "istEingeloggt"-Cookie beim Aufruf einer HTTPS-Seite, findet ein Angriff statt; Jemand versucht, sich mit einem ausgespähten Session-Cookie anzumelden. Der Benutzer wird daher abgemeldet und muss sich neu einloggen, was einem Angreifer mangels Kenntnis der Zugangsdaten nicht möglich ist.
Durch diesen Ansatz ist der Benutzer auch auf HTTP-Seiten erkennbar und kann ggf. die HTTPS-Seiten ohne erneute Authentifizierung aufrufen. Einem Angreifer ist das nicht möglich: Da er den notwendigen Cookie mit gesetztem 'Secure'-Flag nicht kennt wird er abgemeldet.

Lösung mit Mithilfe des Benutzers

Mike Perry hat einen anderen Ansatz vorgeschlagen, der ebenfalls mit zwei Cookies arbeitet: Die Benutzer haben die Wahl zwischen der Nutzung von HTTP und HTTPS und verwenden HTTPS nur in potentiell unsicheren Umgebunden wie z.B. einem offenen WLAN. Wird die Seite einmal über HTTPS aufgerufen, wird ein Cookie, z.B. "WantsSSL", ohne 'Secure'-Flag gesetzt, während gleichzeitig für den oder die bisher ungeschützten Session- und Authentifizierungscookies das 'Secure'-Flag gesetzt wird. Wird die Seite danach über HTTP aufgerufen, wird zwar der "WantsSSL"-Cookie übertragen, nicht aber die Session- und Authentifizierungscookies. Die Anwendung erkennt dann, dass der Benutzer zwar authentifiziert ist, aber auf die HTTPS-Version umgeleitet werden muss. Der Benutzer darf erst dann wieder HTTP verwenden, wenn er sich abgemeldet hat. Ein "Downgrade" auf HTTP darf nicht möglich sein, weil das ein möglicher Angreifer erzwingen könnte.

Mike Perry hat an seinem Ansatz zwei Nachteile gefunden: Ein Angreifer kann den "WantsSSL"-Cookie löschen, so dass der Benutzer denkt, er ist abgemeldet, wenn er die HTTP-Version aufruft. Evtl. loggt er sich dann darüber ein, obwohl er sich in einer unsicheren Umgebung befindet. Und ein Benutzer, der sich in einem unsicheren Netzwerk nie über HTTPS anmeldet, behält seine Session- und Authentifizierungscookies ohne 'Secure'-Flag, so dass diese mit dem oben beschriebenen Angriff ausgespäht werden können.

Ich habe noch einen dritten Kritikpunkt: Sollte man wirklich den u.U. völlig ahnungslosen Benutzern die Entscheidung überlassen, ob die Nutzung einer Webanwendung geschützt werden muss oder nicht? In den USA währen dann wahrscheinlich einige Disclaimer-Seiten vor der Webanwendung nötig, die auf alle möglichen (und natürlich unmöglichen) unsicheren Umgebungen hinweisen, in denen besser HTTPS genutzt werden sollte. Außerdem: Wer bekommt denn die Schuld zugewiesen, wenn ein Angreifer aufgrund fehlender HTTPS-Nutzung z.B. ein E-Mail-Konto übernimmt und vertrauliche Daten daraus veröffentlicht? Natürlich ist der Benutzer Schuld, er hätte ja HTTPS nutzen können. Aber wird in der Öffentlichkeit nicht eher der Betreiber in Erklärungsnöte geraten, der HTTPS nicht erzwungen hat?

Soviel zum Thema "Sichere Nutzung von HTTPS und Cookies". Ein letzter Hinweis noch: Sofern auf die Session-Cookies nicht über JavaScript zugegriffen wird, kann zusätzlich als "Defense in depth"-Maßnahme gegen XSS-Angriffe das 'HttpOnly'-Flag gesetzt werden.

Update
Ende Oktober 2010 wurde ein Tool zum Ausspähen unsicherer Cookies veröffentlicht: Firesheep. Mehr dazu erfahren Sie hier.

In der nächsten Folge geht es um zwei miteinander verwandte Themen, die eigentlich nichts miteinander zu tun haben (auch dieser Widerspruch wird dann aufgeklärt): Neue Entwicklungen beim Binary Planting sowie die aktuell bekannt gewordene Schwachstelle im GNU-C-Loader, die das Erlangen von root-Rechten ermöglicht.

Carsten Eilers


Übersicht über alle Artikel zum Thema

HTTPS und Cookies sicher einsetzen
Angriff und Abwehr des CookieMonster
Firesheep fängt ungeschützte Cookies
Standpunkt: Firesheep - unverantwortlich oder dringend nötig?

Trackbacks

Dipl.-Inform. Carsten Eilers am : Drucksache: Entwickler Magazin 2.2014 - Die OWASP Top 10, Teil 1

Vorschau anzeigen
Im Entwickler Magazin 2.2014 ist der erste Teil eines zweiteiligen Artikels über die OWASP Top 10, die zehn gefährlichsten Schwachstellen in Webanwendungen, erschienen. Die Reihenfolge der Schwachstellen ergibt sich aus vier Faktoren

entwickler.de am : PingBack

Die Anzeige des Inhaltes dieses Trackbacks ist leider nicht möglich.

Dipl.-Inform. Carsten Eilers am : Drucksache: IT Administrator 1.16 - MitM-Angriffe auf HTTPS

Vorschau anzeigen
Im IT-Administrator Januar 2016 ist ein Artikel über Angriffe auf HTTPS-Verbindungen erschienen. HTTPS schützt eine Verbindung sowohl vor dem Abhören als auch vor Manipulationen. Aber nur, wenn sich der Angreifer nicht in die

Dipl.-Inform. Carsten Eilers am : Drucksache: PHP Magazin 2.17 - SSL&TLS: Protokolle unter Dauerbeschuss

Vorschau anzeigen
Im PHP Magazin 2.2017 ist ein Überblick über Schwachstellen in und Angriffe auf SSL/TLS erschienen. Das SSL nicht mehr ausreichend sicher ist und durch TLS in einer möglichst hohen Version ersetzt werden sollte ist seit lä

Dipl.-Inform. Carsten Eilers am : WLAN-Sicherheit 3 - Tools für WEP-Angriffe

Vorschau anzeigen
Sie haben bereits erfahren, wie WEP funktioniert und welche Schwachstellen und Angriffe es dafür gibt. In dieser Folge geht es um die Absicherung von WEP sowie Tools für die Angriffe Zur Durchführung der vorgestellten Ang

Dipl.-Inform. Carsten Eilers am : WLAN-Sicherheit 19 - WLAN-Hotspots

Vorschau anzeigen
Wie angekündigt geht es in dieser Folge um die Sicherheit von WLAN-Hotspots. Der wesentliche Unterschied zwischen einem Hotspot und dem Access Point eines normalen WLAN besteht darin, das die Hauptaufgabe eines Hotspot die Bereitstellung des Int