Skip to main content

Cross-Site-Request-Forgery (CSRF)

Was ist Cross-Site-Request-Forgery?

Cross-Site-Request-Forgery, abgekürzt CSRF oder XSRF, ist eine Methode zum Angriff auf eine Website, bei dem sich ein Eindringling als legitimer und vertrauenswürdiger Benutzer tarnt. User werden ohne es zu wissen dazu gezwungen, unerwünschte Aktionen bei einer Webanwendung auszuführen. CSRF-Angriffe zielen spezifisch auf Zustandsänderungsanforderungen ab, nicht auf den Diebstahl von Daten, da der Angreifer keine Antwort auf die gefälschte Anforderung erhalten kann.

Wenn das Opfer ein normaler Benutzer ist, kann ein erfolgreicher CSRF-Angriff den Benutzer beispielsweise dazu zwingen, Geld zu überweisen, Firewall-Einstellungen zu ändern, nicht autorisierte Daten in einem Forum oder auf Facebook zu posten oder die E-Mail-Adresse zu ändern. Wenn es sich bei dem Opfer um ein Administratorkonto handelt, kann CSRF die gesamte Webanwendung gefährden.

Der Namensbestandteil “Cross-Site” bedeutet, dass der Angriff von einer anderen Webseite ausgeht, auf die der Betroffene keinen Einfluss hat. “Request-Forgery” bedeutet, es wird eine Anfrage an eine Webseite so gefälscht, dass es aussieht, als käme die Anfrage von einem legitimen User. CSRF-Angriffe sind unter einer Reihe anderer Namen bekannt, darunter Sea Surf, Session Riding, Cross-Site Reference Forgery und Hostile Linking. Microsoft bezeichnet diese Art von Angriff als One-Click-Angriff. Auf Deutsch wird Cross-Site-Request-Forgery auch als standortübergreifende Anforderungsfälschung bezeichnet.

Wie funktioniert Cross-Site-Request-Forgery?

Ein Browser sendet Anforderungen in der Regel auf zwei Arten an Webanwendungen. Er sendet entweder Daten über URL-Parameter, bei denen eine HTTP-GET-Anforderung verwendet wird, oder er sendet Daten über Formulare, bei denen HTTP-POST verwendet wird. Die Anwendung führt dann in der Regel einige Aktionen aus, zum Beispiel das Einfügen eines neuen Benutzers in eine Tabelle, das Löschen eines Forenbeitrags und andere. Ein Problem tritt auf, wenn die Webanwendung nicht prüft, ob die Anforderungen von der Anwendung selbst generiert werden. Ein Angreifer kann für einen CSRF-Angriff einen Link für eine bestimmte Aktion erstellen und an den Benutzer senden. Klickt der Benutzer dann auf den Link, wird die Aktion ausgeführt, ohne dass der Benutzer dies überhaupt bemerkt. Dies wird als Cross-Site-Request-Forgery bezeichnet.

Ein Benutzer muss also auf den Link eines Angreifers klicken oder das Formular eines Angreifers ausfüllen. Eine weitere Bedingung ist, dass der Benutzer an einer verwundbaren Website angemeldet sein muss. Heutzutage bietet fast jede Anwendung die Funktion “Angemeldet bleiben”, sodass diese leicht erfüllt wird. Ein CSRF-Angriff kann ausgeführt werden, indem die Identität eines vorhandenen Benutzers gestohlen wird und der Angreifer dann mit dieser Identität einen Webserver angreift. Ein Angreifer kann zudem einen rechtmäßigen Benutzer dazu verleiten, unwissentlich HTTP-Anforderungen zu senden, die sensible Benutzerdaten an den Eindringling zurückgeben.

Was ist der Unterschied zwischen “CSRF”, “XSS” und “XST” Angriffen?

Ein Cross-Site-Request-Forgery-Angriff ist funktional das Gegenteil eines Cross-Site-Scripting-Angriffs (XSS), bei dem der Hacker einen schädlichen Code in einen Link auf einer Website einfügt, der scheinbar aus einer vertrauenswürdigen Quelle stammt. Wenn ein Endbenutzer auf den Link klickt, wird die eingebettete Programmierung als Teil der Webanforderung des Clients übermittelt und kann auf dem Computer des Benutzers ausgeführt werden.

Ein CSRF-Angriff unterscheidet sich auch vom Cross-Site-Tracing (XST), einer ausgereiften Form von XSS. Bei einem XST-Angriff kann der Eindringling mithilfe eines einfachen clientseitigen Skripts Cookies und andere Authentifizierungsdaten abrufen. In XSS und XST ist der Endbenutzer das primäre Angriffsziel. Bei Cross-Site-Request-Forgery-Angriffen ist der Webserver das primäre Ziel, obwohl dabei oft ein nicht unerheblicher Schaden einzelnen Benutzern zugefügt wird.

Wie kann man Cross-Site-Request-Forgery Angriffe abwehren?

CSRF-Angriffe sind schwieriger abzuwehren als XSS- oder XST-Angriffe. Dies liegt zum Teil daran, dass Cross-Site-Request-Forgery-Angriffe weniger verbreitet sind und bisher weniger Beachtung fanden. Ein anderes Problem ist die Tatsache, dass es schwierig sein kann, zu bestimmen, ob eine HTTP-Anfrage von einem bestimmten Benutzer tatsächlich von diesem Benutzer stammt oder nicht. Die Anfälligkeit für Cross-Site-Request-Forgery-Angriffe hängt von den einzelnen Anwendungen und der Sicherheit des Webservers ab. Wenn die Anwendung beispielsweise schlecht implementiert ist, können Angreifer alles tun, was die Opfer des Angriffs normalerweise tun könnten.

Eine Abwehrmöglichkeit ist das Einfügen eines Synchronizer Token Pattern (STP) in eine Anforderung. Dabei handelt es sich um eine Technik, bei der ein eindeutiger und geheimer Wert für jede Anforderung von der Webanwendung erzeugt und in alle HTML-Formulare eingebettet wird. Der Token kann dann vom Server überprüft werden. Wichtig ist, dass jeder Token eindeutig und nicht vorhersagbar ist, sodass ein Angreifer mit hoher Wahrscheinlichkeit keinen korrekten Token in seine gefälschte Anforderungen einfügen kann, mit der er sich beim Server für den Cross-Site-Request-Forgery-Angriff authentifizieren will.

Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG

Cross-Site-Request-Forgery (CSRF)
Beitrag bewerten