Cross-Site Request Forgery (CSRF, XSRF)

Was ist CSRF?

Cross-Site Request Forgery (CSRF)-Angriffe sind häufig auftretende Schwachstellen in Webanwendungen, die das Vertrauen ausnutzen, das eine Website einem Benutzer und seinem Browser bereits entgegengebracht hat. Bei einem CSRF-Angriff setzt ein Angreifer in der Regel Social-Engineering-Techniken ein, um einen authentifizierten Benutzer so zu manipulieren, dass er ohne sein Wissen oder Einverständnis bösartige Aktionen ausführt. Durch einfaches Klicken auf einen legitim erscheinenden Link in einer E-Mail oder einer Chat-Nachricht kann der Benutzer einem Angreifer unwissentlich die Möglichkeit verschaffen, seine Identität anzunehmen und Zugriffsrechte zu übernehmen.

Von diesem Moment an kann sich der Angreifer als sein Opfer ausgeben und dessen Konto nutzen, um alles Mögliche zu tun, von einem harmlosen Streich an einem ahnungslosen Benutzer bis hin zu einer illegalen Geldüberweisung, mit der das Konto des Opfers leergeräumt wird. Wenn der betroffene Benutzer ein Web-Administrator mit breiten Zugriffsrechten ist, kann ein CSRF-Angriff die gesamte Webanwendung beeinträchtigen.

Wenn er erfolgreich ist, kann ein CSRF-Angriff sowohl für das Unternehmen, das die Website betreibt, als auch für den Benutzer, der auf diese Website zugegriffen hat, schädlich sein. Solche Exploits können negative Auswirkungen auf Kundenbeziehungen haben, das Vertrauen der Kunden beschädigen und zu Betrugsfällen oder zum Diebstahl von Finanzmitteln führen. CSRF-Angriffe wurden unter anderem gegen große Dienste und Websites wie Gmail und Facebook eingesetzt.

CSRF ist auch unter einer Reihe von anderen Bezeichnungen bekannt, darunter XSRF, „Sea Surf”, Session Riding, Cross-Site Reference Forgery und feindseilige Verknüpfungen. Microsoft bezeichnet diese Art von Angriff in seinem Bedrohungsmodellierungsprozess und an vielen anderen Stellen in seiner Online-Dokumentation als One-Click-Angriff. Gemäß Kategorie A5 in der OWASP Top 10 gilt CSRF als ein Fehler.

So funktioniert Cross-Site Request Forgery (CSRF)

Wenn Benutzer versuchen, auf eine Website zuzugreifen, fügt ihr Browser im Rahmen ihrer Anfrage häufig automatisch alle mit der Website verknüpften Anmeldeinformationen ein, um den Anmeldevorgang bequemer zu machen. Zu diesen Anmeldeinformationen gehören oftmals das Sitzungs-Cookie des Benutzers, grundlegende Authentifizierungsinformationen, die IP-Adresse, die Windows Domain-Anmeldeinformationen usw. Sobald sich der Benutzer gegenüber der Website authentifiziert hat, hat die Seite jedoch keine Möglichkeit, eine gefälschte Anfrage von einer legitimen Benutzeranfrage zu unterscheiden.

Indem ein Angreifer mithilfe eines CSRF-Angriffs die Identität und den Zugang seines Opfers übernimmt, kann er einen Benutzer dazu veranlassen, unbeabsichtigte Aktionen durchzuführen. In der Regel bringt der Angreifer ein Opfer dazu, auf einen Link zu klicken, indem er eine Social-Engineering-Technik per E-Mail, Chat-Nachricht oder eine ähnliche Form der Kommunikation verwendet. Es kann passieren, dass der Benutzer dann unbemerkt in der E-Mail oder nach dem Laden einer Website-Seite, die eine spezifische Aufgaben-URL anfordert, auf bösartigen HTML- oder JavaScript-Code trifft. Die Aufgabe wird dann ausgeführt, entweder direkt oder mithilfe eines Cross-Site-Scripting-Fehlers. Oftmals bemerkt der Benutzer erst nachdem eine bösartige Aktion aufgetreten ist, dass überhaupt etwas passiert ist.

CSRF-Angriffe zielen in der Regel auf Funktionen ab, die eine Zustandsänderung auf dem Server verursachen, können jedoch auch für den Zugriff auf vertrauliche Daten verwendet werden. Nach erfolgreicher Durchführung eines CSRF-Angriffs auf das Konto des Opfers kann ein böswilliger Akteur eine Geldüberweisung einleiten, einen Artikel kaufen, ein Produkt in einen Warenkorb legen, die Kontoinformationen wie beispielsweise die Lieferadresse ändern, das Passwort ändern oder jede andere Funktion nutzen, die auf der angreifbaren Website zur Verfügung steht.

 

Gespeicherte CSRF-Fehler und ihre Auswirkungen

In einigen Fällen ist es möglich, einen CSRF-Angriff direkt auf der angegriffenen Website selbst zu speichern. Solche Schwachstellen werden als gespeicherte CSRF-Fehler bezeichnet. Ein Angreifer kann einen gespeicherten CSRF-Fehler einfach dadurch erzeugen, dass er ein IMG oder IFRAME-Tag in einem Feld speichert, das HTML akzeptiert, oder indem er einen komplexeren Cross-Site-Scripting-Angriff (XSS) ausführt. Der Samy MySpace-Wurm ist ein bekannter Fall, bei dem eine Website im großen Stil mithilfe von XSS-Techniken kompromittiert wurde.

Wenn es einem Angreifer gelingt, einen CSRF-Angriff auf der Zielseite zu speichern, kann die Wirkung noch viel schlimmer sein. Da sich in diesem Fall die Seite, die die Schadsoftware enthält, nun innerhalb der Website befindet und daher vollständig legitim erscheint, ist es wahrscheinlicher, dass das Opfer die Seite, auf der der Angriff stattfindet, ansieht und ihr vertraut, als dies bei einer beliebigen Seite im Internet der Fall wäre. Und da sich das Opfer in diesem Szenario bereits auf der Website authentifiziert hat, wird es für den Angreifer noch leichter, es mit einem CSRF-Angriff zu treffen.

Drei Tipps, um einen CSRF-Angriff zu verhindern

Es gibt mehrere Methoden, Ihr Sicherheitsprogramm für Webanwendungen zu stärken, damit Sie weniger anfällig für einen potenziellen CSRF-Angriff sind. Wie bei anderen Sicherheitsmaßnahmen für Webanwendungen besteht die beste Verteidigung darin, die Sicherheit Ihrer Webanwendungen regelmäßig zu scannen und zu testen:

Stellen Sie sicher, dass Ihre Webanwendung per CSRF geschützt ist.

Ist Ihre Webanwendung derzeit nicht mit CSRF geschützt, ist sie für diese Art des Angriffs anfälliger. Sicherheitstools für Webanwendungen können Ihnen dabei helfen, schnell zu bestimmen, ob eine solche Schwachstelle innerhalb Ihrer Webanwendung besteht und Ihnen Schritte zur Behebung dieses Problems vorschlagen.

Verwenden Sie moderne Validierungsverfahren, um CSRF zu reduzieren

Sie können dazu beitragen, die Wahrscheinlichkeit eines CSRF Angriffs zu reduzieren, indem Sie für alle Besucher Ihrer Websites moderne Validierungsverfahren implementieren, insbesondere wenn Sie eine Seite in den sozialen Medien oder eine Community-Website betreiben. CSRF-Tokens, die manchmal auch als Anti-CSRF-Tokens bezeichnet werden, da sie ja dazu dienen, CSRF-Angriffe abzuwehren, sind ein Beispiel dafür. Sie bestehen in der Regel aus einer großen, zufälligen Zahlenfolge, die sowohl für die einzelne Sitzung als auch für den Benutzer eindeutig ist, und erschweren es Angreifern, das richtige Token zu erraten, das zur Erstellung einer gültigen Anfrage erforderlich ist.

Indem Sie CSRF-Tokens in Ihre Formularübermittlungen und Side-Effect-URLs aufnehmen, können Sie besser sicherstellen, dass jede Formularübermittlung oder Anfrage mit einem authentifizierten Benutzer verbunden und vor einem potenziellen CSRF-Angriff geschützt ist. In Fällen, in denen es um hochsensible Vorgänge geht, weist OWASP darauf hin, dass Sie möglicherweise auch eines auf der Grundlage der Benutzerinteraktion basierenden Schutzes (entweder erneute Authentifizierung/einmaliges Token) sowie Token-basierte Mitigationstechniken in Erwägung ziehen sollten.

Führen Sie regelmäßige Sicherheitstests für Webanwendungen zur Identifizierung von CSRF durch

Selbst nachdem Sie eine Schwachstelle in einer Webanwendung, die einen CSRF-Angriff ermöglicht hätte, erfolgreich behoben haben, ist es immer noch möglich, dass in Zukunft Schwachstellen auftreten, wenn die Anwendung aktualisiert und Änderungen an ihrem Code vorgenommen werden. Aus diesem Grund ist es ratsam, Ihre Webanwendungen mithilfe von Sicherheitstools für Webanwendungen kontinuierlich auf mögliche Schwachstellen, die sie möglicherweise haben, zu scannen und zu testen, einschließlich Schwachstellen im Zusammenhang mit CSRF-Angriffen.

Obwohl CSRF-Angriffe nur bei Benutzern funktionieren, die derzeit auf einer Website authentifiziert sind, können diese Exploits bei Erfolg verheerende Folgen haben. Ein Angreifer, der die Identität eines Benutzers angenommen hat, kann dann eine Reihe von Aktionen ohne dessen Wissen oder Zustimmung durchführen, Geld stehlen oder Betrügereien begehen. Dadurch kann der Ruf eines Unternehmens erheblich beschädigt werden, was wiederum zu Vertrauensverlust seitens der Kunden führt, und in einigen Fällen drohen sogar Bußgelder. Durch die proaktive Implementierung eines umfassenden Anwendungssicherheitsprogramms kann Ihr Unternehmen die Wahrscheinlichkeit eines solchen Angriffs reduzieren.

Erweitern Sie mit InsightAppSec die Reichweite Ihrer Web-App-Scans

Jetzt starten

We love to give you options. 

This page is also available in English!

Switch to English Continue in German