Attack Afternoon – CSRF Gegenmaßnahmen #1
Im letzten Post dieser Serie haben wir einen der wichtigsten Angriffe auf Webanwendungen vorgestellt: „Cross-Site Request Forgery“ (CSRF).
Kurz zur Wiederholung: Identifiziert eine Webanwendung einen Nutzer über Session-Cookies, schickt der Browser diese stets automatisch mit, sofern der Nutzer gerade angemeldet ist. Ein Angreifer kann nun z.B. auf einer manipulierten Seite, die der Nutzer besucht, HTTP-Requests an diese Webanwendung schicken. Ist diese für CSRF anfällig, achtet sie nur auf das vom Browser mitgeschickte, gültige Session-Cookie des Nutzers und führt die vom Angreifer gewünschte Funktionalität im Namen des Nutzers aus, ohne dass letzterer davon etwas mitbekommt. CSRF ist also ein Problem, das beim Session-Management via Cookies immer existiert und entsprechend gelöst werden muss.
Eine Möglichkeit, CSRF zu vermeiden, ist die Verwendung eines Anti-CSRF-Tokens. Die Anwendung generiert dabei pro Session einen ausreichend langen und (kryptographisch) zufälligen Token-Wert. Diesen schreibt die Anwendung beispielsweise als nicht sichtbares Formularfeld in die HTML-Seite. Das Token wird entsprechend nur beim Abschicken dieses HTML-Formulars durch den Nutzer mitgeschickt und nicht wie ein Cookie vom Browser automatisch an alle Requests angehängt. Beim Abschicken des Formulars nimmt die Anwendung das Token aus dem versteckten Formularfeld entgegen und prüft, ob dieses Anti-CSRF-Token mit dem Wert identisch ist, der zur Nutzer-Session gespeichert wurde.
Versucht ein Angreifer nun einen CSRF-Angriff, kann er zwar weiterhin den Inhalt des HTTP-Requests nach Belieben bestimmen und der Browser des Nutzers hängt wieder dessen Session-Cookie an; allerdings kann der Angreifer den Wert des korrekten, zur Nutzer-Session gehörenden Anti-CSRF-Tokens nicht erraten. Dieses steht ja lediglich auf der HTML-Seite des Nutzers, auf welche der Angreifer keinen Zugriff hat. Die Anwendung weist einen solchen Request schließlich zurück und führt keine vom Angreifer
angestoßenen Aktionen aus.
Zum Glück bieten viele in der Entwicklung von Webanwendungen eingesetzte Frameworks Funktionalität zur Generierung, Übermittlung und Prüfung solcher Tokens an. Wichtig ist aber, dass diese Funktionalität überall aktiv und korrekt konfiguriert ist.
Weitere wirksame Gegenmaßnahmen bekommen Sie in einem unserer nächsten Attack Afternoons.
Haben sie schon einen CSRF-Schutz und möchten diesen überprüfen lassen? Kontaktieren Sie uns gerne!
Recent posts
mgm sp @ Heise DevSec
Mit dem Thema „Wie praxistauglich ist „DevSecOps“ wirklich? – Ein Erfahrungsbericht“ ist unsere Kollegin Maximiliane Zirm dieses Jahr auf der Heise devSec vertreten.
Pentest FAQ – #7 und #8 – Was ist ein Penetrationstest? Und was nicht?
In unserer großen Application Security Penetration Test FAQ für Auftraggeber beantworten wir alles, was man vor, während und nach Beauftragung eines Application Security Penetrationstests wissen sollte.
Heute im Fokus: Fragen #7 und #8 – Was ist ein Pentest? Und was nicht?
Die große Application Security Penetration Test FAQ für Auftraggeber
Haben Sie sich schon einmal gefragt was ein Pentest genau ist oder wie genau so ein Test abläuft? Diese Fragen und noch viel mehr beantwortet unsere große Application Security Penetration Test FAQ für Auftraggeber.
Tool Tuesday – nmap
Ein Tool, das auf keinem Pentester-PC fehlen darf, ist nmap. Dieses Kommandozeilenwerkzeug ist das Schweizer Taschenmesser für Penetrationstests auf Netzwerkebene, wird aber auch von Systemadmins gerne genutzt.
mgm sp @ München
In Herzen von Bayern befindet sich, bereits seit der Zeit von SecureNet, unsere Zentrale. Statten Sie unserem Standort einen Besuch ab!