Definition
Cross-Site Request Forgery (CSRF) ist eine Art von Angriff, bei dem ein Angreifer den Browser eines authentifizierten Nutzers dazu bringt, ungewollte Aktionen auf einer Webanwendung auszuführen, in der der Nutzer eingeloggt ist. Dies geschieht in der Regel ohne das Wissen oder die Zustimmung des Nutzers und kann zu unerwünschten Änderungen oder Datenverlust führen.
CSRF-Angriffe nutzen die Vertrauensstellung zwischen einem Webbrowser und einer Website aus. Wenn ein Nutzer bei einer Anwendung angemeldet ist, werden in der Regel Cookies verwendet, um die Sitzung aufrechtzuerhalten. Ein Angreifer kann diese Cookies missbrauchen, um im Namen des Nutzers Aktionen durchzuführen.
Was bedeutet das für Ihr Unternehmen?
Ein CSRF-Angriff kann dazu führen, dass ein angemeldeter Mitarbeiter unbemerkt eine Bestellung auslöst, Zugangsdaten ändert oder Daten löscht, nur weil er nebenbei eine präparierte Seite geöffnet hat. Moderne Frameworks wie Laravel bringen den Schutz mit, er wird aber in eigenen Schnittstellen oder bei schnellen Erweiterungen gelegentlich abgeschaltet. Ein Sicherheits-Check Ihrer Anwendung sollte deshalb prüfen, ob alle Formulare und ändernden Anfragen abgesichert sind.
Hintergrund
Der Begriff CSRF wurde in den frühen 2000er Jahren populär, als Sicherheitsforscher begannen, die Schwachstellen von Webanwendungen zu analysieren. Die Angriffe wurden schnell zu einem ernsthaften Sicherheitsproblem, da viele Webanwendungen nicht über ausreichende Schutzmechanismen verfügten.
Die Bezeichnung Cross-Site Request Forgery wurde 2001 geprägt, das zugrunde liegende Problem war schon zuvor bekannt. Seitdem haben sich zahlreiche Techniken zur Durchführung von CSRF-Angriffen entwickelt, während gleichzeitig Sicherheitspraktiken zur Abwehr solcher Angriffe verbessert wurden.
Funktionsweise
Ein CSRF-Angriff erfolgt typischerweise, indem ein Angreifer einen Link oder ein Skript erstellt, das eine Anfrage an eine Webanwendung sendet, bei der das Opfer angemeldet ist. Wenn das Opfer auf diesen Link klickt oder das Skript ausführt, wird die Anfrage im Kontext der aktiven Sitzung des Nutzers gesendet.
Ein Beispiel für einen CSRF-Angriff könnte eine gefälschte Überweisungsanfrage an eine Bank sein. Wenn ein Nutzer bei seiner Bank eingeloggt ist und gleichzeitig eine bösartige Webseite besucht, könnte der Angreifer eine Überweisung an sein eigenes Konto initiieren, ohne dass der Nutzer dies bemerkt.
Schutzmaßnahmen
Um sich gegen CSRF-Angriffe zu schützen, implementieren viele Webanwendungen verschiedene Sicherheitsmaßnahmen. Eine gängige Methode ist die Verwendung von CSRF-Tokens, die bei jeder Anfrage an den Server gesendet werden müssen. Diese Tokens sind einzigartig und werden für jede Sitzung generiert, wodurch sichergestellt wird, dass nur legitime Anfragen akzeptiert werden.
Zusätzlich können Sicherheitsmechanismen wie die Überprüfung des HTTP-Referers oder die Verwendung von SameSite-Cookies eingesetzt werden. Diese Maßnahmen helfen, die Wahrscheinlichkeit eines erfolgreichen CSRF-Angriffs zu verringern, indem sie sicherstellen, dass Anfragen nur aus vertrauenswürdigen Quellen stammen.
Abgrenzung zu verwandten Begriffen
CSRF wird häufig mit Cross-Site Scripting (XSS) verwechselt, einem anderen Angriffstyp, der es Angreifern ermöglicht, schadhafter Code in eine Webseite einzuschleusen. Während CSRF darauf abzielt, unautorisierte Aktionen im Namen eines Nutzers durchzuführen, zielt XSS darauf ab, Informationen zu stehlen oder die Kontrolle über die Sitzung eines Nutzers zu übernehmen.
Ein weiterer verwandter Begriff ist Clickjacking, bei dem ein Angreifer eine Webseite so manipuliert, dass der Nutzer unwissentlich auf einen unsichtbaren Button klickt. Obwohl die Techniken unterschiedlich sind, teilen diese Angriffe das Ziel, die Interaktion des Nutzers zu manipulieren, um unautorisierte Aktionen durchzuführen.