CSRF oder Cross-Site Request Forgery ist eine Website-Sicherheitslücke, bei der ein Angreifer eine Aktion in der Sitzung eines Opfers auf einer anderen Website auslösen kann. Eines der Dinge, die CSRF zu einem so großen Risiko machen, ist, dass es nicht einmal eine Benutzerinteraktion erfordert. Das Opfer muss lediglich eine Webseite mit dem Exploit anzeigen.
Tipp: CSRF wird in der Regel entweder Buchstabe für Buchstabe oder als „Meeresbrandung“ ausgesprochen.
Wie funktioniert ein CSRF-Angriff?
Der Angriff beinhaltet, dass der Angreifer eine Website erstellt, die eine Methode zum Senden einer Anforderung an eine andere Website verwendet. Dies könnte eine Benutzerinteraktion erfordern, beispielsweise das Drücken einer Taste, aber es könnte auch interaktionslos sein. In JavaScript gibt es Möglichkeiten, eine Aktion automatisch auszuführen. Zum Beispiel ist ein Bild mit null mal null Pixeln für den Benutzer nicht sichtbar, kann jedoch so konfiguriert werden, dass seine „src“ eine Anfrage an eine andere Website sendet.
JavaScript ist eine clientseitige Sprache, das bedeutet, dass JavaScript-Code im Browser und nicht auf dem Webserver ausgeführt wird. Dank dieser Tatsache ist der Computer, der die CSRF-Anfrage stellt, tatsächlich der des Opfers. Leider bedeutet dies, dass die Anfrage mit allen Berechtigungen erfolgt, die der Benutzer hat. Sobald die angreifende Website das Opfer dazu verleitet hat, die CSRF-Anfrage zu stellen, ist die Anfrage im Wesentlichen nicht von dem Benutzer zu unterscheiden, der die Anfrage normal stellt.
CSRF ist ein Beispiel für einen „verwirrten stellvertretenden Angriff“ gegen den Webbrowser, da der Browser von einem Angreifer ohne diese Berechtigungen dazu gebracht wird, seine Berechtigungen zu verwenden. Diese Berechtigungen sind Ihre Sitzungs- und Authentifizierungstoken für die Zielwebsite. Ihr Browser fügt diese Details automatisch in jede Anfrage ein, die er stellt.
CSRF-Angriffe sind etwas kompliziert zu arrangieren. Zunächst muss die Zielwebsite ein Formular oder eine URL haben, die Nebenwirkungen wie das Löschen Ihres Kontos hat. Der Angreifer muss dann eine Anfrage erstellen, um die gewünschte Aktion auszuführen. Schließlich muss der Angreifer das Opfer dazu bringen, eine Webseite mit dem Exploit zu laden, während es auf der Zielwebsite angemeldet ist.
Um CSRF-Probleme zu vermeiden, ist das Beste, was Sie tun können, ein CSRF-Token hinzuzufügen. Ein CSRF-Token ist eine zufällig generierte Zeichenfolge, die als Cookie gesetzt wird. Der Wert muss in jeder Antwort neben einem Anforderungsheader enthalten sein, der den Wert enthält. Während ein CSRF-Angriff das Cookie enthalten kann, ist es nicht möglich, den Wert des CSRF-Tokens zu bestimmen, um den Header zu setzen, und so wird der Angriff abgewiesen.