Cross Site Request Forgery (XSRF)

Cross-Site Request Forgery (XSRF)

  • Kontext
    • Der Browsers fügt Cookies (auch zur Authentifizierung) automatisch dem Request hinzu
    • Damit ist jeder Request nach der ursprünglichen Authentifizierung automatisch authentifiziert, ohne das Zutun des Benutzers
    • Bei X.509 wird das Client-Zertifikat sogar automatisch ohne jedes Zutun des Benutzers gesendet und vom Server zur Authentifizierung verwendet
  • Schwachstelle
    • Keine besondere Schwachstelle erforderlich
  • Angriff
    • Angreifer schiebt Benutzer URL für Webanwendung unter
    • Beim Aufrufen der URL wird Benutzer automatisch authentifiziert (Cookie oder Zertifikat)
    • Angreifer kann Aktionen in der Anwendung durchführen

Ablauf XSRF

XSRF
XSRF

Angriffspfade

  • Unterschieben der URL ist einfach und fast nicht zu verhindern
    • Cross Site Scripting (XSS)
    • Phishing-E-Mail
    • Offener Redirect
    • Clickjacking
  • Das Besuchen der URL kann bereits Konsequenzen haben
  • POST ist nicht sicherer als GET!

XSRF: Gegenmaßnahmen

  • Nach der Authentifizierung Zufallszahl (XSRF-Token) generieren
  • Token in der Session speichern
  • Bei Links auf jede ändernde Aktion das Token hinzufügen
    • als URL-Parameter bei GET
    • als verstecktes Formularfeld bei POST
    • auf keinen Fall als Cookie
  • Vor der Aktion das Token überprüfen
    • Token aus dem Request lesen
    • Token aus der Session lesen
    • Beide Ergebnisse vergleichen
    • Aktion nur ausführen, wenn Token gleich sind

Copyright © 2025 Thomas Smits