![]() |
|
URL dieser Newsmeldung:
08.05.2008
About Security #154: Schwachstellen-Suche: Der Referer-HeaderDie Suche nach Schwachstellen in Webanwendungen ist noch lange nicht
beendet. Diesmal erfahren Sie, wie sicher die Nutzung des Referer-Headers
zur Verhinderung von URL-Jumping ist und wie Sie eine Webanwendung vor
solchen Angriffen schützen können.
Der Referer-HeaderEin HTTP-Request für eine Seite aus dem in About Security #153 eingeführten Beispiel könnte folgendermaßen aussehen:
Bedeutung der Header-Felder
Die Header-Felder haben folgende Bedeutung: Über die GET-Methode wird
die Seite
Wäre der Benutzer z.B. über Google zur angeforderten Seite
gekommen, könnte der Referer-Header wie folgt aussehen: N E U ! Security aktuell Der Referer-Header wird vom Webbrowser automatisch gesetzt, ist aber nicht immer vorhanden: Stammt der Link aus den Bookmarks oder wurde er direkt in die Adresszeile eingegeben, gibt es keinen Referer und damit auch keinen entsprechenden Header-Eintrag. HTTP-Request- und -Response-Header können Sie sich z.B. beim Web-Sniffer ansehen. Woher kommst Du?
Wenn man wissen möchte, ob ein Benutzer vor dem Aufruf einer Seite auf
einer bestimmten anderen Seite war, bietet sich auf den ersten Blick die
Prüfung des Referer-Headers an: War der Benutzer vor dem Aufruf von
Beim Aufruf einer Seite Wirklich?Soweit, so gut. Dieser Ansatz funktioniert so lange, wie der Referer-Header den korrekten Wert enthält. Das ist aber nicht zwingend der Fall. Manche Browser senden den Referer-Header aus Datenschutzgründen nicht mit, und auch Proxies können ihn aus demselben Grund aus dem Request löschen. Noch kritischer sind Manipulationen durch einen Angreifer. Da der Referer-Header vom Webbrowser gesetzt wird, kann er vom Angreifer nicht einfach im Browser oder der herunter geladenen Seite manipuliert werden. Während der Übertragung ist er jedoch ungeschützt und kann z.B. in einem Proxy wie Paros manipuliert werden. Außerdem kann der Angreifer jederzeit einen eigenen Client verwenden, der die Header nach seinen Vorgaben setzt. Im Rahmen von CSRF-Angriffen ist auch die Manipulation der Header über Flash (Korrektur) oder XMLHttpRequests bekannt, siehe auch About Security #128. Der Referer-Header ist also ebenfalls keine gute Wahl, wenn die zuvor besuchte Seite ermittelt werden soll. URL-Jumping verhindernUm URL-Jumping zu verhindern, muss die Reihenfolge der Seitenaufrufe überprüft werden. Dazu muss die jeweils zuvor besuchte Seite gespeichert werden. Wie in About Security #153 und oben zu sehen war, ist der Client dafür nicht geeignet: Ein Angreifer kann alle dort gespeicherten Informationen mit mehr oder weniger viel Aufwand nach Belieben manipulieren. Daher muss die Information, welche Seite ein Benutzer zuletzt besucht hat, auf dem Server gespeichert werden. Kann oder soll die zuletzt besuchte Seite nicht auf dem Server gespeichert werden, ist die Prüfung des Referer-Headers die beste der verfügbaren Möglichkeiten. Der Parameter ist zwar nicht sicherer als die anderen, aber unauffälliger. Wenn die Webanwendung einen Cookie setzt oder einen Parameter in einem Formular oder der URL überträgt, ist das immer ein Hinweis darauf, das irgend etwas für den Angreifer interessantes damit passiert. Der Referer-Header wird jedoch automatisch mit jedem Request mitgeschickt. Ob er von der Webanwendung ausgewertet wird oder nicht, ist für den Angreifer nicht direkt ersichtlich. Das ist aber keine Garantie dafür, das ein Angreifer die Schutzfunktion nicht trotzdem erkennt und umgeht. Identifikation des BenutzersHier wie auch bei vielen zuvor besprochenen Angriffen müssen als Gegenmaßahme Informationen auf dem Server statt auf dem Client gespeichert werden. Das ist relativ einfach zu realisieren: Für jeden Benutzer werden die entsprechenden Informationen temporär im Programm oder auch längerfristig in einer Datei oder Datenbank gespeichert. Das führt zu neuen Fragen: Wie erkennt bzw. unterscheidet man die Benutzer, und ergibt das neue Angriffspunkte? Die Antworten auf diese Fragen erhalten 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! |
||
|