So können sich Webseitenbetreiber und User vor Cross-Site-Scripting Attacken schützen.

XSS-Attacken: So schützt du dich, deine Kunden und dein Geschäft

XSS-Attacken sind besonders hinterhältig. Und besonders beliebt bei Hackern. Wir zeigen, wie du dich gegen das Kapern deiner Seite schützen kannst – als Webseitenbetreiber und als User.

1599 WordPress-Plugins hat der Sicherheitsanbieter Wordfence über 14 Monate hinweg analysiert und die häufigste Schwachstelle überhaupt waren sogenannte XSS-Schwachstellen. Fast 47 Prozent der gefundenen Lücken hatten mit Cross-Site-Scripting – kurz XSS – zu tun. Grund genug sich näher mit der Angriffsart zu befassen, bei der Hacker Schadcode auf deine Seite einschleusen und sie quasi kapern. So nutzen die Angreifer deinen Blog, deinen Shop oder deine Unternehmensseite als Vehikel für ihre illegalen Machenschaften.

Diese Grafik zeigt, dass XSS laut wordfence die am Schwachstelle ist, die am häufigsten in Plugins gefunden wird.
XSS ist laut wordfence die Schwachstelle, die am häufigsten in Plugins gefunden wird.

XSS-Schwachstellen werden immer dann gefährlich, wenn Nutzereingaben ungeprüft an den Webserver weitergeleitet werden, zum Beispiel in Kontaktformularen oder Kommentarfeldern. Einmal geglückt können die Hacker Daten stehlen, deine Seite in ein Botnet einbinden oder die Rechner deiner Besucher infizieren. Zum Glück gibt es einige sehr einfache Schutzmaßnahmen gegen XSS-Attacken.

XSS ist für Besucher und Seitenbetreiber gleichermaßen relevant

Wichtig zu verstehen ist, dass XSS-Schwachstellen auf WordPress-Seiten für Seitenbetreiber und -besucher gleichermaßen relevant sind. Seitenbetreiber werden ausgenutzt, um die niederen Ziele der Hacker zu erfüllen und Seitenbesucher sind häufig die Geschädigten, beispielsweise durch Datenklau oder die Verbreitung von Schadcode.

Prinzipiell setzen XSS-Attacken dort an, wo Nutzer Daten an den Webserver des Seitenbetreibers schicken. An diesen neuralgischen Punkten wird Code eingeschleust, der – wird die Nutzereingabe nicht kritisch geprüft, bspw. von einer Firewall – die Seite infizieren kann. Die unterschiedlichen Arten von XSS-Attacken sind in unserem Hintergrundartikel zu dem Thema zusammengefasst.

Am allerwichtigsten: Regelmäßige WordPress-Updates

Die Schwachstellen, über die Hacker den Schadcode einschleusen befinden sich entweder im WordPress-Core, in Plugins oder in Themes. Genau deswegen sind regelmäßige Updates all dieser Komponenten auch so wichtig. Denn in diesen Updates werden die Schwachstellen, die bis dato gefunden wurden, behoben.

Auch ergibt es Sinn regelmäßig die Update-Details der jeweiligen Hersteller zu lesen, um ein Gefühl dafür zu bekommen, welche Sicherheitslücken über die Aktualisierungen regelmäßig geschlossen werden. Für die Wartungs- und Sicherheits-Updates des WordPress-Core werden diese Informationen beispielsweise im WordPress-Blog dokumentiert. Bestes Beispiel hierfür ist das letzte Sicherheits-Update, WordPress 4.7.5.

Firewalls und Whitelists gegen einfache XSS-Attacken

Eine weitere einfache Schutzmaßnahme vor XSS-Attacken sind sogenannte Web-Application-Firewalls, oder WAF. Diese Firewalls sind das Herzstück großer Sicherheits-Plugins und werden von dem jeweiligen Recherche-Team des Herstellers mit den neuesten Schwachstellen gefüttert. Eine WAF ist ganz allgemein ein Verfahren, das Webanwendungen vor Angriffen über das Hypertext Transfer Protocol (HTTP) schützt.

Auch diese Schutzmechanismen haben aber ihre Grenzen. Denn bei einigen XSS-Attacken findet der Angriff über die Datenbank statt. Daher ist das Prüfen von Nutzereingaben auf Schadcode einer der zentralen Sicherungsmechanismen beim Kampf gegen XSS-Attacken. Dabei wird bspw. der Inhalt von Kommentaren auf verdächtige Zeichenfolgen gescannt und wenn nötig aussortiert.

Auch die Datenausgabe sollte abgesichert werden

Regelmäßige Updates schließen vorhandene XSS-Sicherheitslücken und Firewalls sowie Whitelists versuchen Schadcode auszufiltern, bevor dieser den Webserver erreicht und die Seite infizieren kann. Doch sollte auch die Datenausgabe entsprechend gesichert werden. Die meisten Programmier- und Skriptsprachen, wie PHP, Perl oder JavaScript, besitzen hierfür bereits vordefinierte Funktionen zur Zeichenersetzung bzw. -maskierung. Diese sorgen dafür, dass “problematische” HTML-Metazeichen (z. B. <, > und &) durch harmlose Zeichenreferenzen ersetzt werden. So wird verhindert, dass der Schadcode aktiv werden kann. Auch sollte der Code mithilfe von sog. sanitization libraries bereinigt werden. Hierfür wird ein Plugin auf dem Server installiert und zusätzlicher Code in deinen Seitenquellcode eingebunden. Der folgende Code-Schnipsel sorgt dann zum Beispiel dafür, dass <class> zu den erlaubten Attributen hinzugefügt wird:

So kann der Konfigurationscode aussehen, den man braucht, um eine Code-Sanitization durchzuführen.
So kann der Code aussehen, den man braucht, um eine Code-Sanitization durchzuführen.

Um dies umzusetzen sind Programmierkenntnisse vonnöten. Diese Absicherung der Datenausgabe kann z. B. ein Entwickler oder CTO einfach implementieren.

Ein gesundes Maß an Skepsis: So schützen sich User

Aber nicht nur Seitenbetreiber, auch Seitenbesucher sind von XSS-Attacken betroffen. Viele XSS-Angriffe lassen sich schon durch einen kritischen und vorsichtigen Umgang im Zusammenhang mit “fremden” Links verhindern. Nutzer haben beispielsweise die Möglichkeit, NoScript-Addons zu verwenden. Diese verhindern das Ausführen von Skripten, also den schädlichen Codezeilen, die z.B. Daten klauen.

Wer auf Nummer sicher gehen möchte, kann auch das clientseitige Cross-Site-Scripting einfach durch das Ausschalten der JavaScript-Unterstützung im Browser abwenden. Denn ist dieses sogenannte Active Scripting deaktiviert, haben bestimmte Arten von XSS-Attacken keine Chance mehr, da die schädlichen Anwendungen gar nicht erst gestartet werden. Allerdings “funktionieren” die meisten modernen Websites dann nicht mehr richtig – oder im schlimmsten Falle gar nicht mehr. Hier gilt es also zwischen der Sicherheits- und Usability-Gesichtspunkten abzuwägen.

So deaktivierst du JavaScript mit einem Klick in den Einstellungen des Chrome-Browsers.
So deaktivierst du JavaScript mit einem Klick in den Einstellungen des Chrome-Browsers.

Fazit: XSS-Attacken sind teils sehr komplex, der Schutz aber teils recht einfach

XSS stellt sowohl für dich als Webseitenbetreiber als auch für deine Besucher und Kunden eine Gefahr dar. Immer wieder werden Schwachstellen in Plugins oder Themes bekannt. So zum Beispiel bei dem Plugin WP Statistics, mit mehr als 400.000 aktiven Installationen, oder bei WooCommerce und Jetpack, mit jeweils mehr als drei Millionen aktiven Installationen.

Wenn du deine Plugins und Themes aktuell hältst und eine WAF nutzt, hast du aber schon einen großen Schritt in die richtige Richtung getan. Wenn du zudem noch Whitelists für eingehenden und ausgehenden Code nutzt, hast du deine Seite schon hervorragend abgesichert. Gerade die letzten beiden Maßnahmen sind jedoch nicht ohne Weiteres und ohne Programmierkenntnisse umsetzbar.

Im Vergleich zu den recht primitiven Brute Force Attacken sind die komplexeren XSS-Angriffe leider noch relativ häufig erfolgreich. Allerdings gibt es deutlich weniger dieser sog. Complex Attacks, als es Brute Force Attacken auf WordPress-Seiten gibt. Dennoch solltest du es Angreifern so schwer wie nur irgend möglich machen. Denn ein erfolgreicher Hack kostet nicht nur Zeit und Geld für die Entfernung der Skripte, sondern kann auch deine Position in Suchmaschinen gefährden.

Vielleicht hast du auch schon Erfahrungen mit XSS-Attacken gemacht? Was tust du, um dich davor zu schützen?

Wenn du fortfährst, stimmst du unserer Cookie-Richtlinie zu.