Sven Rautenberg: Cookies oder Sessions?

Beitrag lesen

Moin!

Sag mir, wie du das Cookie ausspähen willst, und ich sage dir, ob das ein realistisches Szenario ist, welches sich durch die von dir genannten Zusatzprüfungen verhindern lässt.

mit javascript zb - cookie auslesen und die daten mit einem xmlhttprequest sofort weiterschicken

kommt öfer vor als man denkt, dass durch eine sicherheitslücke [1] javascript in den quelltext eingeschleust wird, der da eigentlich nicht hinsoll

Wenn innerhalb der Domain eine Sicherheitslücke die Ausführung von Javascript-Code ermöglicht, ist die Integrität der Daten ohnehin nicht mehr gewährleistet. Sprich: Warum sollte man sich als Angreifer dann darauf beschränken, "nur" das Session-Cookie auszulesen und weiterzuverraten (BTW: Mit AJAX funktioniert das nicht, weil dessen Requests nur wieder auf dieselbe Domain gehen dürfen). Oder anders gefragt: Was spricht dagegen, nicht einfach direkt die Gesamtumstände des fraglichen Requests mitzuverraten, also User-Agent, IP, Referrer etc.

Mit anderen Worten: Welche Sicherheit brächte es, Parameter zu prüfen, die im Normalfall genauso wie die Session-ID dem Angreifer unbekannt sind, und im erfolgreichen Angriffsfall ihm aber genauso leicht bekannt sein können.

Abgesehen davon erfordert so ein Angriff halt tatsächlich besondere Umstände, beispielsweise die tatsächliche Ausnutzbarkeit einer vorhandenen Cross-Site-Scripting-Lücke.

[1] ob die jetzt bestehen darf oder dies das eigentliche problem ist, sei dahingestellt

Im Normalfall wird so eine Lücke nicht so einfach zu finden sein. Denn erstens müsste man sie als tatsächlich eingeloggter User durch Untersuchungen auffinden (im Blindflug dürfte es ein aussichtsloses Unterfangen bleiben), und zweitens müsste sie überhaupt mal existieren.

Du magst vielleicht argumentieren, dass zusätzliche Prüfungen es für den Angreifer schwieriger machen würden. Falsch: Wenn erst einmal eine XSS-Lücke gefunden wurde, bricht das Gesamtsystem zusammen. Denn via XSS kann ja nicht nur ein Spionageskript die Sessiondaten weitersagen, sondern genausogut anstelle des eingeloggten Users via AJAX Aktivität entfalten. Und sei es nur, für die Passwort-Vergessen-Funktion eine neue Mailadresse einzutragen - oder halt sonstigen Unfug zu treiben, der leicht erreichbar ist und ansonsten erstmal unbemerkt bleibt.

- Sven Rautenberg

--
"Love your nation - respect the others."