Zum Inhalt springen
Der Guide für ein smartes Leben.
Gefälschte Zugriffe im Netz [Hintergrund]

Teil 2: Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe

Autoren: Redaktion pcmagazin und Anna Kobylinska • 2.2.2010 • ca. 2:30 Min

Statische Aufrufe verwundbar Jede Webseite, die ihre Benutzer für die Verwendung bestimmter Funktionen authentifiziert, ist verwundbar, wenn sie diese Funktionen über den Aufruf einer statischen URL, einer immer identisch ablaufenden POST-Anfrage oder einer GET-Anfrage bereitstellt. Ein auf Ih...

Statische Aufrufe verwundbar

Jede Webseite, die ihre Benutzer für die Verwendung bestimmter Funktionen authentifiziert, ist verwundbar, wenn sie diese Funktionen über den Aufruf einer statischen URL, einer immer identisch ablaufenden POST-Anfrage oder einer GET-Anfrage bereitstellt.

Ein auf Ihrer Webseite eingeloggter Benutzer kann zwischenzeitlich eine andere Webseite besuchen. Die andere Webseite kann dann (zum Beispiel mittels AJAX) $_POST-Variablen an Ihre Webseite senden und dadurch unter anderem auf geschützte Formulare zugreifen, die nur einem authentifizierten Benutzer zur Verfügung stehen. Um dies zu verhindern, müssen Sie für Ihre Webseite zusätzliche Schutzmechanismen implementieren.Tipp: Wenn Sie nicht sicher sind, ob die auf Ihrem Server verwendeten Web-Applikationen von dem Problem betroffen sind, können Sie mit einem Tool wie das kostenlose Paros für JRE 1.4 einen einfachen Test durchführen.Navigieren Sie mit Paros zu Ihrer Webseite, melden Sie sich in einen Benutzeraccount an und führen Sie einige typische Aktivitäten aus, während Sie die Kommunikation zwischen Ihrem Client und dem Server aufzeichnen.Lassen Sie dann etwas Zeit vergehen und wiederholen Sie den Test, indem Sie genau dieselben Schritte befolgen und wieder die gesamte Client-Server-Kommunikation durch Paros mitschneiden lassen.Wenn Sie dieselben Aufgaben durchführen und dabei feststellen, dass jeweils identische Anfragen ins Ziel führten, müssen Sie damit rechnen, dass Ihre Webseite mittels XSRF kompromittiert werden kann.Um Ihre Webseiten hinsichtlich der CSRF-Gefahren auf Herz und Nieren zu prüfen, können Sie außerdem OWASP CSRF Tester einspannen.

Sicherheit: Cross Site Request Forgery
Eine Web-Applikation sollte sich nie ausschließlich auf Cookies verlassen, um Zugriffe des Benutzers auf geschützte Funktionen zu autorisieren, denn dadurch würden XSRF-Attacken erst überhaupt möglich.
© Archiv

XSRF-Abwehrmaßnahmen

Webseitenbetreiber können XSRF verhindern, indem sie einige Schutzmechanismen implementieren. Der erste Schritt besteht darin, die kritischen Stellen im Ablauf einer Sitzung zu erkennen. Eine Authentifizierungsmethode, die auf die Integrität lokal auf dem Client gespeicherter Daten vertraut, lässt sich leicht aushebeln.

Um dies zu verhindern, sollten Web-Formulare über einen dynamisch errechneten geheimen Formularschlüssel verfügen, einen sogenannten Token, der in einem versteckten Formularfeld weitergereicht wird und mit den Daten der Sitzung verglichen werden kann. Ein statischer Token erfüllt den Zweck nicht.

Sollte es einem Angreifer gelingen, den Token abzufangen oder zu erraten, ließe sich der ganze darauf aufbauende Validierungsmechanismus mit einem gefälschten Formular ganz leicht außer Gefecht setzen.

Der Einsatz zufällig erzeugter Tokens zum Abschicken von GET-Anfragen gilt allerdings nicht als empfehlenswert. Der Inhalt von $_GET-Variablen kann einschließlich der verwendeten Tokens mithilfe von Malware aus dem Verlauf des Browsers extrahiert werden - clientseitig, also ohne Zugriffe auf den Server zu tätigen. Sind die Tokens hinreichend kurz, könnte die Malware den verwendeten Algorithmus mithilfe einer Brute-Force-Attacke entschlüsseln.GET-Anfragen sollten keine Daten auf dem Server verändern dürfen. Nur POST-Anfragen sind für diesen Zweck akzeptabel. Doch auch sie bieten keine XSRF-feste Lösung, denn mittels Javascript lassen sich POST-Anfragen zwischen unabhängigen Domains fälschen. Viele Applikationen können außerdem GET- und POST-Anfragen ohnehin nicht auseinanderhalten.

Sicherheit: Cross Site Request Forgery
FormularschlüsSicherheitstool für den Webbrowser wie Netcraft Toolbar oder McAfee Site Advisor sind nützlich, aber nicht ausreichend, um XSRF-Attacken clientseitig zu verhindern.
© Archiv

Seine andere Methode, die von vielen Websitebetreibern verwendet wird, besteht im Überprüfen des HTTP-Referrers. Anfragen, die eine falsche oder keine Referrer-URL aufweisen, werden abgelehnt.

Diese Methode funktioniert aber nicht zuverlässig, denn ein Angreifer mit etwas Geschick könnte auch diese Information fälschen (Spoofing mittels XMLHTTP). Eine strikte Validierung des Referrer-Headers kann außerdem bei bestimmten Webbrowsern oder Proxy-Servern, die diese Informationen unterdrücken, Probleme verursachen.

Validieren bringt Sicherheit

XSRF-Attacken können durch korrekt implementierte sitzungsabhängige Formularschlüssel verhindert werden. Mithilfe eines solchen Schlüssels kann die Web-Applikation die Berechtigung des betreffenden Benutzers zum Absenden des Formulars überprüfen. Um einen Formularschlüssel zu integrieren, gehen Sie wie folgt vor:

Schritt 1. Erstellen Sie das HTML-Formular und speichern Sie es mit Dateierweiterung .php ab, zum Beispiel Formular.php.