https trotz SSL-Verschlüsselung unsicher

Gemäss der Analyse (PDF Dokument) von SecureNet sind aktuell (November 2012) die allermeisten verschlüsselten Webverbindungen über das https-Protokoll als unsicher einzustufen. Untersucht wurde eine seit 2009 bekannte Angriffstechnik, mit der die SSL-Verschlüsselung ausgehebelt werden kann. Aus dem gleichen Jahr stammt einen Schutzmechanismus, der diesen Angriff unterbindet: HTTP Strict Transport Security (HSTS).

Der Mozilla-Blog zu HSTS erklärt das Szenario. Der Trick beruht darauf, dass die initiale, anfragende Verbindung unverschlüsselt abläuft. Der Man in the Middle kann deshalb jeden HTTPS-Link, den der Server zurückliefert, in einen HTTP-Link umwandeln und die Verbindung zwischen ihm und dem Benutzer über die gesamte Verbindugsdauer unverschlüsselt halten. Die Verbindung zum Server wird mit HTTPS bedient, so dass der Server den Angriff kaum erkennen und abzuwehren kann.

Zum Glück ist die Gegenmassnahme einfach, wenn man sie denn nur umsetzt. Am Beispiel des apache-Webservers wird hier das Vorgehen illustriert. Die SSL-Konfiguration des VHosts wird um die Zeile

  1. Header add Strict-Transport-Security "max-age=31536000"

ergänzt. Damit wird der Browser in diesem Beispiel angewiesen, in einem Zeitraum von zwölf Monaten immer direkt im verschlüsselten Modus auf die Webseite zuzugreifen. Werte unter einem Monat sind als unsicher einzustufen. Die Syntax für den nginx-Webserver unterscheidet sich von der vom apache-Server nur leicht:

  1. add_header Strict-Transport-Security max-age=31536000;

In jedem Fall muss der Browser den Header der Antwort über HTTPS erhalten. Deshalb ist zusätzlich das Umschreiben (redirect) aller Anfragen von HTTP auf HTTPS vorzusehen. Damit werden auch Browser abgefangen, die HSTS nicht unterstützen, wie der IE von Microsoft bis und mit Version 10. Mit dem apache-Module mod_rewirte bewerkstelligen dies die Zeilen:

  1. <IfModule Mod_rewrite.c>
  2.     RewriteEngine On
  3.     RewriteCond %{HTTPS} off
  4.     RewriteRule (. *) https://%{HTTP_HOST}%{REQUEST_URI}
  5. </IfModule>

 

Nach Oben