Wie brechen Google+ + 1-Widgets aus ihrem Iframe aus?

145

Wenn Sie den Mauszeiger über ein Google+ Plus-One-Widget halten, kann dies zu einem Tooltip-Deal führen, der deutlich größer ist als das <iframe>Element, in dem er enthalten ist. Ich habe das DOM überprüft, um dies zu bestätigen. *

Iframe-Grenzen

So:

  1. Was? Wie!?

  2. Ist dies nicht eine massive Gelegenheit für Clickjacking, wenn es böswillig verwendet wird? (Stellen Sie sich vor, jemand macht ein MITM für diese sozialen Widgets!)

* Update: Ich habe gesehen, dass die Tooltip-y-Nachricht in einer Sekunde dynamisch erstellt wurde iframe.

Alan H.
quelle

Antworten:

181

Das Google + 1-Widget ist JavaScript, das auf Ihrer Website ausgeführt wird, auf der ein erstellt wird iframe. Dieses JavaScript-Widget wird im Kontext Ihrer Website ausgeführt und ist daher nicht durch die Origin-Vererbungsregeln für Iframes eingeschränkt . Daher kann dieses JavaScript-Widget beliebige DOM-Ereignisse auf der übergeordneten Site festlegen, obwohl dies nur ein einfaches Ereignis zu sein scheint iframe.

Eine andere Sache, warum verwendet Google eine iframe? Warum nicht einfach ein divauf der Seite generieren ? Da der Link vom stammt iframe, kann ein CSRF-Token (Cross-Site Request Forgery) in die Anfrage eingebettet werden, und die übergeordnete Site kann dieses Token nicht lesen und die Anfrage fälschen. Es handelt sich also iframeum eine Anti-CSRF-Maßnahme, die sich auf die Origin-Vererbungsregeln stützt, um sich vor einem böswilligen Elternteil zu schützen.

Aus Angriffssicht ähnelt dies eher XSS (Cross-Site Scripting) als UI-Redress. Sie gewähren Google Zugriff auf Ihre Website und sie könnten die Cookies Ihrer Nutzer entführen oder XmlHttpRequestsgegen Ihre Website vorgehen, wenn sie dies wünschen (aber dann würden die Leute sie verklagen, weil sie böswillig und wohlhabend sind).

In dieser Situation MÜSSEN Sie Google vertrauen, aber Google vertraut Ihnen nicht.

Es gibt Möglichkeiten, die Auswirkungen dieser Web-Bugs auf den Datenschutz zu verringern .

Turm
quelle
Tolles Zeug - ich freue mich über Ihren Kommentar zu: XSS, was sehr viel Sinn macht. Trotzdem bin ich mir bei etwas nicht sicher. Der fragliche Inhalt scheint nicht innerhalb des zu liegen <iframe>, was Ihrer Meinung nach wahr sein könnte (und erklären Sie, wie es möglich ist). Aber es scheint nicht so zu sein, dass dies der Fall ist, wenn man das DOM inspiziert. Und es würde meinen Namen und meine Google Mail-Adresse böswilligen Eltern aussetzen (es sei denn, es wird in einer Sekunde verpackt iframe)!
Alan H.
3
@ Alan H. Ja, sie machen einige bizarre Sachen mit dynamischen Iframes. Wenn Sie auf +1 klicken, wird das Fenster angezeigt, in dem Sie einen Kommentar hinzufügen. Wenn Sie Firebug laden und dieses Element untersuchen, erhalten Sie einen Iframe-Quellcode für plusone.google.com/u/0 / _ / + / fastbutton? Url = ... Dieser Iframe enthält das CSRF-Token zum Senden an Google +.
Turm
In einigen Fällen können Sie die Entführung von Cookies vermeiden, indem Sie sie mit httponly festlegen.
seppo0010
1
@ seppo0010 Ja, aber das hält XHRs nicht auf.
Turm
3

Google verwendet iFrames, um "undichte Standard-DIVs" zu verhindern. Der Dialog mit der Abschlussbibliothek macht dasselbe. Es ist wahrscheinlich nur so, dass andere Inhalte nicht in die + 1-Schaltfläche bluten können. http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/dialog.html .

xrd
quelle
Wie Rook in seiner Antwort erklärte, wird der <iframe> verwendet, um zu verhindern, dass Websites, die den Google + 1-Widget-Code verwenden, CSRF-Angriffe verwenden, um auf den Link selbst zu klicken (und die + 1-Bewertung der Website künstlich zu verbessern). In diesem Bereich vertraut Google Ihnen nicht.
Mikko Rantalainen