Wie sicher ist Ihre Website und wie sinnvoll sind Security Header und Content Security Policy?

Im Bereich der Webanwendungen gibt es viele mögliche Ansatzpunkte für bösartige Akteure, Daten zu stehlen oder Systeme zu korrumpieren. Wir beschreiben einige Angriffsszenarien und Möglichkeiten, die Angriffsfläche zu verringern.

Wenn wir für unsere Kunden Software entwickeln, handelt es sich in aller Regel um webbasierte Anwendungen für Intra- oder Internet. Im Rahmen der Konzeption und Entwicklung kommen viele Dinge zur Sprache: Kosten, Features, Workflow-Integration, Schnittstellen für Datenflüsse - all die Punkte, die für ein dienstleistendes oder produzierendes Unternehmen wichtig sind. „Software-Sicherheit“ hingegen ist eher selten ein umfassendes Thema. Dabei hat Software-Sicherheit in der Praxis einen entscheidenden Nutzen: Schaden verhindern.

Schaden entsteht beispielsweise dann...

  • wenn Systeme durch Fehler oder Angriffe versagen und die Produktion von Waren oder Dienstleistungen beeinträchtigt wird;
  • wenn sensible Daten von Unbefugten geklaut werden, wodurch wiederum rechtliche Auseinandersetzungen, Schadenersatz-Ansprüche oder Strafen entstehen;
  • wenn das Abhandenkommen von sensiblen Daten zu Nachteilen oder im schlimmsten Fall zu Gefahr für Leib und Leben von Menschen führt.

Software-Sicherheit bei Webanwendungen ist eine spezielle Herausforderung, insbesondere, wenn es sich um offen erreichbare Plattformen handelt, auf die theoretisch jeder zugreifen kann, der über einen Internet-Anschluss verfügt.

Wir hatten in der Vergangenheit beispielsweise eine Anfrage von einem großen, internationalen Konzern, der ein offen über das Internet erreichbares soziales Netzwerk entwickeln wollte, das Menschen mit speziellen Krankheiten den Austausch untereinander ermöglichen würde.

Wenngleich der tragende Gedanke dahinter ehrenwert war, haben wir uns seinerzeit dazu entschlossen, diese Anfrage abzulehnen und dem Kunden auch geraten, von der Umsetzung generell abzusehen. Auf das Projekt selbst hätten wir selbstverständlich große Lust. Aber wir sind jedoch der Meinung, dass sensible persönliche Daten wie medizinische Indikationen und physische oder psychische Leiden auf keinen Fall ins offene Internet gehören.

Hoher Schutzbedarf auch bei weniger kritischen Daten

Allerdings gibt es aus unserer Sicht auch bei Webanwendungen, die nicht ganz so sensible Informationen beinhalten, durchaus hohen Schutzbedarf: Firmen-Websites, E-Commerce-Plattformen, Nachrichtenportale, Blogs oder webbasierte Spiele können Sicherheitsprobleme verursachen, die jedem einzelnen Besucher erheblichen Schaden zufügen. Selbst dann, wenn die Entwickler der jeweiligen Online-Angebote in einem dem Stand der Technik angemessenen Rahmen auf Software-Sicherheit geachtet haben.

Es gibt verschiedene Angriffsarten, von denen Webanwendungen besonders betroffen sind. Bei diesen Attacken geht es nicht nur um Zerstörung oder Datenklau, sondern auch um fragwürdige oder illegale Datensammelei zum Beispiel für werbliche oder betrügerische Zwecke. Wir zählen ein paar Angriffsarten auf, mitsamt Möglichkeiten, diesen Problemen innerhalb von Webanwendungen zu begegnen.

XSS - Cross Site Scripting

XSS ist als Oberbegriff für eine Gruppe von Angriffsmustern zu verstehen. Im Grunde geht es darum, dass maliziöse Programmfunktionen von fremden Domains oder Plattformen geladen werden, in der Regel, ohne dass der Besucher einer Website davon etwas mitbekommt.

XSS kann für verschiedene bösartige Aktionen genutzt werden, beispielsweise um fehlerhafte Daten in Datenbanken einzuschleusen, auf den Anwender-Systemen Schaden anzurichten, Daten zu löschen oder um Zugangsdaten zu ergattern.

Es gibt verschiedene Maßnahmen, um solche XSS-Angriffe zu verhindern - etwa das Überprüfen jeglicher Eingaben von Benutzern (sei es in der Adresszeile des Browsers oder in Formularen innerhalb anderer Interaktionsmöglichkeiten) und ebenso das Überprüfen der Ausgaben (z.B. Datenbank-Inhalte) eines Systems, noch bevor diese den Nutzer erreichen.

Ein zusätzlicher Baustein für die Vermeidung von XSS ist die Aktivierung des Security-Headers „X-XSS-Protection“. Dieser verhindert, dass Skripte mitsamt potenziell schädlicher Funktionen von fremden Quellen geladen werden und reduziert somit die Angriffsfläche von Webanwendungen signifikant.

Content-Klau oder Content-Missbrauch via Frames

So genannte „Frames“ (oder auch iframes) sind ein sehr altes Konzept im Bereich der Webentwicklung, das es ermöglicht, Inhalte von einer beliebigen (auch fremden) Adresse in eine Webanwendung einzubetten. Man kann einen Frame als eine Art Browserfenster (nur ohne die ganzen Bedienelemente) betrachten, das innerhalb einer anderen Webseite angezeigt wird.

Das eröffnet diverse Möglichkeiten hinsichtlich des Missbrauchs. Man könnte beispielsweise eine bösartige Website bauen, auf der eine Online-Banking-Anwendung der Sparkasse via Frame eingebunden wird. Der Nutzer sieht die vertraute Bank-Website und gibt im vollen Vertrauen seine Zugangsdaten ein. Derjenige, der die Bank-Anwendung missbräuchlich auf seiner bösartigen Website mittels frame einbindet, könnte nun durch unsichtbare Tricks die Eingaben des ahnungslosen Banking-Nutzers abfangen und sich entsprechend Zugriff auf dessen Online-Konto verschaffen. Diese Art der Angriffe nennt man Clickjacking.

Um zu verhindern, dass Webanwendungen via Frame an unerwünschten Stellen eingebunden werden, existiert der Security-Header „X-Frame-Options“. Mittels diesem lässt sich bestimmen, dass Website-Inhalte nur von der eigenen Domain oder von anderen, als vertrauenswürdig bestimmten, Webanwendungen mittels frame eingebunden werden können.

Sicherheitslücken durch falsch interpretierte Dateiformate

Browser sind hochkomplexe Programme und aufgrund ihrer zentralen Funktion als Schnittstelle zwischen Mensch und Webanwendungen eine sehr attraktive Angriffsfläche.

Dass es so oft zu Updates von Browsern kommt, ist zu einem großen Teil der Tatsache geschuldet, dass Sicherheitsprobleme beseitigt werden müssen, die immer wieder auftauchen.

Ein potenzielles Einfallstor für Schadprogramme ist eine Irreführung des Browsers hinsichtlich von Dateiformaten. Ein Browser ist beispielsweise nicht nur in der Lage, HTML-Seiten anzuzeigen, sondern kann auch PDF-Dateien oder andere Dateiformate interpretieren und darstellen. Browser besitzen einen eingebauten Erkennungsmechanismus, der in der Lage ist, gewissermaßen in Dateien hineinzuschauen und zu identifizieren, um was für einen Dateityp es sich handelt. Diese Funktion der automatischen Dateitypenerkennung kann aber missbraucht werden - was schlussendlich dazu führt, dass auf dem Computer des Anwenders sehr unerwünschte Funktionen oder Programme ausgeführt werden, die Schaden anrichten.

Ein Baustein, solche Angriffe zu verhindern, ist die Nutzung des Security-Headers „X-Content-Type-Options“. Er bietet durch eine Option „nosniff“ die Möglichkeit, die automatische Dateitypenerkennung des Browsers für eine Webanwendung abzuschalten.

Verschlüsselte Datenübertragung

Es ist heutzutage auch den meisten, weniger versierten Computernutzern bekannt, dass die Verschlüsselung von Daten, die übers Internet gesendet werden, ein wichtiger Aspekt im Hinblick auf Datenschutz und Datensicherheit ist. Wenn keine Verschlüsselung stattfindet, ist es beispielsweise den Betreibern von Internet-Infrastrukturen, staatlichen Akteuren oder Kriminellen mit entsprechender Ausrüstung möglich, Kommunikation mitzulesen.

In den Anfangstagen des Internets existierte noch der Nachteil, dass sehr viel Rechenzeit für Ver- und Entschlüsselung benötigt wurde und sowohl die Computer der Websitebesucher als auch die, die die Websites auslieferten, nicht besonders leistungsstark waren. Mittlerweile gibt es keinen Grund mehr, Websites nicht verschlüsselt auszuliefern, denn Implikationen hinsichtlich der Performance sind im Regelfall nicht mehr existent.

Es gibt verschiedene Methoden, Verschlüsselung zu erzwingen. Eine davon ist die Nutzung des Security-Headers „Strict-Transport-Security“. Dieser sorgt dafür, dass ein Browser nur noch via https mit einer Webanwendung kommuniziert, sofern diese über gültige SSL-Zertifikate verfügt.

Datenschutz-Problem: Nutzerverfolgung

Tracking, also die Nachverfolgung der Interaktionen von Website-Besuchern, ist im Internet allgegenwärtig. Ein stets interessanter, verwertbarer Datenpunkt ist, welche Websites Nutzer ansurfen, auch „woher“ sie kommen: Theoretisch lässt sich feststellen, ob ein Benutzer, der eine E-Commerce-Website wie amazon.de besucht, zuvor sueddeutsche.de angeschaut hat. Mit dieser Information lässt sich was anfangen: Wenn jemand die SZ liest, interessiert er sich eventuell auch für andere Lektüre einer bestimmten Kategorie oder ist vielleicht empfänglich für ein Gerät, mit dem sich digitale Tageszeitungen abonnieren und lesen lassen. Entsprechend zielgerichtet könnte Amazon dann für passende Produkte (z.B. einen Kindle) auf der eigenen Website werben.

Wenn man eine Website A besucht hat und anschließend eine Website B anschaut, gilt A als ein so genannter „Referrer“. Um dieses Referrer-Tracking zu unterbinden, gibt es den Security-Header „Referrer-Policy“. Der kann auf Website A so konfiguriert werden, dass es Website B nicht mehr möglich ist zu erkennen, dass der Besucher von Website A kam.

Datenschutz-Problem: Ausspionieren

Moderne Computer und Smartphones haben Kameras, Mikrophone, diverse Sensoren, Standort-Erkennung oder GPS und noch andere Features, die Einiges und bisweilen sehr Intimes über den Nutzer verraten. Browser haben teilweise Zugriff auf diese Funktionen, die das Leben durchaus erleichtern können: Zum Beispiel ist es ja durchaus praktisch, wenn Google Maps gerade den eigenen Standort erkennt und man diese nicht noch gesondert eingeben muss, um eine Route zu einem Zielort berechnen zu lassen.

Aber diese Information kann natürlich auch missbrauch werden zur Profilbildung, zur gezielten Werbung oder zur aktiven, physischen Verfolgung der Website-Besucher. Deshalb haben Browser grundsätzlich eine Funktion eingebaut, die dafür sorgt, dass der Nutzer zuerst sein aktives Einverständnis geben muss, bevor der Browser auf Sensoren oder Mikrofone oder Kameras zugreifen darf.

Eine zusätzliche, fundamentale Schranke lässt sich auch durch den Website-Betreiber implementieren - in Form des Security-Headers „Permissions-Policy“. Hier kann man von vornherein erlauben oder ausschließen, dass Websites auf Kameras, Mikros u.a. zugreifen dürfen. Das Einverständnis des Users ist aber in jedem Fall noch nötig, selbst wenn ein Security-Header so eingestellt sein sollte, dass er die Nutzung von Kamera und Mikro explizit gestattet.

Content von fremden Quellen: Die Content Security Policy (CSP)

Sowohl ein Thema im Rahmen der DSGVO als auch bezüglich Sicherheit: Content von Drittquellen.

Wer Funktionen von Google Maps, Youtube, Facebook, Twitter oder anderen Plattformen auf der eigenen Website nutzt, muss dafür sorgen, dass der Website-Besucher die Wahl hat, ob diese Ressourcen von extern geladen werden oder nicht. Dafür gibt es in der freien Wildbahn aktuell verschiedene technische Ansätze, die aber im Wesentlichen aufs gleiche Ergebnis hinauslaufen: Man muss als Website-Besucher irgendeinen Knopf drücken und somit sein aktives Einverständnis geben, dass einem externe Inhalte präsentiert werden. Denn diese externen Plattformen sammeln auch Daten, sobald man sich deren Content anzeigen lässt, und das sollte nicht ohne das Wissen und die Zustimmung der Nutzer passieren.

Auch aus Sicherheitserwägungen (Laden bösartiger Inhalte von externen Quellen) macht es Sinn einzuschränken und zu kontrollieren, welche Ressourcen auf einer Website eingebunden sind bzw. von ihr ausgeliefert werden. Zu diesem Zweck gibt es den Security-Header „Content-Security-Policy“ (CSP), mittels dem bestimmt werden kann, welche Inhalte von welchen Quellen überhaupt zulässig sind.

Sind die Security-Header in Ihrer Webanwendung gut konfiguriert?

Neben den oben genannten Security-Headern gibt es noch andere Varianten, die speziellere Probleme lösen, teilweise aber gar nicht plattform- bzw. Browserübergreifend kompatibel sind.

Aktuelle Listen zum Thema lassen sich unter anderem an diesen Stellen einsehen:

Zudem finden sich kostenlose Werkzeuge im Web, die bei der Analyse der Security-Header von Websites helfen, zum Beispiel

Security-Header sind allerdings keineswegs Allheilmittel für sichere Webanwendungen. Selbst bei aktivierten und sinnvoll konfigurierten Optionen kann es durch nachlässige Entwicklung oder ungeschulten Redakteuren dazu kommen, dass Funktionen oder Inhalte von Webanwendungen ausgeliefert werden, die hinsichtlich Datenschutz oder Sicherheit problematisch sind.

Wir stehen Ihnen mit Rat und Tat zur Seite...

  • ...wenn Sie Beratung brauchen;
  • ...wenn Sie eine Beurteilung des Status Quo Ihrer Webanwendung wünschen;
  • ...wenn Sie sich die Entwicklung einer Plattform wünschen, die aktuellen Standards und Best Practices im Bereich Sicherheit und Datenschutz entspricht.

Einfach anrufen oder mailen - wir freuen uns auf Ihre Anfrage.