Clickjacking: So funktioniert der Angriff

Autor: Veröffentlicht

Kurz erklärt: Clickjacking, auch UI redress attack genannt, verleitet Nutzer dazu, ein anderes Element anzuklicken als das, das sie sehen. Angreifer können beispielsweise eine unsichtbare Seite mit einer Schaltfläche über eine scheinbar harmlose Schaltfläche in einem Spiel legen. Websitebetreiber begrenzen solche Angriffe vor allem, indem sie kontrollieren, wer ihre Seiten einbetten darf. Nutzer können sich durch Vorsicht bei verdächtigen Interaktionen schützen.

Wie Klicks umgeleitet werden

Ein Browser kann mithilfe des Elements iframe, eines eingebetteten Rahmens, eine Seite innerhalb einer anderen anzeigen. Das ist eine normale Funktion, die etwa zur Darstellung von Videos oder Karten dient. Bei einem Clickjacking-Angriff nutzen Kriminelle diese Funktion, um das tatsächliche Klickziel unter oder über einer eigens gestalteten Benutzeroberfläche zu verbergen.

Ein typischer Ablauf sieht so aus: Ein Nutzer öffnet eine vom Angreifer kontrollierte Seite, die eine andere Website in einem Rahmen lädt. Der Rahmen ist transparent oder passend zugeschnitten und so positioniert, dass seine Schaltfläche genau dort liegt, wo der Nutzer klicken soll. Der Nutzer sieht eine bestimmte Aufforderung, doch der Browser registriert die Interaktion mit einem anderen Element.

Dazu muss der Angreifer den Inhalt der fremden Seite nicht auslesen können. Die Zugriffsbeschränkungen des Browsers zwischen verschiedenen Websites verhindern nicht grundsätzlich das Einbetten und das Umlenken von Klicks. Der Schutz von Daten vor dem Auslesen und der Schutz einer Benutzeroberfläche vor dem Einbetten sind deshalb zwei getrennte Aufgaben.

Beispiel: Eine Belohnung löst eine andere Aktion aus

Stell dir eine Seite mit einem einfachen Spiel und der Schaltfläche „Belohnung abholen“ vor. Darüber liegt ein unsichtbarer Rahmen mit der Bedienoberfläche eines anderen Dienstes. Lässt sich dieser Dienst einbetten und ist die Sitzung des Nutzers im Rahmen aktiv, kann der Klick eine Schaltfläche treffen, die eine Aktion in seinem Konto ausführt.

Das bedeutet nicht, dass jeder Besuch einer bösartigen Seite sofort zur Übernahme des Kontos führt. Der Erfolg hängt unter anderem von den Schutzmaßnahmen der Zielwebsite ab, davon, ob die angemeldete Sitzung im Rahmen verfügbar ist, und davon, ob die Aktion eine zusätzliche Bestätigung erfordert. Cookie-Einstellungen und Browserbeschränkungen können ein solches Szenario erschweren, ersetzen aber keinen Schutz vor dem Einbetten.

Mögliche Folgen sind unbeabsichtigte Änderungen an Einstellungen, das Ausführen einer Aktion im Dienst oder die Bestätigung eines Vorgangs. Eine zusätzliche Bestätigung, die eine bewusste Handlung des Nutzers erfordert, verringert das Risiko. Eine weitere Schaltfläche allein garantiert jedoch keinen Schutz: Der Angriff kann versuchen, das Opfer durch mehrere Klicks zu führen.

Wie sich Clickjacking von Phishing und CSRF unterscheidet

Beim Phishing geben sich Betrüger meist als vertrauenswürdige Stelle aus, um Daten zu erbeuten oder zu einer bestimmten Handlung zu verleiten. Beim Clickjacking kann der Nutzer dagegen ein Element des echten Dienstes anklicken, das lediglich in einer irreführenden Umgebung verborgen ist. Beide Techniken können gemeinsam auftreten, doch der Täuschungsmechanismus unterscheidet sich.

CSRF, also das Erzwingen einer unerwünschten Anfrage an einen Dienst, nutzt die Berechtigungen eines angemeldeten Nutzers ohne dessen bewusste Zustimmung aus. Clickjacking zielt darauf ab, die Interaktion mit der Benutzeroberfläche umzulenken. Ein Token zum Schutz vor CSRF reicht nicht als Schutz vor Clickjacking aus, weil der Klick ein gültiges Formular mitsamt seinem gültigen Token absenden kann.

Auch HTTPS löst dieses Problem nicht. Es verschlüsselt die Verbindung zur jeweiligen Website, bestätigt aber weder die Vertrauenswürdigkeit ihrer Benutzeroberfläche noch die Absichten des Betreibers.

So schützt du deine eigene Website

Den grundlegenden Schutz bietet der HTTP-Antwortheader Content-Security-Policy mit der Direktive frame-ancestors. Ein HTTP-Header ist eine Information, die der Server zusammen mit der Seite an den Browser sendet. Die Direktive legt fest, welche Ursprünge die Seite in Rahmen einbetten dürfen.

Wenn die Website überhaupt nicht eingebettet werden soll, lässt sich Folgendes verwenden:

Content-Security-Policy: frame-ancestors 'none'

Soll das Einbetten nur innerhalb desselben Ursprungs erlaubt sein, also derselben Kombination aus Protokoll, Host und Port, lautet der passende Wert:

Content-Security-Policy: frame-ancestors 'self'

Ein älterer Mechanismus ist X-Frame-Options mit dem Wert DENY oder SAMEORIGIN. Er lässt sich als dazu passende Ergänzung für ältere Clients einsetzen. Die Direktive frame-ancestors ermöglicht eine flexiblere Steuerung, beispielsweise die Freigabe eines bestimmten Ursprungs eines Partners. Sie muss als Antwortheader gesendet werden. Die Angabe in einem meta-Tag bietet diesen Schutz nicht.

Die praktische Umsetzung umfasst drei Schritte:

  1. Kläre, welche Seiten tatsächlich in Rahmen funktionieren müssen, etwa als Teil einer Partnerintegration.
  2. Richte die passende Richtlinie auf dem Server, in der Anwendung oder bei einem zwischengeschalteten Dienst ein und prüfe die Header in den Entwicklertools des Browsers.
  3. Teste sowohl das Blockieren unerwünschter Einbettungen als auch die Funktion berechtigter Integrationen.

Verlasse dich nicht ausschließlich auf Skripte in JavaScript, die versuchen, die Seite aus einem Rahmen zu lösen. Solche Lösungen haben Grenzen und lassen sich umgehen. Verwende bei sensiblen Vorgängen zusätzlich eine erneute Authentifizierung oder eine Bestätigung, die die auszuführende Aktion klar beschreibt.

Was Nutzer tun können

Meide Seiten, die eine Reihe unverständlicher Klicks verlangen, insbesondere unter dem Vorwand, eine Belohnung abzuholen, ein Video freizuschalten oder eine angebliche Verifizierung durchzuführen. Halte deinen Browser aktuell. Bedenke aber, dass eine aktuelle Version die Schutzmaßnahmen des besuchten Dienstes nicht ersetzt.

Wenn du vermutest, dass ein Klick eine unerwünschte Aktion ausgelöst hat, öffne den betreffenden Dienst selbst, statt einem Link auf der verdächtigen Seite zu folgen. Prüfe den Aktivitätsverlauf und geänderte Einstellungen und melde einen nicht autorisierten Vorgang dem Support. Als Websitebetreiber solltest du zunächst den Header frame-ancestors auf den Kontoseiten und im Administrationsbereich prüfen.

Siehe auch: Was ist Mass Assignment?

Lesen Sie auch

Wie PHP-FPM PHP-Anfragen verarbeitet, sich vom Webserver unterscheidet und wie du Prozesse an Last und Hosting-Ressourcen anpasst.
BIND ist offene DNS-Serversoftware. Erfahre, welche Aufgaben sie übernimmt und wann sich der Betrieb eines eigenen Servers lohnt.
Was Polens REGON-Register und seine Kennnummer bedeuten, wie sie sich von NIP und KRS unterscheiden und wie Sie Unternehmensdaten prüfen.