Schutz vor Attacken durch Cross-Site-Request-Forgery ausgehebelt
Sicherheits-Tokens in URLs sollen vor CSRF-Angriffen schützen. Ein Sicherheitsspezialist zeigt, wie sich eine drei Jahre alte Methode zum Auslesen der Browser-Historie nutzen lässt, um den Token zu "berechnen".
Eine neue Methode zeigt, wie Angreifer Schutzmaßnahmen vor Cross-Site-Request-Forgery-Attacken (CSRF) aushebeln können. Bei CSRF- beziehungsweise Session-Riding-Attacken manipulieren Websites über spezielle eingebettete Links etwa die Konfiguration von Routern oder Inhalte von Blogs. Dazu muss das Opfer sich aber in der Regel in die anzugreifende Seite eingeloggt sein und parallel dazu die bösartige Website im Browser geöffnet haben.
Schutz vor solchen Attacken bieten Tokens, die aus einer einmaligen, zufälligen Nummer bestehen, die zwischen Client und Server als Teil der URL übertragen werden. Ein Angreifer kann diesen Token in der Regel nicht voraussagen, womit seine präparierten Links nicht mehr funktionieren. Weitere Details zu solchen Angriffen liefert der heisec-Artikel "Dunkle Flecken - Neuartige Angriffe überrumpeln Webanwender".
Ein Sicherheitspezialist mit dem Pseudonym Inferno hat nun eine Beschreibung veröffentlicht, wie man mittels Brute-Force auf dem Client an gültige Tokens gelangt, um erfolgreich CSRF-Attacken durchführen zu können. Inferno macht sich dabei eine drei Jahre alte Methode zum Auslesen der Browser-Historie mittels Cascading Style Sheets zunutze.
Bereits angeklickte Links werden im Browser farblich anders dargestellt, als Links, denen man noch nicht gefolgt ist. Die andere Farbe wird durch eine Änderung im Stylesheet des HTML-Dokuments bewirkt, die der Browser als Attribute in der History speichert. Mit einer längeren Liste möglicher Webseiten lässt sich bei deren Aufruf das Farbschema des Stylesheets testen, womit der Rückschluß auf die besuchten Seiten möglich ist.
Da die URL dem Angreifer bei einem CSRF-Angriff bekannt ist, muss er nur noch die möglichen Kombinationen des Tokens durchprobieren – was per JavaScript auf dem Client geschieht. Inferno hat eine Demo seines Angriff veröffentlicht, die in einem kurzen Test der heise-Security-Redaktion zwei fünfstellige Tokens in etwas unter sieben Minuten ermittelte.
In der Regel sind die in der Praxis gegen CSRF-Attacken eingesetzten Tokens jedoch erheblich länger, was die Dauer zum Ermitteln des Tokens derzeit unpraktikabel macht. Inferno schlägt mindestens acht Zeichen vor und empfiehlt, den Token nicht in der URL zu übertragen, sondern in einem versteckten Formularfeld. Darüber hinaus schützen Plug-ins wie SafeHistory für den Firefox und die speziellen Inkognito-Modi der Browser vor dem Ausspionieren der Surfvergangenheit.
Siehe dazu auch:
(dab)