Schutz vor XSS (Cross Site Scripting)

26. Februar 2012 AirSys News

Weiterführung der Reihe “Sicherheit bei Webapplikationen”

XSS ist die Abkürzung für Cross Side Scripting. Dabei handelt es sich um eine Form der HTML Injection, bei der Angreifer bestehende Sicherheitslücken in der Programmierung ausnutzen, um eigenen Code in Websites oder in Online-Applikationen einzuschleusen und dort zur Ausführung zu bringen. So ist es zum Beispiel durch gezieltes Phishing möglich den User in Sicherheit zu wiegen, indem man ihm die originale Website zeigt, allerdings ist dort meist ein Code “hinterlegt” der Kontakt zum Server des “Hackers” herstellt, hier werden meist die wichtigen Daten gespeichert (Dropzone) und später werden die Passwörter geändert oder es wird gleich das Konto leer geräumt.

Es gibt 3 verschiedene Arten von XSS Angriffen: reflexive, persistente und DOM-basierte Angriffe

Bei den XSS-Attacken wird von den Angreifern in der Regel JavaScript (fast immer), ActiveScript oder Visual Basic Script (früher öfter) als Skript-Sprache verwendet.Bei reflexiven XSS-Angriffen wird der Schadcode beim Abruf einer Website nur temporär eingeschleust. Angreifer machen sich hier meist die Parameter-Übergabe bei dynamischen Websites zunutze, die in der Regel über HTTP-GET oder HTTP-POST erfolgt. So kann der Angreifer durch Manipulation der HTTP-GET- beziehungsweise HTTP-POST-Parameter in der URL Einfluss auf die Inhalte einer dynamischen Website nehmen und so kontrolliert Schadcode ausgeben lassen. Meist wird ein Bild oder ein Video eingebunden, was nicht von der originalen Quelle stammt. Man kann eigentlich auch alles andere Ausgeben, wie z.B. einen Text oder einen Cookie. Typischer XSS, viele denken allerdings das ist alles was hinter Cross Side Scripting steckt, allerdings geht von den anderen Angriffsmethoden eine höhere Gefahr aus!

Bei der persistenten XSS-Angriffsmethode wird der Schadcode dauerhaft in einer Website platziert. Dazu muss man es schaffen den Code in Datenbank der Website zu speichern und von dort aus dann durch die Seite beim Abruf geladen sowie Client-seitig ausgeführt. Hierzu bedient er sich einfach der von vielen Website-Betreibern verwendeten Web-Applikationen. Wie zum Beispiel Gästebüchern, Foren und Kommentarfunktionen, wenn man dort etwas postet und der Coder beim schreiben der Funktion die falschen Recht zugelassen hat bzw. keinen guten Filter eingebaut hat, dann ist es zum Beispiel durch einschleusen von Javascript oder HTML Code möglich eine automatische Weiterleitung einzurichten, sobald die betreffende Webapplikation aufgerufen wird. Der Code wird also nach dem Aufruf durch einen Nutzer vom Browser interpretiert und ausgeführt, was dann zu manipulierter Darstellung oder Weiterleitung führen kann. Leicht schützen kann man sich eigentlich als User recht leicht, wenn man zum Beispiel unter Firefox das Addon “NoScript” installiert, aber zum Schutz komme ich später genauer.

Die DOM-basierten Angriffe sind die Seltensten, da sie schwer auszunutzen sind und sie setzen Schwachstellen meist nicht nur bei einer Website, sondern auch auf Nutzer-Seite zum Beispiel im Browser voraus. Meist werden Sonderzeichen in URLs gepackt, die der Browser gar nicht oder nicht richtig verarbeiten kann, so, dass auch eine manipulierte Darstellung erzeugt wird. Die DOM-basierten Angriffe werden oft auf Seiten die viel mit Javascript arbeiten verwendet, da sie dort am leichtesten zu erzeugen sind. Aber wie bereits erwähnt ist dieser Art des Angriffs eher selten und wird nur ausgeführt, wenn man einen ganz bestimmten Nutzer schaden möchte und eine Software möglicherweise kennt, also von Exploits und Bugs ausgehen kann.

Schutz seitens der Websitebetreiber und Admins

Wichtig ist wie bei Websecurity im Allgemeinen zunächst eine saubere Programmierung, also mit sinnvollen Filtern und trotzdem recht gründlich. Dabei muss man vor allem auf die GET- und POST Parameter in der URL achten. Bei PHP kann man bestimmte Zeichen die für XSS benötigt werden auch einfach durch andere ersetzen wie zum Beispiel das <> Zeichen, durch einen / oder ähnliches. Das ist möglich indem man den jeweiligen Entity-Code transformiert. In Foren, Gästebüchern oder ähnlichen Applikationen, die Nutzern das Veröffentlichen eigener Inhalte auf Websites ermöglichen, kann HTML entweder gänzlich deaktiviert oder stattdessen auf andere Auszeichnungssprachen wie BBCode zurückgegriffen werden, wobei es dafür auch schon XSS gab, deshalb immer schön die Sachen auf dem neusten Stand halten! Wir bei Acsiii lassen aus gutem Grund in den Kommentaren nur bestimmte Zeichen bzw. HTML Befehle zu, da es auch vor XSS schützt.

Eine neue Art der Sicherheit soll durch die Content Security Policy (CSP) entstehten. Sie bietet Website-Betreibern eine weitere Möglichkeit, um ihnen zu helfen die User vor einer Vielzahl von XSS zu schützen. Mit ihr können sie Browsern durch Bereitstellung des HTTP-Headers “X-Content-Security-Policy” mitteilen, welche Domains sie als Quelle vertrauenswürdiger JavaScript-Codes akzeptieren sollen. Das System wird bereits von einigen Browsern unterstützt. Browser, die CSP unterstützen und bei denen diese Funktion aktiviert ist, ignorieren JavaScript-Codes auf HTML-Seiten standardmäßig, also kann es kaum noch zu XSS kommen, wenn die Website an der Content Security Policy teilnimmt.

Der Einsatz von CSP ist zwar mit einigem Aufwand verbunden, doch er lohnt sich. Wenn man als professioneller Websiteanbieter seine Kunden im Bereich Security überzeugen kann hat man sicherlich einen Vorteil gegenüber Mitbewerbern ohne dieses Zertifikat. Für viele Content-Management-Systeme sind bereits fertige Plug-ins verfügbar, die Website-Betreiber bei der Umstellung auf CSP unterstützen, also einfach mal nachschauen, vielleicht kann man so der nächsten “Attacke” vorbeugen.

Mozilla gilt in diesem Bereich als Vorreiter, ich kann nicht nachvollziehen, warum manche Browserhersteller da nicht nachziehen, sondern die Sicherheit der Kunden gefährden. Internetexplorer, Firefox und Chrome sind mit solchen Systemen bereits ausgestattet, aber die Websitebetreiber müssen ja diesen Dienst auch noch anbieten, damit die Sicherheit gewährleistet wird. Also ein indirekter Aufruf an alle Blogger die das hier lesen, schaut euch mal nach Plugins um, die das System unterstützen, es lohnt sich. Hier der Link zur WordPress Erweiterung: http://wordpress.org/extend/plugins/content-security-policy/

Zum Schluss bleibt mir noch zu sagen, dass einem als erfahrener User mit einem gewissen Grundwissen nichts passieren kann. Also immer schön aufmerksam sein, nicht auf alles drauf klicken und Spammails sofort löschen. Falls einem etwas komisch vorkommt lieber mal den Quelltext anschauen, oder unter anderem Browser die Seite aufrufen, den einige Browser bieten besseren Schutz als andere! Der Firefox bietet mit dem Plugin “NoScript” eine perfekte Sicherheit, denn er lässt nur Javascript Code zu, den sie auch erlauben. Downloadlink: https://addons.mozilla.org/de/firefox/addon/noscript/

Als Websitebetreiber immer auf dem aktuellsten Stand sein und brav Plugins installieren, weil die bringen schon einen gewissen Schutz!

~AirSys

Tweet

Security, XSS. Sicherheit. Webapplikationen,

4 Responses to “Schutz vor XSS (Cross Site Scripting)”


Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress. Designed by elogi.
Stop ACTA