www.wikidata.de-de.nina.az
Eine Cross Site Request Forgery meist CSRF oder XSRF abgekurzt deutsch etwa Website ubergreifende Anfragenfalschung ist ein Angriff auf ein Computersystem bei dem der Angreifer eine Transaktion in einer Webanwendung durchfuhrt Dies geschieht nicht direkt sondern der Angreifer bedient sich dazu eines Opfers das bei einer Webanwendung bereits angemeldet sein muss Dem Webbrowser des Opfers wird ohne dessen Wissen eine HTTP Anfrage untergeschoben Der Angreifer wahlt die Anfrage so dass bei deren Aufruf die Webanwendung die vom Angreifer gewunschte Aktion ausfuhrt Das Sicherheitsproblem ist auf die Zustandslosigkeit von HTTP zuruckzufuhren da nach einmaliger Authentifizierung der Browser implizit jedes Mal seine Sitzungsdaten an den Server sendet Trifft die Webanwendung keine Massnahmen gegen CSRF Angriffe ist sie verwundbar Wahrend sich CSRF auf jede Form der Datenanderung mittels HTTP Anfrage bezieht ist bei Session Riding die Manipulation der Daten mittels einer gultigen Session des Opfers gemeint Session Riding ist ein Spezialfall von CSRF mit der Bedingung dass der Sitzungsbezeichner mittels Basic Digest Authentication oder Cookie transportiert wird Im Artikel hier wird vereinfacht vom Cookie gesprochen wenn eine Sitzung insbesondere ein Sitzungsbezeichner gemeint ist CSRF tritt jedoch nicht nur bei HTTP Form basierter sondern auch bei Basic bzw Digest Authentifizierung auf Inhaltsverzeichnis 1 Geschichte 2 Beispiele 3 Angriffsvektoren 3 1 Cross Site Scripting 3 2 Unterschieben der URL 3 3 Local Exploit 4 Abwehrmassnahmen 4 1 Serverseitig 4 1 1 Synchronizer Token Pattern STP 4 1 2 Cookie 4 1 3 HTTP Header 4 1 4 Behandlung von XMLHttpRequests 4 2 Clientseitig 5 Unzulangliche Abwehrmassnahmen 5 1 Nur HTTP Post akzeptieren 5 2 HTTP Referrer Prufung 6 Literatur 7 Weblinks 8 EinzelnachweiseGeschichte BearbeitenBereits im Oktober 1988 veroffentlichte Norm Hardy ein Dokument in dem er den Sachverhalt von Vertrauen auf Anwendungsebene diskutierte und diesen a Confused Deputy dt etwa einen verwirrten Stellvertreter nannte Im Jahr 2000 wurde auf der Sicherheits Mailingliste Bugtraq erortert wie ZOPE von einem confused deputy Problem betroffen war welches man heute als CSRF Sicherheitslucke einstufen wurde Spater dann im Jahr 2001 veroffentlichte Peter Watkins auf Bugtraq einen Beitrag 1 zur Diskussion The Dangers of Allowing Users to Post Images dt etwa Gefahren wenn Anwender Bilder einbinden durfen mit der er den Ausdruck Cross Site Request Forgery pragte Beispiele BearbeitenEin recht harmloses Beispiel einer CSRF ware ein Link auf der Webseite des Angreifers zu der Abmelden Funktion auf der Wikipedia http de wikipedia org w index php title Spezial Userlogout Wird einem in der Wikipedia angemeldeten Benutzer dieser Link untergeschoben sodass sein Browser diese Anfrage absetzt wird er ohne eigenes Zutun von der Wikipedia abgemeldet vorausgesetzt die Webanwendung auf Wikipedia hat keinen Schutz gegen CSRF Angriffe Schwerwiegender ware eine solche URL bei der Benutzerverwaltung einer nicht offentlichen Seite Zum Beispiel konnte der Angreifer mit http www example com admin php action new user amp name baduser amp password geheim einen neuen Benutzer anlegen und sich somit unberechtigten Zugang zu der entsprechenden Webanwendung verschaffen wenn er es schafft dem Administrator der Webanwendung diese HTTP Anfrage unterzuschieben und dieser angemeldet ist Angriffsvektoren BearbeitenDamit der Angreifer eine Cross Site Request Forgery ausfuhren kann muss er den Webbrowser des Opfers dazu bringen einen oder mehrere vom Angreifer manipulierte HTTP Anfragen auszufuhren Hierzu gibt es mehrere Angriffsvektoren Cross Site Scripting Bearbeiten Hierbei ubermittelt der Angreifer zunachst selber entsprechend gewahlten HTML Code an die Webanwendung Diese speichert den Code und fugt ihn spateren Anfragen anderer Benutzer an ohne den HTML Code zu maskieren Diese Schwachstelle bezeichnet man als Cross Site Scripting XSS Die Cross Site Request Forgery besteht darin wie der Webbrowser des Opfers mit dem HTML Code umgeht Dieser besteht beispielsweise aus einem img Tag mit dem ein Webbrowser angewiesen wird automatisch eine Grafik fur die Seite nachzuladen Anstelle der URL unter der die Grafik zu finden ist wird der Angreifer hier die manipulierte Anfrage einfugen Sobald der Webbrowser des Opfers die URL aufruft wird also die manipulierte Anfrage abgesendet und von der Webanwendung so verarbeitet als ware er vom Opfer autorisiert Anstelle eines img Tags mit einer manipulierten URL kann der Angreifer auch JavaScript Code in die Seite einbauen Damit liesse sich auch die unten beschriebene Abwehrmassnahme eines Shared Secrets unterwandern Unterschieben der URL Bearbeiten Neben der Moglichkeit den Aufruf der manipulierten URL uber Cross Site Scripting zu automatisieren kann der Angreifer auch aus einer Reihe anderer Moglichkeiten wahlen um das Opfer zum Aufruf einer manipulierten URL zu bewegen Dabei wird die URL ublicherweise entweder per E Mail an das Opfer ubermittelt oder findet sich auf einer Webseite die nicht einmal Teil der betroffenen Webanwendung zu sein braucht Im Gegensatz zum Cross Site Scripting muss der Angreifer aber je nach Gutglaubigkeit des Opfers mehr oder weniger Uberredungskunst einsetzen um das Opfer zum Aufruf der URL zu bewegen was auch als Social Engineering bezeichnet wird Dabei kann die manipulierte URL zu Tauschungszwecken entweder mittels URL Spoofing verfremdet sein oder durch einen Kurz URL Dienst verschleiert werden Wahlt der Angreifer E Mail als Medium kann er mittels E Mail Spoofing zusatzlich um das Vertrauen des Opfers werben indem er sich etwa als Administrator der betroffenen Webanwendung ausgibt Mochte der Angreifer verhindern dass das Opfer nach dem erfolgreichen Angriff von dem Vorgang erfahrt kann der Angreifer auch zunachst die URL einer eigenen Seite angeben die beispielsweise ein lustiges Bild enthalt In diese Seite wird der Angreifer dann aber einen versteckten Frame einbauen in dem dann der Aufruf der manipulierten URL stattfindet Nutzt das Opfer ein E Mail Programm das ungefragt auch in der E Mail eingebettete Bilder uber den Webbrowser aus dem Internet nachladt konnte man hiermit diese Angriffsmethode auch ausnutzen ohne auf die aktive Mitwirkung des Opfers angewiesen zu sein All diese Methoden setzen aber voraus dass der Benutzer bereits bei der betroffenen Webanwendung angemeldet ist seine Zugangsdaten in einem Cookie gespeichert hat oder der Aufforderung nachkommt sich gegenuber der Webanwendung zu authentisieren Wahrend letzterer Fall bei einem gesunden Mass an Menschenverstand eher unwahrscheinlich ist stellt insbesondere die erste Situation fur den Angreifer eine reelle Chance auf Erfolg dar da viele Webanwendungen dem Anwender anbieten seine Zugangsdaten aus Komfortgrunden in dessen Webbrowser zu speichern Local Exploit Bearbeiten Hat der Angreifer die Kontrolle uber den Computer des Opfers durch eine dort laufende Schadsoftware kann er ebenfalls eine CSRF ausfuhren Dazu muss die Schadsoftware lediglich den Browser anweisen die manipulierte URL aufzurufen was mit geringen Programmierkenntnissen keine Hurde darstellt Die Schwierigkeit bei diesem Angriff besteht vielmehr darin eine fur den Angriff geeignete Schadsoftware auf dem Computer des Opfers zu installieren Da dies aber nicht spezifisch fur den hier geschilderten Angriff ist soll hier auch nicht naher darauf eingegangen werden Abwehrmassnahmen BearbeitenJe nach Angriffsvektor ist entweder der Benutzer fur clientseitige oder der Betreiber der Webanwendung fur serverseitige Abwehrmassnahmen gegen eine Cross Site Request Forgery zustandig Serverseitig Bearbeiten Jede Transaktion der Webapplikation muss mit einer weiteren dem Browser und der Webanwendung gemeinsamen geheimen Information versehen werden Synchronizer Token Pattern STP Bearbeiten Bei STP wird ein sogenanntes Page Token meistens eine Zahl oder eine Zeichenkette in einem Hidden Field auf der Seite eingebunden lt input type hidden name csrftoken value KbyUmhTLMpYj7CD2di7JKP1P3qmLlkPt gt Ohne weitere Lucken in der Webanwendung ist dieses Hidden Field fur den Angreifer nicht auslesbar Insbesondere eine XSS Schwachstelle kann jedoch den CSRF Schutz aushebeln Letzteres gilt selbst dann wenn die XSS Schwachstelle bloss in einer anderen Anwendung auf derselben Domain existiert 2 Wie das Feld gesetzt wird ist abhangig vom verwendeten Framework Beispiel in ASP NET MVCIn ASP NET MVC werden alle Forms automatisch mit einem Hidden Field mit dem Anti CSRF Token versehen using Html BeginForm ChangePassword Manage Alternativ lasst sich dieses auch manuell setzen lt form action method post gt Html AntiForgeryToken lt form gt Zudem gibt es in ASP NET Core mit Microsoft AspNetCore Antiforgery die Moglichkeit das Token auch global zu konfigurieren services AddAntiforgery options gt options FormFieldName csrftoken options RequireSsl true Die Validierung des Tokens muss auf allen MVC Controllern bzw Methoden erfolgen welche eine Nebenwirkung besitzen Hierzu dienen drei Filter welche als Attribute auf den entsprechenden Controllern bzw Methoden gesetzt werden konnen Attribut Funktion span class na ValidateAntiForgeryToken span Validiert das CSRF Token span class na AutoValidateAntiforgeryToken span Validiert das CSRF Token fur alle HTTP Methoden ausgenommen GET HEAD OPTIONS TRACE Hierbei mussen die entsprechenden Methoden standardkonform implementiert werden span class na IgnoreAntiforgeryToken span Keine ValidierungFilter auf den Methoden uberschreiben hierbei die Filter auf den Controllern Cookie Bearbeiten Das CSRF Token kann auch in einem Cookie gespeichert werden Dieses wird im HTTP Header deklariert Set Cookie Csrf token i8XNjC4b8KVok4uw5RftR38Wgp2BFwql expires Thu 23 Jul 2017 10 25 33 GMT Max Age 31449600 Path Das Flag httpOnly ist hierbei nicht zulassig da das Token im Browser durch ein JavaScript Skript verarbeitet werden muss Bestimmte Frameworks erzwingen eine bestimmte Benennung fur das CSRF Cookie Beispielsweise muss das Token fur das http Service in Angular mit XSRF TOKEN benannt werden Anschliessend wird das Token im X XSRF TOKEN HTTP Header ubermittelt 3 Beispiel in ASP NET MVCMit Microsoft AspNetCore Antiforgery lasst sich das Cookie wie folgt setzen services AddAntiforgery options gt options CookieName Csrf Token options CookiePath options CookieDomain example com options RequireSsl true HTTP Header Bearbeiten Eine weitere Methode das Token zu ubermitteln ist der HTTP Header Hierzu wird der Header X Csrf Token verwendet Allerdings verwenden einige Frameworks auch vom Standard abweichende Header Beispiele fur Frameworks mit nicht standardisierten CSRF Header Header FrameworkX XSRF TOKEN AngularX Requested With jQueryX Requested By JerseyBeispiel in ASP NET MVCMit Microsoft AspNetCore Antiforgery lasst sich das Token im HTTP Header wie folgt setzen services AddAntiforgery options gt options HeaderName X Csrf Token options RequireSsl true Behandlung von XMLHttpRequests Bearbeiten Bei alten Browsern die XMLHttpRequests von verschiedenen Origin Domanen zulassen mussen XMLHttpRequests abgelehnt werden wenn die im Origin HTTP Header eingetragene Domane nicht Teil der zulassigen CORS Domanen ist Clientseitig Bearbeiten Der Benutzer einer Webanwendung muss sicherstellen dass sein Computer frei von Schadsoftware ist Gegen ein Programm das im Kontext des Benutzers auf dem Client ausgefuhrt wird ist jede serverseitige Abwehrmassnahme zwecklos Die folgenden Hinweise sind unnotig wenn die serverseitige Sicherheit gewahrleistet ist Da der Anwender dies aber nie sicherstellen kann werden sie der Vollstandigkeit halber mit aufgefuhrt Viele Webanwendungen wie zum Beispiel auch die Wikipedia bieten ihren Nutzern die Moglichkeit dauerhaft angemeldet zu sein Technisch wird hierbei in der Regel der in einem Cookie gespeicherte Sitzungsbezeichner am Ende einer Sitzung nicht geloscht Diese Komfortfunktion vergrossert aber auch die Angriffsflache da der Angreifer nicht mehr einen Zeitpunkt abzupassen braucht zu dem sein Opfer an der Webanwendung angemeldet ist Der Verzicht auf diese Funktion erhoht folglich die Hurden die der Angreifer nehmen muss Mochte der Angreifer eine XSS Lucke ausnutzen um die Sicherheitsvorkehrung eines Shared Secrets zu umgehen ist er darauf angewiesen dass im Browser des Opfers JavaScript oder JScript aktiviert sind Das Deaktivieren kann folglich ebenfalls die Angriffsflache verringern in der Regel nutzen aber viele Webanwendungen diese clientseitigen Skriptsprachen selber so dass dies nicht moglich ist Unzulangliche Abwehrmassnahmen BearbeitenEinige Massnahmen zur Unterbindung von CSRF Angriffen reichen nicht aus um einen hinreichenden Schutz zu gewahrleisten Sie sind bestenfalls dazu geeignet die Hurde fur den Angreifer etwas hoher zu hangen und wiegen den Betreiber einer Webanwendung schlimmstenfalls in Scheinsicherheit Nur HTTP Post akzeptieren Bearbeiten Ein CSRF Angriff kann nicht dadurch verhindert werden dass Anfragen die zu einer Veranderung von Daten fuhren nur per HTTP POST akzeptiert werden Auch per HTTP POST kann ohne weiteres eine gefalschte Anfrage abgesetzt werden Dazu erstellt der Angreifer eine Seite auf die er das Opfer lockt Dort wird die manipulierte Anfrage entweder mittels einer clientseitigen Skriptsprache wie zum Beispiel JavaScript erzeugt oder der Angreifer bringt das Opfer dazu auf einen Button oder ein Bild zu klicken wodurch die Anfrage abgesetzt wird Wahlt der Angreifer als Ziel target Parameter des Formulars einen unsichtbaren Frame oder Inlineframe sind auch hier die Chancen gering dass das Opfer den Angriff bemerkt HTTP Referrer Prufung Bearbeiten Die Prufung des HTTP Referrer Headers bietet zwar einen gewissen Schutz vor reinen CSRF Angriffen da gefalschte Anfragen die von einem Angreifer mittels Tauschung des Opfers auf einer externen Webseite ausgelost wurden zum Teil blockiert werden konnen Die Webanwendung ist jedoch gut beraten sich nicht auf den Schutz des Referrers zu verlassen Viele Browser Plugins erlauben es namlich Anfragen mit beliebigem Referrer abzusetzen z B das weit verbreitete Adobe Flash 4 in etwas alteren Versionen Ausserdem konnen Benutzer oder auch Proxy Server aus Datenschutzgrunden das Ubertragen des Referrers unterbinden oder gezielt einen anderen Wert eintragen wodurch die Web Anwendung nicht mehr allen legitimen Anwendern offensteht false positives Aus Grunden der Benutzbarkeit einer Webanwendung sollte man grundsatzlich gar nicht den Referrer Header fur eine HTTP Anfrage verwenden Literatur BearbeitenNorman Hardy The Confused Deputy or why capabilities might have been invented In ACM SIGOPS Operating Systems Review Oktober 1988 Volume 22 Issue 4 Weblinks BearbeitenCSRF Angriffe Teil 2 Schwache Gegenmassnahmen cubespotter de Juni 2017 Querschau der Risiken Heise 2010 OWASP Top 10 2017 PDF Open Web Application Security Project Cross Site Request Forgery CSRF Prevention Cheat Sheet OWASP National Vulnerability Database web site nist gov Security tips for Web developers squarefree com englisch Massnahmenkatalog und Best Practices fur die Sicherheit von Webanwendungen PDF 922 kB Bundesamt fur Sicherheit in der Informationstechnik BSI Session Angriffe eine Analyse erich kachel de CSRF Angriffe auf Router und Webanwendungen TecChannel 2009 RFC 2616 Hypertext Transfer Protocol HTTP 1 1 Juni 1999 Abschnitt 9 1 1 Safe Methods englisch The Cross site Request Forgery FAQ cgisecurity com Sverre Huseby Client Side Trojans shh thathost com Foiling Cross Site Attacks shiflett org 2003 Concerns over the name Session Riding shiflett org blog 2005Einzelnachweise Bearbeiten Peter Watkins Cross Site Request Forgeries Re The Dangers of Allowing Users to Post Images Nicht mehr online verfugbar Bugtraq 13 Juni 2001 archiviert vom Original am 9 Juli 2012 abgerufen am 26 Juli 2012 englisch Christian Schneider CSRF and Same Origin XSS 25 Februar 2012 abgerufen am 13 Dezember 2014 Guarding against Cross Site Request Forgery In Angular io Google abgerufen am 15 Mai 2017 englisch Forging HTTP Request Headers with Flash ActionScript Nicht mehr online verfugbar In securiteam com 4 Januar 2013 archiviert vom Original am 4 Januar 2013 abgerufen am 24 Januar 2022 nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www securiteam com Abgerufen von https de wikipedia org w index php title Cross Site Request Forgery amp oldid 235875073