So überprüfen Sie, ob Ihr WordPress-System gegen XSS-Angriffe gesichert ist
Weltweit sind fast 48 Prozent aller Websites anfällig für Cross-Site-Scripting (XSS). Weltweit nutzen ziemlich genau 25 Prozent aller Websites die WordPress-Plattform.
Daraus folgt, dass im Venn-Diagramm von Websites, die für XSS anfällig sind, und Websites, auf denen die WordPress-Plattform ausgeführt wird, die Überschneidung ziemlich groß sein muss.
Dies ist kein Klopfen an der Plattform selbst. Das WordPress-Team hat Sicherheit zu einem festen Bestandteil seines Leitbilds gemacht und patcht aggressiv Schwachstellen, sobald sie bekannt werden. Dies hält die Leute jedoch nicht davon ab, unsichere Themen zu programmieren oder unsichere Plugins zu installieren. Diese Probleme sind die beiden Haupteinfallstore für XSS-Angriffe auf WordPress-Sites, und dieser Artikel wird erläutern, wie man sie stoppen kann.
Einführung in Cross-Site-Scripting
Lassen Sie uns zunächst besprechen, wie XSS-Angriffe ausgeführt werden. Es gibt mehr als eine Art von XSS-Angriffen, daher werde ich mit einer vereinfachten Definition beginnen. Im Allgemeinen beginnen XSS-Angriffe mit unsauberen Eingaben – Kommentarformularen, Kommentarfeldern, Suchleisten usw. Diese Angriffe sind sehr unterschiedlich ausgefeilt. Tatsächlich sehen WordPress-Benutzer jeden Tag die einfachste Form von XSS-Angriffen: den Spam-Kommentar. Sie wissen, wovon ich spreche: „Danke für den ausgezeichneten Artikel. Übrigens, hier ist meine Seite, auf der ich von zu Hause aus 5.000 Dollar pro Woche verdiene: www.only-an-idiot-would-click-this-link.co.uk.“
Spam-Kommentare sind in gewisser Weise das perfekte Beispiel für einen XSS-Angriff. Eine böswillige Entität untergräbt die Infrastruktur Ihrer Website (das Kommentarfeld), um ihren Inhalt (den böswilligen Link) auf Ihrer Website zu platzieren. Obwohl dies ein gutes anschauliches Beispiel ist, wird ein realistischerer XSS-Angriff viel subtiler sein. Die Erstellung eines Spam-Kommentars dauert ungefähr fünf Sekunden. Ein XSS-Angriff ist etwas, wofür ein richtiger Hacker etwas mehr Zeit aufwenden wird.
Ein echter schwarzer Hut wird versuchen, alle Aspekte Ihrer Website zu nutzen, die Daten an den Server senden, und sie im Wesentlichen als Miniatur-Texteditor verwenden. Wenn Ihre Eingaben nicht geschützt sind, bedeutet dies, dass sie ihren Code buchstäblich nehmen und Ihre Anwendung zwingen können, ihn auszuführen und im Browser eines Benutzers zu rendern (und dazu kann Ihr Browser gehören). Im Gegensatz zu Spam-Kommentaren kann nur eine detaillierte Untersuchung des geänderten Codes Ihrer Website oder das Durchsuchen von Website-Interaktionen einen Verstoß aufdecken. Wie man sich vorstellen kann, gibt es unendlich viele unappetitliche Dinge, die aus einem solchen Verstoß resultieren könnten.
Einfacher Vandalismus ist eine relativ häufige Folge von XSS-Angriffen, was dazu führt, dass Ihren Benutzern anstelle Ihrer Inhalte groteske Bilder oder politische Propaganda gezeigt werden. Vermarkter mit wenigen langfristigen Plänen oder ethischen Bedenken werden sie verwenden, um gegen ihren Willen bei Menschen zu werben. Ein nuancierterer und subtilerer Angriff könnte die Anmeldeinformationen Ihrer Benutzer stehlen. Wenn einer von ihnen über Administratorrechte verfügt, stehen möglicherweise alle persönlichen Informationen, die Sie auf Ihrer Website speichern, zur Verfügung. Alternativ könnten sie den anfänglichen XSS-Angriff als Hebel nutzen, um Ihre Website aufzubrechen und noch fortschrittlichere Malware zu installieren.
Angriffe stoppen
Wenn Sie eine einigermaßen versierte Person mit Code sind und der alleinige Eigentümer einer relativ kleinen WordPress-Site sind, dann sind sichere Codierungspraktiken wahrscheinlich der beste Weg, um Ihre Site vor Cross-Site-Scripting-Angriffen zu schützen. Ich füge diesen Vorbehalt hinzu, da es Ihnen als Teil einer größeren Organisation, die eine komplexere Anwendung ausführt, möglicherweise nicht möglich ist, jeden Bereich zu finden, in dem ein böswilliger Angreifer Code einschleusen könnte. Moderne Websites können sehr umfangreich sein, und es könnte sich für Sie lohnen, einen erfahrenen Fachmann einzustellen und Ihre Zeit anderen Beschäftigungen zu widmen, um Ihre Website für Ihre Leser noch besser zu machen.
Eine weitere Warnung lautet: Wenn Sie sich nicht besonders mit Code auskennen und jemand anderen Ihre Website für Sie erstellen lassen, gehen Sie nicht davon aus, dass er sichere Codierungspraktiken verwendet hat. Selbst die erfahrensten Entwickler sind dafür bekannt, die Sicherheit auf der Strecke zu lassen oder kleinere Fehler zu machen, ohne dass jemand anderes ihre Arbeit überprüft. Andere Entwickler wissen möglicherweise einfach nicht, was sie in Bezug auf die Sicherheit tun, und andere beschönigen immer noch die Sicherheit, um zu sparen Zeit für sich selbst (trotz mangelnder Professionalität, was das angeht). Stellen Sie zusammenfassend sicher, dass Sie einen anerkannten Fachmann beauftragen, der bei der Entwicklung und dem Schutz Ihrer Website keine Abstriche macht.
Angesichts dieser Bedenken ist eine der ersten und einfachsten Maßnahmen, die Sie ergreifen können, um Cross-Site-Scripting zu verhindern, die Validierung von Benutzerdaten.
Angenommen, Sie haben ein Anmeldeformular auf Ihrer Website, und dieses Formular fordert den Benutzer auf, seinen Namen einzugeben. Ein böswilliger Benutzer könnte stattdessen Folgendes eingeben:
Dies könnte beispielsweise dazu führen, dass die nächste Person, die diese Seite besucht, eine Kopie ihrer Cookies an einen Angreifer sendet.
Sie können sehen, dass in diesem Beispiel die obige Codezeichenfolge überhaupt nicht wie der Name einer Person aussieht. Ihr Server weiß das nicht, aber mit ein paar gesetzten Parametern können Sie es ihm beibringen. Sie können dieses Feld beispielsweise anweisen, Sonderzeichen wie ,() und ; (Sie werden in einem Kommentarbereich nicht besonders benötigt). Sie können diesem Feld sagen, dass der Name einer Person wahrscheinlich keine Zahlen enthält. Wenn Sie bereit sind, ein bisschen drakonisch zu sein, können Sie dieses Feld anweisen, Eingaben abzulehnen, die länger als fünfzehn Zeichen sind (oder Sie können die Werte nach Belieben ändern). Wenn Sie diese Schritte unternehmen, wird der Schaden, den ein Angreifer mit einem bestimmten Feld anrichten kann, drastisch begrenzt.
Auch bei der Datenvalidierung kann es Formulare oder Felder geben, in denen Sie die Art der verwendeten Zeichen nicht realistisch einschränken können, z. B. in einem Kontaktformular oder Kommentarfeld. Was Sie tun können, ist Daten bereinigen. Dieser Prozess macht es HTML unmöglich, in einem bestimmten Feld ausgeführt zu werden, und wandelt alles, was möglicherweise als ausführbarer Code erkennbar ist, in nicht codierende Zeichen um. Beispielsweise wird ein Hyperlink nicht angezeigt, wo sonst einer sein könnte.
Schließlich gibt es Fälle, in denen Ihre Website möglicherweise Daten anzeigt, die für Benutzer unsicher sind. Nehmen wir an, jemand schreibt einen böswilligen Kommentar auf einer Ihrer Seiten, der anschließend von der Suchfunktion Ihrer Website indexiert wird. Immer wenn einer Ihrer Benutzer eine Suche durchführt, wird dieser bösartige Code ausgeführt, wenn sein Browser die Suchergebnisse lädt. Dies wird durch Escaping von Daten verhindert, wodurch sichergestellt wird, dass, wenn Ihre Website Daten an einen Benutzer liefert, der einzige Code, der ausgeführt wird, der Code ist, den Sie ausführen möchten.
Für weitere Informationen zur Datenvalidierung, Datenbereinigung und Datenflucht bietet der WordPress Codex eine hervorragende Ressource. Es wird die obigen Konzepte im Detail erklären und weitere Beispiele geben, die universell angewendet werden können.
Andere Methoden
Große Unternehmen haben größere Websites; es ist eine Tatsache. Vielleicht nutzen Tausende von Menschen Ihre Website pro Tag. Vielleicht gibt es statt Standardformularen und -feldern auch Animationen, diverse Portale, in Java geschriebene Teile und so weiter. Selbst wenn Sie all das im Auge behalten, kann es sein, dass in einer Ihrer Bewerbungen ein Zero Day steht und Sie keine Möglichkeit haben, sich zu wehren.
Wenn Sie in einer solchen Situation den Einfluss und das Budget dafür haben, würde ich Ihnen empfehlen, in eine Web Application Firewall (WAF) zu investieren. Eine gute WAF verfügt über Korrelationsregeln, die automatisch die HTML-Strings identifizieren und blockieren, die am häufigsten mit Code-Injection-Angriffen in Verbindung gebracht werden. Sie können Sie auch benachrichtigen, wenn Anwendungen damit beginnen, Daten zu exfiltrieren, obwohl dies nicht vorgesehen ist oder dies in einem ungewöhnlichen Umfang geschieht, und so zur Abwehr von Zero-Day-Angriffen und anderen fortschrittlichen Bedrohungen beitragen. Eine WAF ist keine Wunderwaffe, aber ein unschätzbares Werkzeug für Sicherheitsexperten und Websitebesitzer, die komplexe Anwendungen schützen möchten.
Es gibt auch eine Reihe von Plugins, die vorgeben, XSS-Angriffe abzuwehren. Ich empfehle diese eigentlich nicht. Anstatt das Risiko zu reduzieren, stellen viele dieser Plugins nur eine weitere Angriffsfläche dar, die ein Hacker ausnutzen kann. Sogar eines der bekanntesten und am weitesten verbreiteten Sicherheits-Plugins, Akismet, wurde letztes Jahr als anfällig für XSS-Angriffe befunden. Verlassen Sie sich bei der Abwehr von XSS-Angriffen nicht auf halbe Sachen. Entwickeln Sie die erforderlichen Fähigkeiten und verwenden Sie die geeigneten Tools, um Ihre Website sicher zu halten.
Andere praktische Anwendungen
Diese Informationen können für Uneingeweihte etwas komplex sein, aber ich würde es hassen, wenn Menschen durch die potenzielle Komplexität dieser Informationen entmutigt werden. Sollte es zu einem XSS-Angriff kommen, können Sie sicher sein, dass die Bereinigung der Folgen eines solchen Ereignisses weitaus komplexer ist, als die Änderungen an Ihrer Website vorzunehmen. Die Bereinigung der Reputationskosten für Ihre Website (regelmäßige Leser werden Ihre Website ziemlich leicht fliehen) wird ein zusätzliches Problem sein, über das Sie sich keine Sorgen machen möchten.
Selbst wenn Sie jemand anderen mit der Entwicklung und Sicherheit Ihrer Website beauftragen, tun Sie, was Sie können, um zumindest auf einen Notfall reagieren zu können und zu wissen, wo Ihre Schwachstellen liegen. Zu wissen, wie Sie Ihr System überprüfen, wird auf lange Sicht eine wichtige Fähigkeit sein und die Grundlage für andere Sicherheitsthemen und Website-Entwicklungsprojekte bilden. Alles ist online miteinander verbunden, und während XSS-Angriffe in den letzten Jahren möglicherweise der Vergangenheit angehören (wie unwahrscheinlich dies auch ist), wird das Wissen um die Besonderheiten Ihrer Website niemals veraltet sein.
Abschließende Gedanken
Die Landschaft der Internetsicherheit ändert sich ständig. Sie können nie ganz sicher sein, wie ein XSS-Angriff aussehen könnte oder wie er gegen Sie verwendet werden könnte, aber Sie schulden es sich selbst und Ihren Lesern, sicherzustellen, dass Sie alles in Ihrer Macht Stehende tun, um sie zu stoppen. Informieren Sie sich regelmäßig über diese Bedrohung und informieren Sie sich regelmäßig (ich würde mindestens monatlich empfehlen) über relevante Entwicklungen in der Welt der Cybersicherheit.
Das bedeutet auch nicht, dass Sie andere Bedrohungen ignorieren können. Der Zugang zu öffentlichen Netzwerken erfordert immer noch die VPN-Nutzung, um sicher zu sein. Sie dürfen die Sicherheit jedes Computers, den Sie für den Zugriff auf Ihre Website verwenden, nicht vernachlässigen. Anmeldeinformationen müssen immer noch häufig geändert und vor Brute-Force-Angriffen geschützt werden. XSS-Angriffe sind brutal, aber sie sind nicht die einzige Bedrohung, auf die Sie achten müssen.
Es könnte auch angebracht sein, diese Informationen (oder sogar diesen Artikel) mit Ihren Kollegen und Interessenten zu teilen, um Widerstand gegen diese Art von Angriffen zu verbreiten. Auch wenn Sie möglicherweise nicht in der Lage sind, allzu viel selbst zu tun, könnten wir einen allgemeinen Rückgang dieser Art von Angriffen feststellen, wenn sich genügend Menschen angemessen schützen, da Hacker versuchen, einen anderen Weg zu finden, um von armen Internetnutzern zu profitieren.
Haben Sie selbst schon eine Idee, wie Sie XSS-Attacken erkennen und sich in Zukunft dagegen wehren können? Gibt es andere Erkennungs- und Entfernungsstrategien, die Sie selbst anwenden, um diese Bedrohung zu bekämpfen? Gibt es Tools, die Sie Ihren Mitlesern empfehlen würden? Wenn ja, hinterlassen Sie bitte unten einen Kommentar und setzen Sie dieses wichtige Gespräch mit Ihren Mitlesern fort.