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 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