Teil 2: Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe
- Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe
- Teil 2: Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe
- Teil 3: Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe
- Teil 4: Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe
- Teil 5: Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe
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.

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.

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.