nur mal zu meinem Verständnis:
für CSRF bedarf es einiger Voraussetzungen
- Session-basierte Anwendung
- der betreffende User muss angemeldet sein
- der Angreifer muss den Aufbau der Seite kennen
- der Angreifer muss dem User die gefälschte Seite unterschieben
Das stimmt so im Groben und Ganzen.
Wie oft kann der Angreifer den User dazu veranlassen, die präparierte Seite aufzurufen, so dass der Angreifer verschiedene Werte für den Token ausprobieren kann? Ich denke, nur wenige Male.
Hat der Angreifer sein Opfer einmal auf seine Seite gelockt, kann er beliebig viele Angriffsversuche unternehmen, sofern die Zielseite keine weiteren Gegenmaßnahmen ergreift.
Weshalb muss dann der Token kryptografisch sicher sein, hab ich einen Denkfehler?
In der Software-Sicherheit gilt eine umgekehrte Beweislast: Du hast du zeigen, dass ein Verfahren hinreichend ist, um gegen einen bestimmten Angriffsvektor abzusichern. Dazu ist es wichtig die Annahmen, unter welchen das Verfahren effektiv schützt, klar zu benennen. Im Falle von Verteidigungen gegen CSRF ist eine übliche Annahme, dass ein CSRF-Token mit einem kryptografisch sicheren Zufallsgenerator generiert wird. Ohne diese Annahme gilt schlicht die Argumentationslinie nicht, mit der das Verfahren als hinreichend sicher eingestuft werden kann. Du kannst natürlich versuchen zu zeigen, dass ein Verfahren auch mit der schwächeren Vorbedingung eines nicht kryptografisch sicheren Zufallsgenerators hinreichend sicher ist. Aber das wird schwierig. Kryptografisch unsicherer Zufall ist ein kontraintuitives Gebilde. Aus kryptographischer Sicht gibt es nur ein paar wenige, verhältnismäßig einfach zu bestimmendende Parameter, die den "Zufall" vollständig vorhersehbar machen. Um die Probleme von unsicherem Zufall sichtbar zu machen, hilft es sich vorzustellen der Zufallswert sei immer konstant und bekannt. Das offenbart sehr deutlich wo die Schwachstellen liegen. Das mag nach einer starken Vereinfachung klingen, aber es hat schon so viele erfolgreiche Angriffe auf unsichere Zufallsgeneratoren gegeben, dass es sich dabei inzwischen um eine gängige Arbeitshypothese handelt. Und es bleibt natürlich die Frage, wieso das Risiko eingehen, wenn ein kryptografisch sicheres Zufallsverfahren verfügbar ist?