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

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

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

Wurde eine POST-Anfrage verschickt, wird der Formularschlüssel mittels $formKey->validieren() validiert. Falls als Rückgabewert false zurückgeliefert wird, ist der Schlüssel ungültig und es wird eine Fehlermeldung ausgegeben. Sollte als Rückgabewert true zurückgeliefert werden, ist alles i...

Wurde eine POST-Anfrage verschickt, wird der Formularschlüssel mittels $formKey->validieren() validiert. Falls als Rückgabewert false zurückgeliefert wird, ist der Schlüssel ungültig und es wird eine Fehlermeldung ausgegeben. Sollte als Rückgabewert true zurückgeliefert werden, ist alles in Ordnung, die Validierung des Formularschlüssels ist abgeschlossen.Das Resultat der Validierung speichert die Variable $statusmeldung. Nun müssen Sie in Ihrem HTML-Quelltext nur noch folgenden Schnipsel platzieren, um die Statusmeldung anzuzeigen:

Sicherheit: Cross Site Request Forgery
Erst die Implementierung dynamisch erzeugter, geheimer Formularschlüssel schützt Benutzeraccounts vor XSRF-Attacken.
© Archiv
<div><?php if
($statusmeldung) { echo($statusmeldung); } ?></div>

Ein so gesichertes Formular ist nun gegen XSRF-Angriffe gewappnet: Ein Angreifer kann sich nicht mehr mit der Identität eines angemeldeten Benutzers ausweisen, weil er über den Token nicht verfügt und diesen auch auf keine Weise erraten oder auf sonstige Weise ermitteln kann.

Unabhängig davon muss noch der eigentliche Formularinhalt validiert und bereinigt werden. Wie Sie das bewerkstelligen, hängt von dem Aufbau des Formulars ab.

Fazit

Cross Site Request Forgeries haben viele Namen, aber nur ein Geheimnis: gefälschte Anfragen. Der Angreifer tarnt sich gegenüber der anzugreifenden Web-Applikation als ein bereits authentifizierter und daher vertrauenswürdiger Benutzer.

Weder Firewalls noch Sicherheitszertifikate können diese Attacke verhindern. Um XSRF wirksam zu unterbinden, gilt es, dynamische Formularschlüssel zu implementieren, die anhand der Variable der zugehörigen Sitzung validiert werden.Mit jeder Anfrage sollte ein eigener, zufällig erzeugter Formularschlüssel gesendet werden, der eine beschränkte Gültigkeit besitzt. Solange diese Voraussetzung nicht erfüllt ist, kann von einem sicheren Formular nicht die Rede sein.

Abwehrmaßnahmen im Überblick

Als Webseitenbetreiber können Ihre Webseiten vor CSRF-Angriffen schützen, indem Sie folgende Maßnahmen ergreifen:

1. Führen Sie eine zusätzliche, sekundäre Methode zum Identifizieren eines zuvor authentifizierten Benutzers ein, wie zum Beispiel einen Token (Formularschlüssel), dessen Wert ein Angreifer weder erraten noch errechnen kann. 2. Vertrauen Sie nie ausschließlich auf die Integrität von Daten, die über eine längere Zeit clientseitig aufbewahrt werden, wie zum Beispiel ein Cookie. 3. Verifizieren Sie die Cookies eines Web-Besuchers zusätzlich mittels Javascript. 4. Sie können zumindest in einigen Fällen den HTTP-Referrer überprüfen. 5. Führen Sie zusätzliche Abfragen ein, etwa im Stil "Stimmen Sie dem Abschicken dieses Überweisungsformulars zu? Ja/Nein". 6. Nutzen Sie ein zusätzliches Formularfeld zur erneuten Passworteingabe ("Bitte tragen Sie Ihr Passwort erneut ein, um den Vorgang auszulösen"). 7. Platzieren Sie die Schaltfläche zum Abmelden aus dem System an einer möglichst prominenten Stelle auf der Webseite, um sicherzustellen, dass sie von Ihren Benutzern auf jeden Fall zur Kenntnis genommen und möglichst immer genutzt wird.

Das gefürchtete X-Duo: XSS und XSRF

Wenn Hacker die Sicherheitsmaßnahmen gegen XSRF nicht umgehen können, behelfen sie sich oft mit XSS (Cross Site Scripting). Während XSRF das Vertrauen der Web-Applikation in einen authentifizierten Benutzer missbraucht, wird bei XSS der Benutzer hinters Licht geführt, indem er sich auf die Integrität einer vertrauenswürdigen Webseite verlässt und dort mit bösartigem Code begrüßt wird. Sicherheitsmaßnahmen, die Sie gegen XSRF-Attacken ergreifen können, schützen Ihren Server leider nicht vor XSS.