Das CSRF (Cross-Site Request Forgery, deutsch seitenübergreifende Anfragenfälschung) ist eine Angriffsklasse, bei der ein Angreifer den Browser eines angemeldeten Nutzers dazu bringt, ungewollt Aktionen in einer anderen Anwendung auszuführen. Da der Browser bestehende Sitzungs-Cookies automatisch mitschickt, erscheint die Anfrage aus Sicht des Servers regulär.

CSRF-Angriffe richten sich also nicht gegen das Auslesen von Daten, sondern gegen das Auslösen von Aktionen — Überweisungen, Passwortänderungen, Profilanpassungen, das Anlegen oder Löschen von Datensätzen.

Ablauf eines Angriffs

Ein typischer CSRF-Angriff verläuft wie folgt:

  1. Der Nutzer ist bei einer Anwendung angemeldet, etwa einer Banking-Oberfläche.
  2. Er besucht parallel eine bösartige oder kompromittierte Seite.
  3. Diese Seite löst — etwa über ein verstecktes Formular oder eine Bild-Anfrage — einen Request an die Banking-Anwendung aus.
  4. Der Browser hängt die bestehenden Sitzungs-Cookies automatisch an und sendet den Request.
  5. Die Anwendung prüft die Sitzung, sieht eine angemeldete Identität und führt die Aktion aus.

Der Angreifer kennt das Sitzungs-Cookie nicht — er nutzt aus, dass der Browser es mitsendet, ohne den Kontext zu hinterfragen.

Schutzmaßnahmen

Wirksamer Schutz kombiniert mehrere Mechanismen:

  • SameSite-Cookies — der Wert Lax oder Strict verhindert, dass Sitzungs-Cookies bei seitenübergreifenden Anfragen mitgesendet werden. Die wirksamste Einzelmaßnahme.
  • CSRF-Token — die Anwendung legt für jede Sitzung oder jedes Formular ein zufälliges Token fest, das mit jedem schreibenden Request mitgeschickt werden muss. Eine fremde Seite kann dieses Token nicht erraten.
  • Origin- oder Referer-Prüfung — der Server prüft, ob der Header Origin bzw. Referer zur erwarteten Domain passt.
  • Custom-Header bei AJAX-Requests — Header wie X-Requested-With oder Content-Type: application/json lassen sich aus einfachen HTML-Formularen heraus nicht setzen, was als zusätzliche Hürde wirkt.

Abgrenzung zu XSS

XSS und CSRF werden häufig verwechselt, sind aber unterschiedlich:

  • XSS schleust Code in eine vertrauenswürdige Anwendung ein.
  • CSRF schleust Aktionen über eine fremde Anwendung in den authentifizierten Kontext eines Nutzers.

Eine durch XSS erweiterte Angriffsfläche kann viele CSRF-Schutzmechanismen aushebeln — daher gilt: XSS ist die Wurzel, CSRF ein gezielter Spezialfall, und beide brauchen eigene Gegenmaßnahmen.

/ Weiter

Zurück zu IT

Zur Übersicht