Kleine Lücke schließt großes LochServer Name Indication-Sicherheitslücke beheben
10. Oktober 2018Eine erhebliche Sicherheitslücke bei der Web-Verschlüsselung könnte bald Historie sein: Der Spezialist für Web-Performance und -Sicherheit, Cloudflare, arbeitet an einem Projekt, um ein Security-Problem der weit verbreiteten SNI- Technologie (Server Name Indication) zu lösen. Denn die SNI-Technik gilt als ein Kompromiss: Sie öffnet ein kleines Datenschutzloch auf Kosten der Schließung einer viel größeren Lücke.
Bei der Server Name Indication (SNI) handelt es sich um eine unverschlüsselte Datei, die den Namen der ausgewählten Website enthält. Sie wird vom Browser gesendet, wenn man Web-Seiten sicher besucht. Doch SNI ist ein Kompromiss: Es öffnet ein kleines Datenschutzloch auf Kosten der Schließung einer viel größeren Lücke.
Abhilfe naht
Noch vor wenigen Jahren war das Web weitgehend unverschlüsselt und der gesamte Inhalt der HTTP-Nachrichten konnte durch Interloper überlagert und modifiziert werden. In diesem Zusammenhang war das SNI-Leck ein kleiner Preis für die enorme Steigerung der Privatsphäre und Sicherheit, indem es HTTPS auf Shared Hosts einfacher macht.
Man wusste zwar, dass diese Lücke früher oder später geschlossen werden muss, doch bisher wusste niemand wie das Problem gelöst werden kann. Die Lösung von Cloudflare heißt Encrypted SNI und soll schon bald getestet werden.
Die SNI-Sicherheitslücke
Wenn man eine Website über eine verschlüsselte HTTPS-Verbindung besucht, fragt der Computer den Hosting-Server nach seinem digitalen Zertifikat. Er vergleicht den Namen im Zertifikat mit dem Namen der Website. Stimmen die Namen überein, wird ein verschlüsselter Tunnel zwischen den beiden Computern errichtet und es können HTTP-Nachrichten gesendet und empfangen werden.
Es gibt jedoch einen Haken. Häufig besucht man eine Website auf einem Server, der viele verschiedene Websites mit unterschiedlichen Zertifikaten hostet. Dann muss der Computer dem Server mitteilen, für welche Website er ein Zertifikat möchte, um einen verschlüsselten Tunnel zu erstellen. Das Problem: Der Computer sagt dem Server, welche Website er über HTTP verwenden möchte, kann jedoch keine HTTP-Nachrichten senden, bis er einen verschlüsselten Tunnel erstellt hat – eine Endlosschleife, die ins Nichts führen würde.
SNI hilft diese Blockade zu überwinden. Dazu ermöglicht SNI einem Webbrowser, den Namen der gewünschten Website im Voraus zu senden und zwar bevor der verschlüsselte Tunnel gebildet wird. Damit weiß der Server, welches Zertifikat er senden soll. Die SNI-Daten werden jedoch in Klartext gesendet und können somit von jedem gelesen werden, der Browserverkehr abfangen kann, etwa ein ISP oder ein betrügerischer Wi-Fi-Zugangspunkt.
Verschlüsselter Tunnel
Der Prozess der Aushandlung eines verschlüsselten Tunnels zwischen dem Browser und einem Webserver wird als „Handshake“ bezeichnet. Dabei werden Klartext-SNI-Daten gesendet, um dem Server mitzuteilen, welches Zertifikat man wünscht. Es wird überprüft, ob man mit diesem Server spricht und es wird vereinbart, welche Verschlüsselungen verwendet werden sollen. Auch die Verschlüsselungscodes werden ausgetauscht.
Die Korrektur von SNI ist deshalb so schwierig, weil die gesendeten SNI-Daten vom Server entschlüsselt werden müssen, bevor er den Handshake durchführen kann. Die Lösung besteht darin, die nötigen Informationen in das lesbare globale Internet-Adressbuch DNS (Domain Name System) zu packen. Der Ansatz von Cloudflare ist, dass Website-Besitzer neben ihrer IP-Adresse ein Paar kryptographischer Schlüssel erstellen – einen öffentlichen und einen privaten, wobei der öffentliche Schlüssel im DNS-Eintrag veröffentlicht ist.
Der öffentliche Schlüssel kann von jedermann verwendet werden, um einen symmetrischen Verschlüsselungscode abzuleiten, den nur der Eigentümer des geheimen, privaten Schlüssels (der Eigentümer der Website) freischalten kann. Der Server nutzt seinen privaten Schlüssel und den öffentlichen Schlüssel des Browsers, um den Schlüssel abzuleiten, der die SNA-Daten entschlüsseln kann. Danach erfolgt der Handshake für die verschlüsselte HTTP-Sitzung.
Cloudflare versucht diese ESNI über die IETF (Internet Engineering Task Force) zu einem offenen Standard zu machen. Die Funktion ist bereits für jeden verfügbar, der Cloudflare-Nameserver verwendet. Bisher wird diese Technologie noch von keinem Browser unterstützt. Doch es ist zu erwarten, dass dieses Feature in einem der nächsten Builds von Firefox integriert ist.
Mehr Details zur Lösung der SNI-Sicherheitslücke beschreibt Mark Stockley auf Naked Security. (rhh)
Hier geht es zu Sophos