Skip to content

Clickjacking - Framebuster oder HTTP-Header verhindern Angriffe

Wie Clickjacking allgemein funktioniert und welche Möglichkeiten es einem Angreifer bietet, haben Sie in den ersten beiden Folgen erfahren. Jetzt geht es um die Möglichkeiten, einen Clickjacking-Angriff zu verhindern bzw. abzuwehren. Voraussetzung für das Clickjacking ist das Einbinden der angegriffenen Seite in einen iframe, entsprechend besteht die beste Gegenmaßnahme gegen einen Angriff darin, dieses Einbinden zu verhindern.

Clickjacking abwehren

Update 30.1.2014:
Das folgende gilt inzwischen teilweise nur noch eingeschränkt. Der aktuelle Stand der Dinge für die Server-Seite ist hier beschrieben.
Ende des Updates

Ein Workaround

Als Entwickler können Sie einen Framebuster verwenden, um das Einbinden Ihrer Seiten in einen iframe zu verhindern, z.B. so:

<script type="text/javascript">
if (top!=self) top.location.href=self.location.href;
</script>

Der Nachteil so eines Framebusters: Er funktioniert nur, wenn JavaScript eingeschaltet ist (was man in den Zeiten des Web 2.0 allerdings in den allermeisten Fällen voraussetzen kann), während Clickjacking auch ohne JavaScript funktioniert, die Manipulation von Stylesheets reicht aus.

Außerdem gibt es Möglichkeiten, den Framebuster zu umgehen, so dass die Seite im Frame bleibt. Allerdings lassen sich auch diese Anti-Framebuster umgehen. Ob es auch eine Möglichkeit zum Umgehen der Anti-Anti-Framebuster gibt, wäre noch zu prüfen.

Ein weiteres Problem ist das 'security=restricted'-Attribut im Internet Explorer ab Version 6: Die damit gekennzeichneten Frames werden in der eingeschränkten Zone platziert, wodurch enthaltener JavaScript-Code nicht ausgeführt wird. Damit wird die Ausführung des Framebuster-Codes verhindert und die angegriffene Seite bleibt im Frame, aber auch sämtlicher sonst noch dazu gehörender JavaScript-Code wird nicht ausgeführt, was in Zeiten des Web 2.0 den meisten Seiten nicht gut bekommt. Seiten, auf denen die vom Angreifer gewünschte Aktion bei ausgeschaltetem JavaScript ausgelöst werden kann, können aber so trotz vorhandenem Framebuster angegriffen werden, sofern das Opfer den Internet Explorer als Webbrowser verwendet.

"Defense in Depth"

Als zusätzlichen Schutz vor Cross-Site-Request-Forgery-Angriffen über Clickjacking können Sie vor der Ausführung kritischer Aktionen eine erneute Authentifizierung oder das Lösen ein CAPTCHAs verlangen. "Allerweltsfunktionen" wie z.B. das Hinzufügen eines Freundes in einem Social Network oder das Senden einer Nachricht an einen solchen Freund können aber kaum so aufwendig abgesichert werden, ohne die Benutzer abzuschrecken.

Dauerhafte Lösungen

Michal Zalewski hat kurz nach der Veröffentlichung des neuen Angriffs auf der whatwg-Mailingliste einige mögliche Gegenmaßnahmen für die von ihm als 'UI redress' bezeichneten Angriffe vorgestellt. Außer den oben genannten Workarounds hat er auch einige dauerhafte Schutzmaßnahmen vorgeschlagen, die allerdings schwieriger zu implementieren sind. So sind dafür Änderungen an den Webbrowsern notwendig, um z.B. einen zusätzlichen HTTP-Header auszuwerten, zum Teil gibt es auch unerwünschte Nebenwirkungen. Besonders hervorzuheben sind dabei drei Vorschläge:

  • Ein Mechanismus auf HTTP-Ebene kann das Rendern einer Seite in einem iframe verbieten.
  • Ein Mechanismus auf Dokumentenebene kann in eingebundenen Seiten eine andere Darstellung oder Aktion auslösen als in allein stehenden Seiten.
  • Ein Mechanismus im Browser kann UI-Aktionen verhindern, wenn versteckte Inhalte erkannt werden.

Der Internet Explorer 8 enthält einen Clickjacking-Schutz, der über einen "X-FRAME-OPTIONS"-Header in der HTTP-Response gesteuert wird, wie es ähnlich von Zalewski vorgeschlagen wurde. Wie der Header funktioniert, wird im IEInternals-Blog genauer beschrieben. Der Header wird auch von WebKit unterstützt, wodurch er auch in Googles Chrome 2 und Apples Safari 4 vorhanden ist. Für Mozillas Firefox wird eine ähnliche Lösung diskutiert.

Die Wirkung des Headers sowohl im IE als auch in Firefox (dort durch die Erweiterung NoScript realisiert) zeigt Giorgio Maone in seinem Blog. Robert Hansen ist von dieser Header-Lösung nicht sehr überzeugt, allerdings hat sich das Argument "It’s proprietary to Microsoft" inzwischen erledigt. Was bleibt, ist das Problem, dass nur Seiten geschützt werden, für die die Entwickler oder Betreiber es explizit durch Setzen des Headers erzwingen. Wie Sie das mit dem Apache machen, hat Mike Cardwell beschrieben.

Schutz auf Benutzerseite

Die bisher einzig bekannte Gegenmaßnahme für Benutzer ist die Nutzung der Firefox-Erweiterung NoScript, die ab Version 1.8.2.1 eine ClearClick genannte Funktion enthält (FAQ). Damit werden verborgene, durchsichtige oder sonstwie getarnte Dialoge oder Frames beim Anklicken sichtbar gemacht, so dass der Benutzer dann entscheiden kann, ob er die Einstellungen im dargestellten Dialog wirklich aktivieren will oder nicht. Als weitere Schutzmaßnahmen werden JavaScript-Framebuster auf Seiten, in denen über NoScript JavaScript ausgeschaltet wurde, beachtet, indem diese Seiten ggf. im äußersten Frame geöffnet werden.

Sie wissen nun, wie Clickjacking funktioniert und wie Sie es verhindern können. Für den Fall, dass Sie das für überflüssig halten, gibt es in der nächsten Folge ein paar Beispiele, einschließlich tatsächlich stattgefundener Angriffe. Ein ganz aktuelles Beispiel ist ein "Wurm", der sich zur Zeit über Clickjacking auf Facebook ausbreitet.

Carsten Eilers

Update 13.5.2015
Aus Anlass des 5jährigen Blog-Jubiläums habe ich alle Clickjacking-Artikel zusammengefasst, überarbeitet, ergänzt und auf den aktuellen Stand gebracht. Das Ergebnis ist ein (natürlich kostenloses) eBook im ePub- und PDF-Format: 5 Jahre Blog - Als Special: "Clickjacking"-eBook
Ende des Updates vom 13.5.2015


Übersicht über alle Artikel zum Thema

Clickjacking - Angriffe auf Seiten ohne Schwachstellen
Clickjacking - Auch komplizierte Aktionen sind möglich
Clickjacking - Framebuster oder HTTP-Header verhindern Angriffe
Der Angriff der Clickjacking-Würmer, "Likejacking" und "Buttonjacking"
Clickjacking - "Likejacking" unter die Haube geguckt
Clickjacking - The next Generation
Clickjacking - Drag&Drop-Angriffe und weitere Neuigkeiten
Cookiejacking - Keksdiebe im Internet Explorer
Likejacking - Facebook im Visier der Cyberkriminellen
Clickjacking - Gute und Schlechte Nachrichten
Standpunkt: Clickjacking gegen Flash, urchin.js und Duqu - nichts als Wiederholungen!
Neue Angriffe auf Webanwendungen über Clickjacking und Cookies
Clickjacking-Angriffe verhindern - der aktuelle Stand der Dinge
Clickjacking: Cross Origin Resource Jacking und ein Clickjacking-BeEF-PlugIn
Clickjacking: "Zaubertricks" ermöglichen Likejacking und mehr
Dieses und Jenes zum Clickjacking
5 Jahre Blog - Als Special: "Clickjacking"-eBook

Trackbacks

Dipl.-Inform. Carsten Eilers am : Präsentationen und Links zu meinen #wtc11-Vorträgen sind online

Vorschau anzeigen
Ich habe soeben die Präsentationen zu meinen Vorträgen auf der WebTech Conference hochgeladen. Sie finden Sie auf www.ceilers-it.de/konferenzen/ sowie auch hier: Client Security im Web 2.0 und mit HTML5 Beschreibung: Schwachstel