Firefox 16.0.0 Cross Domain Vulnerability

Nachbau von http://www.thespanner.co.uk/2012/10/10/firefox-knows-what-your-friends-did-last-summer/
(Firefox 16.0.0 herausgegeben am 10.10.1012, Fehler bekannt geworden am 10.10.2012, Fehler bei Heise veröffentlicht am 11.10.1012, Update bereit am 12.10.2012 - DAS nenne ich prompte Reaktion!)

So wie ich das sehe, hat die Verwundbarkeit gar nichts mit RegEx und eventuellen Umwandlungen von Objekten in String innerhalb derselben zu tun.

Es geht im Gegenteil ganz allgemein darum, daß die "window.location" eines neu erzeugten Windows im Ursprungskontext neben schreibbar auch lesbar ist (normal, sinnvoll), aber fehlerhafterweise durch Redirects im Bereich des Zielkontexts verändert wird und damit eventuelle über die URL solcher Redirects vermittelte Daten der Ziel-Domain im Kontext der den Cross-Domain-Zugriff auslösenden Seite ausgespäht werden können. Soll-Reaktion ist, daß der Lese-Zugriff aus dem Ursprungskontext heraus gesperrt wird, sobald es sich um ein Cross-Domain-Objekt handelt.

Normalerweise ist jedweder Zugriff auf die Innereien der Zielseite gesperrt. Das Objekt "window-location" macht da offenbar eine Ausnahme. Aber erst seit Firefox 16...?!?
Offenbar wurde der Domaintest verlagert.
Trigger Cross-Domain Window!



Und wie verhält es sich mit anderen solchen Objekten, die eine Dokumentquelle haben?

Bei <iframe> stimmt die Behandlung (siehe: Cross-Side-Access). Es ist kein bidirektionaler Cross-Side-Zugriff möglich.
Aber sind IFrames deshalb als sicher (im Sinne von "für fremdverschuldete Werbe-Einblendungen" und dergleichen) einzustufen? AUS einem IFrame HERAUS kann natürlich jede Schweinerei veranstaltet werden, die irgendwann als Verwundbarkeit herauskommt. ICH würde nicht darauf vertrauen...

Bei <img> auch? Ja, beim Firefox 16(.0.0) offenbar korrekt: Nicht mal bei einen Zugriff in derselben Domain kann man die Ersetzung der Adresse durch einen Redirect im Ursprungskontext auswerten: Cross-Domain-<img> auswerten!
(OK: Es gibt einen Rückkanal: Die Bilddimension ("naturalWidth" und "naturalHeight"). Das sind aber zum einen nur zwei Zahlen (pro Bild), zum anderen werden die nur einmalig beim Laden des Bildes ermittelt. Beim Phishing werden aber sowohl der Cross-Domain liegende Spionage-Server als auch die dem Opfer untergeschobene Phishing-Seite vom Angreifer kontrolliert. Aber in dem Fall gibt es viel einfachere Wege der Kommunikation, also ist das wohl doch eher eine akademische Angelegenheit.)


Bei <script>? Cross-Domain-<script> auswerten!
(Klar geht das beim Nachladen von Script: Der wird schließlich anschließend unmittelbar im Kontext der aufrufenden Seite ausgeführt (das ist ja der SINN der Sache)! Also fallen Scripts sowieso per se in die Kategorie nicht einschränkbarer Cross-Side-Kommunikations-Elemente! Dagegen KANN NUR Abschalten derselben schützen! Und DAS ist ja nun keine umwerfend neuartige Erkenntnis...)

Um den konkreten hier vorliegenden Angriff nachzustellen, benötigt man eine Seite, die ansonsten vertrauliche Datenelemente in Javascript-Code einbettet und erst dynamisch in der Zielseite zur Anzeige bringt. Davon dürfte es mehr als genug geben, obwohl ich nun mit solchen Seiten mein Leben lang schon keine allzu intensive persönliche Bekanntschaft geschlossen habe, weil ich grundsätzlich mit abgeschaltetem Javascript unterwegs bin und derartige Seiten bei mir eh generell leer bleiben und daher eh vermieden werden. Deshalb habe ich hier nichts aus dem Ärmel zu schütteln im Angebot.