Clickjacking

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Clickjacking ist eine Technik, bei der ein Computerhacker die Darstellung einer Internetseite überlagert und dann deren Nutzer dazu veranlasst, scheinbar harmlose Mausklicks und/oder Tastatureingaben durchzuführen.

Angreifer lassen die ahnungslosen Anwender – scheinbar – auf die überlagerten Objekte klicken. Tatsächlich jedoch wird der ursprüngliche Inhalt (Button/Link) der Internetseite ausgelöst. So geschieht es, dass der User – anstatt lediglich auf die ihm vorgegaukelten Links an einer Stelle zu klicken – eine vom Hacker definierte, beliebige Aktion auslöst.

Dies betrifft Seiten, die beispielsweise Links und Schaltflächen zur Konfiguration von Systemeinstellungen enthalten. Während der Nutzer also denkt, er tätige harmlose Eingaben in einer Internetseite, ändert er in Wahrheit, ohne es zu merken, z. B. Einstellungen einer angeschlossenen Kamera oder eines Mikrophons.

Beispielsweise kann so auch eine Website-Schaltfläche, die zum Absenden von Anmeldedaten dient, mit einem für den User unsichtbaren Button überlagert werden. Über diesen lassen sich die Informationen an den Angreifer übermitteln.

Gegenmaßnahmen

[Bearbeiten | Quelltext bearbeiten]

Clickjacking ist ein konzeptionelles Problem von JavaScript und Webanwendungssicherheit. Es beruht nicht auf einem „Fehler“ des Anwendungsprogrammierers, insofern sind Gegenmaßnahmen nicht trivial.

Fast alle Browser haben inzwischen die Möglichkeit eingeführt, dass Webanwendungen einen Header „X-Frame-Options“[1] senden, der dem Browser anzeigt, ob die Webseite in einem Frame angezeigt werden darf oder nicht. Möglich sind hierfür die Werte „DENY“ (Seite darf nicht in Frame angezeigt werden), „SAMEORIGIN“ (Seite darf nur von Frames auf derselben Domain angezeigt werden) und „ALLOW-FROM“ (Seite darf von spezifizierter Domäne und URL angezeigt werden).[2] Voraussetzung für diesen Schutz ist aber, dass er sowohl von der Webanwendung als auch vom Browser unterstützt wird. Der Header ist bislang kein offizieller Standard. Unterstützt wird er vom Internet Explorer ab Version 8.0, Firefox ab 3.6.9, Opera ab 10.50, Safari ab 4.0 und Chrome ab 4.1.249.1042. Konqueror unterstützt diese Möglichkeit nur bei Nutzung der Webkit-Engine, welche das ältere KHTML ablöst.[3]

Außerdem besteht die Möglichkeit, in älteren Browsern mit Hilfe eines JavaScript-Framekillers die Ausgabe der Seite zu unterbinden. Dabei muss jedoch beachtet werden, dass die Seite vor Ausführung des JavaScripts versteckt ist und erst bei einer erfolgreichen Frame-Überprüfung angezeigt wird. Sonst lässt sich der Framekiller selbst umgehen.[4]

<style> html{display : none ; } </style>
<script>
   if( self == top ) {
       document.documentElement.style.display = 'block' ;
   } else {
       top.location = self.location ;
   }
</script>
  1. Archivierte Kopie (Memento des Originals vom 7. Oktober 2010 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/developer.mozilla.org
  2. http://tools.ietf.org/html/draft-ietf-websec-x-frame-options-00
  3. https://bugs.kde.org/show_bug.cgi?id=259070
  4. http://seclab.stanford.edu/websec/framebusting/framebust.pdf