Liste Neuigkeiten Hintergrundartikel Kommentare Programmieren/Java IT-Sicherheit Computer Ratgeber & Tipps

Sichere Programmierung von Web-Anwendungen - Clickjacking

Hinzugefügt am 15.12.2020 von Frank Hissen

Zahlreiche erfolgreiche Angriffe auf bekannte Web-Anwendungen finden wöchentlich Einzug in einschlägige Medien. Grund genug bei der Entwicklung eigener Anwendung - egal ob zur rein internen Nutzung oder mit öffentlichem Zugang - sich mit den Hintergründen der "Web Application Security" zu beschäftigen.

Dies ist ein Auszug aus dem Buch "Sicherheit von Web-Anwendungen: Für Software-Entwickler und Software-Projektleiter", auch als eBook erhältlich
Es ist ebenfalls ein zugehöriger Online-Kurs erschienen: Onlinekurs Sicherheit von Web-Anwendungen, auch verfügbar auf Udemy, und als HTML5/SCORM/mit Audiokommentar auf Anfrage

Beschreibung

Durch das HTML-Element "iframe" lassen sich beliebige Webseiten bzw. URLs in Bereiche der eigenen Webseite integrieren. Dies stellt das Standard-Verhalten von Web-Browsern da. Die "Same-Origin-Policy" verhindert zwar, dass z.B. ein JavaScript der einbettenden Seite auf den Inhalt des iframe einer Drittseite zugreifen kann, aber die Seite innerhalb des iframe funktioniert genau so, wie sie es im eigenen Browser-Fenster bzw. -Tab tun würde. D.h., alle Cookies und somit aktive Sessions sind aktiv - nur eben innerhalb des iframe.

Dies kann von maliziösen Seiten ausgenutzt werden, um Nutzer unbemerkt zu bestimmten Aktionen bzw. Transaktionen zu verleiten.

Betroffen sind hiervon speziell Formulare, Funktionen und JavaScript-Trigger von Web-Anwendungen, die den Charakter der Datenänderung oder einer Transaktion haben. Reine Datenabfragen sind nicht betroffen.

Letztendlich funktioniert in diesem Falle ein erfolgreicher Angriff auf Basis von "UI-Tricks". Hier sind Angreifern keine kreativen Grenzen gesetzt. Zum Beispiel kann ein iframe ohne Scroll-Balken auf eine bestimmte Position und Größe gesetzt werden, so dass nur ein Button der Opfer-Seite sichtbar ist.
Alternativ können über bzw. unter transparente Elemente Teile der Opfer-Seite gelegt werden und unverdächtige Klick-Grafiken der Angreiferseite verlocken so zum unerwünschten Klick auf der Opfer-Seite.

Sichere Programmierung:

Es gibt im wesentlichen zwei Lösungsmöglichkeiten. Dabei ist zu beachten, dass es in bestimmten Anwendungsfällen durchaus gewünscht sein kann, dass eine Web-Anwendung in einem iframe nutzbar ist. Jedoch muss hier soweit möglich der Whitelisting-Gedanke gelten, d.h., alle Domains, die eine Web-Anwendung per iframe nutzen dürfen, müssen explizit festgelegt sein.

1)

Der HTTP-Header

X-FRAME-OPTIONS

ist eine Browser-Direktive, die von allen modernen Browsern unterstützt wird und das Default-Verhalten - nämlich das Einbetten über iframe grundsätzlich zu erlauben - einschränkt. Dabei gibt es den Wert "DENY", der sämtliche Einbettung in iframes unterbindet und den Wert "SAMEORIGIN", der eine Einbettung innerhalb der eigenen Seite bzw. Domain/URL erlaubt.

"SAMEORIGIN" wird beispielsweise verwendet, wenn ein Login-Formular unter einer bestimmten URL verfügbar ist und in verschiedenen Seiten-Unterbereichen per iframe eingebettet wird. Entsprechend kann es andere, individuelle Anwendungsfälle geben.

2)

Eine beliebte JavaScript-basierte Lösungen - die natürlich ein aktives JavaScript auf der Clientseite erfordert - ist die Verwendung der allgemein verfügbaren JavaScript-Variable

top.location

Damit lassen sich beliebige Prüfungsroutinen bauen, um die URL(s) der Ursprungsseite (mit dem iframe) und die eigene auf Gültigkeit zu überprüfen. Stellt sich eine unerlaubte Einbettung heraus, kann beliebig reagiert werden - etwa nur eine Fehlerseite anzeigen oder die Top-Location auf die eigene Web-Anwendung ändern usw. In jedem Falle also wird die eigentliche Funktionalität entsprechend eingeschränkt.

Schlagworte

Clickjacking, Secure Code, OWASP, IT-Security, Sichere Programmierung, Web-/Anwendungssicherheit, IT-Securitymanagement, Security Awareness

Kategorien: IT-Sicherheit Hintergrundartikel Programmieren/Java


Kommentare

Eigenen Kommentar hinzufügen

Teilen / Weiterempfehlen

Wenn Sie diese Seite gut finden, teilen Sie es doch ihren Kontakten mit:

Mail Facebook Twitter Pinterest LinkedIn
reddit Digg StumbleUpon XING