Cross-Site Request Forgery (CSRF) ist ein Angriff, bei dem ein Angreifer einen authentifizierten Benutzer dazu bringt, unbeabsichtigt eine Aktion in einer Webanwendung auszuführen. Der Benutzer ist dabei bereits eingeloggt – der Angreifer nutzt diese bestehende Sitzung aus. CSRF zählt zu den OWASP Top 10 und betrifft jede Webanwendung, die Zustandsänderungen über HTTP-Requests ermöglicht.
Wie ein CSRF-Angriff funktioniert
Stellen Sie sich folgendes Szenario vor: Ein Mitarbeiter ist in Ihrer Unternehmenssoftware eingeloggt. Gleichzeitig öffnet er in einem anderen Tab eine manipulierte Webseite. Diese Webseite enthält ein unsichtbares Formular, das automatisch einen Request an Ihre Unternehmenssoftware sendet – zum Beispiel eine Passwortänderung oder eine Geldüberweisung. Da der Browser die Session-Cookies automatisch mitsendet, erkennt die Software den Request als legitim.
Praxisbeispiel: Passwortänderung per CSRF
Ein Angreifer erstellt eine Webseite mit folgendem versteckten Formular: Das Formular ändert das Passwort des eingeloggten Benutzers, ohne dass dieser es bemerkt. Der Angreifer muss den Benutzer lediglich dazu bringen, die manipulierte Seite zu öffnen – etwa über einen Link in einer Phishing-E-Mail.
Schutzmaßnahmen gegen CSRF
| Maßnahme | Wirksamkeit | Implementierungsaufwand |
|---|---|---|
| CSRF-Token (Synchronizer Token Pattern) | Sehr hoch | Gering (in Frameworks integriert) |
| SameSite-Cookie-Attribut | Hoch | Minimal |
| Double-Submit-Cookie | Hoch | Gering |
| Custom Request Headers | Mittel | Gering |
| Re-Authentifizierung bei kritischen Aktionen | Sehr hoch | Mittel |
CSRF-Schutz in modernen Frameworks
Moderne Web-Frameworks wie Symfony, Laravel und Django bieten eingebauten CSRF-Schutz. In Symfony wird automatisch ein CSRF-Token in jedes Formular eingefügt und bei der Verarbeitung validiert. Entwickler müssen diesen Schutz lediglich aktivieren und korrekt konfigurieren. Trotzdem werden CSRF-Schwachstellen immer wieder gefunden, wenn Entwickler den Schutz für einzelne Routen deaktivieren oder AJAX-Requests nicht absichern.
Erfahren Sie mehr über Web-Sicherheit in unserer Artikelserie zu IT-Security-Reviews oder lassen Sie Ihre Webanwendung im Rahmen eines Security-Reviews prüfen.
Fazit
CSRF ist ein oft unterschätzter Angriff, der durch einfache Maßnahmen wie CSRF-Tokens und SameSite-Cookies effektiv verhindert werden kann. Prüfen Sie Ihre Webanwendungen auf CSRF-Schutz – besonders bei Funktionen, die sensible Aktionen auslösen.