Skip to main content

Wie kann eine Content Security Policy XSS und andere Schwachstellen verhindern?

Artikel von

Luke Watts

Webinar header LP

9. Februar 2020

0 Min. Lesezeit

Code im Zeitalter der Cyberkriminalität sicher zu halten, ist keine leichte Aufgabe. Viele altbekannte Methoden sind heute noch genauso wirksam wie vor 20 Jahren. Beim Thema Web-Hacking haben moderne Browser erhebliche Fortschritte in puncto Sicherheit gemacht. Eine Content Security Policy kann viele der ältesten Tricks verhindern, die heute überraschend weit verbreitet sind.

Injection-Angriffe gibt es seit den Anfängen des Internets, und auch 2020 sind sie weiterhin ein Problem. Werfen wir einen genaueren Blick auf die berüchtigte XSS-Schwachstelle und darauf, wie eine lückenlose Content Security Policy viel dazu beitragen kann, Websites davor zu schützen, als Einfallstor für schädlichen Code zu dienen.

Was ist eine XSS-Schwachstelle?

Cross-Site-Scripting (XSS) ist ein Angriff, der eine häufige Schwachstelle in Webanwendungen ausnutzt. Dabei nutzt ein Hacker die Webanwendung, um über Code, der in die Website „injiziert“ wird, Malware an andere Nutzer zu übertragen. Diese Malware kann viele verschiedene Aktionen ausführen. Am häufigsten stiehlt sie jedoch die Cookies anderer Nutzer.

Der Diebstahl von Cookies ermöglicht es Hackern, sich beim Zugriff auf eine Website als ihre Opfer auszugeben. Dazu wird JavaScript-Code über ein Formular in die Website eingeschleust, das HTML auslesen kann – etwa über eine Artikelliste, einen Webkommentar oder eine Suchleiste. Jeder, der den Link zu dem Kommentar, der Liste oder dem Suchergebnis mit dem eingebetteten schädlichen Code aufruft, erhält die Malware automatisch auf seinem Computer.

Die Malware extrahiert dann die Cookies aus der Sitzung eines Nutzers und sendet sie an den Hacker. Dieser kann die Cookies in seinen Browser laden. Besucht er die angegriffene Website, authentifiziert sie ihn als sein Opfer. Anschließend muss er nur noch die Rechnungsdaten des Nutzers finden oder das Passwort des Kontos ändern.

XSS gibt es seit den Anfängen von HTML. Die Schwachstelle wurde gegen E-Mail-Dienste, E-Commerce-Websites, Online-Banking- und Auktionsseiten eingesetzt. Das Problem war zeitweise so weit verbreitet, dass auch Facebook, Twitter und YouTube zu den betroffenen Websites gehörten. Trotz erheblicher Fortschritte bei der Sicherheit besteht es weiterhin. Schätzungen zufolge waren 2019 noch 84 Prozent aller Websites für jQuery-XSS anfällig.

So schützen Sie sich mit einer Content Security Policy vor XSS

Eine Content Security Policy (CSP) ist eine Sicherheitsebene, die speziell darauf ausgelegt ist, Injection-Angriffe – einschließlich solcher mit XSS – zu erkennen und abzumildern. Sie erschwert es Hackern erheblich, schädlichen Code einzuschleusen, um Daten oder Cookies legitimer Nutzer einer Website abzugreifen.

Mit einer CSP können Entwickler:

  • Zulässige Ressourcen und ihre Ursprünge mithilfe einer Positivliste festlegen: Anders gesagt: Skripte und Code, die für den Betrieb der Webanwendung benötigt werden, sind aus bestimmten Quellen erlaubt. Alles andere wird blockiert.

  • Die CSP-Direktive festlegen: Standardmäßig lautet diese Richtlinie default-src, sie lässt sich jedoch ändern. Mehrere Direktiven ermöglichen es, bestimmte Elemente der CSP nach Bedarf zu steuern.

  • Festlegen, ob Inline-Skripte oder eval() zulässig sind: Standardmäßig blockiert ein CSP-Header sowohl Inline-Skripte als auch die Funktion eval() als potenziell schädlich.

  • Festlegen, ob Style-Attribute in HTML zulässig sind: Da CSS ausgenutzt werden kann, lassen CSP-Standardeinstellungen keine <style>-Blöcke oder das Attribut innerhalb von HTML zu.

  • Richtlinienverstöße an den Server melden: So lassen sich Fälle von Missbrauch nachverfolgen.

Eine CSP wird normalerweise auf dem Server eingerichtet; das genaue Vorgehen kann stark variieren. Wenn ein Serviceanbieter jedoch keine Kontrolle über die Serverkonfiguration ermöglicht, lässt sich eine CSP trotzdem mithilfe von Meta-Tags im Header der Website aktivieren.

Entwickler können ihre Website außerdem auf die Verwendung von HTTP-Security-Headern untersuchen und testen, um den aktuellen Status zu ermitteln, oder den CSP Evaluator nutzen, um eine CSP-Konfiguration weiter abzusichern.

Warum eine Content Security Policy verwenden?

Eine CSP ist eine gute Wahl für jede Website mit komplexen Webanwendungen, Anmeldefunktionen und Nutzer-Cookies.

1. XSS ist allgegenwärtig und schädlich

XSS nutzt die Funktionsweise von Browsern aus, insbesondere die Tatsache, dass Browser nicht selbst zwischen legitimem und eingeschleustem Code unterscheiden können. Dadurch entsteht praktisch eine Hintertür zu Nutzerdaten und anderen vertraulichen Informationen.

2. Sie schützt vor schwer erkennbaren XSS-Schwachstellen

Jede Webanwendung, die Cookies für Anmeldefunktionen verwendet, kann für XSS anfällig sein – selbst wenn sie ansonsten gut entwickelt wurde. Hacker sind hartnäckig: Auch eine scheinbar sichere Codebasis kann Schwachstellen aufweisen, die Entwicklern entgehen.

3. Eine CSP unterstützt weitere Best Practices für Sicherheit

Eine CSP unterstützt die Durchsetzung von Best Practices für Sicherheit, indem sie viele Aktionen einschränkt und die Liste zulässiger Ursprünge verkürzt. Am effektivsten ist sie daher in Kombination mit weiteren Best Practices für Sicherheit, etwa Template-Systemen, Schwachstellenscans und manuellen Sicherheitsprüfungen.

Lassen Sie Ihre Website nicht ungeschützt

Bei all dem Fokus auf Unternehmens- und DevOps-Sicherheit übersehen viele möglicherweise, dass Websites immer noch gehackt werden können – und tatsächlich gehackt werden. XSS ist eine altbekannte Schwachstelle, die Websites ohne eine geeignete Content Security Policy weiterhin gefährden kann. Zum Glück lässt sich eine CSP relativ einfach einrichten. Ergreifen Sie jetzt Maßnahmen, damit Ihre Website genauso gut geschützt ist wie der Rest Ihres Unternehmens.

Verbessern Sie Ihre Fähigkeiten im sicheren Programmieren

Kostenlose, hochwertige Schulungen zur Entwicklersicherheit – wann und wo Sie möchten.