HTTP/2 verspricht bessere Performance, verursacht aber Sicherheitsprobleme

http-875180_1920Für die Kommunikation zwischen Browser und Server ist das Hypertext-Transfer-Protocol (HTTP) zuständig. Damit die Kommunikation reibungslos funktioniert, müssen Browser, Server und HTTP optimal zusammenarbeiten. Die neue Protokollversion HTTP/2 wurde im RFC 7540 offiziell zum Standard erklärt. Bisher wurden noch keine Sicherheitsprobleme Im Zusammenhang mit dem HTTP/2-Protokoll gefunden, aber es lohnt sich sicher mit dem praktischen Einsatz in den Unternehmen noch zu warten.

Derzeit wird auf den meisten Servern noch HTTP/1.1 eingesetzt. Das neue Kommunikationsprotokoll HTTP/2 wird mittlerweile von 11 Prozent der Webseiten genutzt. Das neue Protokoll bietet als herausragendes Merkmal eine drastisch verbesserte Performance. Da das neue Protokoll rückwärts-kompatibel zu der vorherigen Variante HTTP/1.1 ist, gibt es jedoch keine Eile auf das neue Protokoll migrieren zu müssen.

Bisher wurden auch noch keine echten Sicherheitsprobleme im Protokoll gefunden, aber es gibt in einigen Implementierungen gewisse Schwachstellen und die Möglichkeit zum Angriff auf die Protokollmechanismen.

Das HTTP/1.1-Protokoll ist seit mehr als 15 Jahren im Einsatz und stellte den grundlegenden Standard für die Übermittlung von Webseiten dar. Damals waren die Webseiten noch einfach aufgebaut. Seitdem hat sich die Zahl der zum Aufbau von Webseiten genutzten Objekte vervielfacht. Den Großteil davon machen JPEGs aus, aber auch umfangreiche Javascript-Dateien muss ein Browser analysieren. Dazu gesellen sich Cascading-Style-Sheets (CSS), die bestimmen, wie die HTML-Elemente einer Seite dargestellt werden. Das HTTP/1.1-Protokoll wurde jedoch nie an die Verbesserungen angepasst, denn dem Protokoll fehlen die Mittel, um komplex strukturierte Seiten effizient zu übertragen. Durch die veralteten HTTP-Mechanismen bauen sich die Webseiten im Browser nicht schnell genug auf und verlangsamen die gesamten Kommunikationsabläufe.

Bei HTTP/1.1 definiert das TCP-Transportprotokoll wie die zu übermittelnden Datenpakete verschickt werden. Dieses Protokoll verfügt über eine Reihe von Mechanismen, um verloren gegangene Datenpakete zu ersetzen (Sendewiederholung) und reagiert dynamisch auf Ressourcenengpässe (Überlast). In der Praxis baut HTTP/1.1 unnötig viele TCP-Verbindungen auf. Schuld daran ist der simple Kommunikationsmechanismus zwischen Browser (sendet eine Anfrage) und dem Server (beantwortet die Anfrage). Nach diesem Schema fordert der Browser zunächst das zentrale HTML-Dokument (die eigentliche Webseite) an. Nach der Übermittlung durch den Server analysiert der Browser das HTML-Dokument und fordert alle auf die in dem HTML-Dokument verwiesenen Files (Style-Sheets, Bilder, Banner, Icons, Fonts und Videos) von dem Web-Server bzw. von mehreren Servern ab. Damit dies möglichst schnell passiert, öffnet der Browser bis zu acht weitere parallele TCP-Verbindungen, über die die gewünschten Objekte übermittelt werden.

Bei HTTP 1.1 wird jeder TCP-Verbindungsaufbau mit einem 3-Wege-Handshake zwischen Browser und Server verhandelt. Erst danach ist die jeweilige Verbindung vollständig aufgebaut und der Server kann die angeforderten Daten per HTTP zum Browser schicken. Die Antwortzeiten können sich abhängig von der Anzahl der Objekte, der Verbindungsqualität und der Serverlast auf mehrere Sekunden addieren. Pausen können auch dadurch entstehen, dass der Browser für jede Verbindung erst die empfangenen Daten verarbeitet muss, ehe er neue Daten anfordern kann. Fallen viele empfangene Daten an, stauen sich die zu erfüllenden Aufgaben. In diesem Fall spricht man vom so genannten „Head-of-Line Blocking“. Die Probleme verschärfen sich, wenn TCP-Pakete bei der Übertragung verloren gehen und der Browser sie erneut anfordern muss.

Die neue HTTP-Version wurde an die modernen Strukturen von Webseiten angepasst. Die Webseiten haben sich im laufe der Jahre von starren Seiten, zu dynamischen, interaktiven Apps entwickelt. Mit HTTP/2 wird bei der Kommunikation zwischen Browser und Server nur noch über eine einzige Verbindung abgewickelt. Dadurch wird auch eine bessere Kommunikation von Browser und Webserver erreicht. Damit sich die Datenpakete in der einzigen Verbindung nicht in die Quere kommen, kann der Browser dem Server mitteilen, welche der zu ladenden Dateien für ihn wichtiger sind. So kann der Server wichtigere Datenpakete zuerst an den Browser schicken.

Der HTTP-Header enthält die wichtigen Zusatzinformationen zu einer angeforderten Datei. Dank der in HTTP/2 möglichen Kompression des HTTP-Headers müssen über die bestehende TCP-Verbindung weniger Daten ausgetauscht werden.

HTTP/2 kann darüber hinaus im Hintergrund bereits Daten von Webseiten übertragen, die der Anwender noch gar nicht angefordert hat. Diese Push-Technologie kann zum Beispiel Skripte oder andere Elemente automatisiert im Hintergrund übertragen. Dadurch werden Übertragungsressourcen optimal ausgelastet und es entsteht keinen Leerlauf mehr.

Das neue HTTP/2 sorgt auch für eine Verbesserung der Sicherheit von Verbindungen. Die bekannten Browser unterstützen HTTP/2 nur mit verschlüsselten Verbindungen, auch wenn HTTP/2 grundsätzlich unverschlüsselte Verbindungen zulässt.

Da viele der modernen Browser bereits HTTP/2 nutzen, setzen diese das neue Protokoll automatisch ein, wenn ein Webserver die neue Version anbietet.

Sicherheitsmechanismen

Viele der Sicherheitsunterschiede zwischen der alten und neuen HTTP-Version drehen sich darum, wie die jeweiligen Mechanismen umgesetzt wurden und nicht um das eigentliche Protokoll selbst. Die Verschlüsselung kann unter Umständen zum Problem für einige Unternehmen werden. Betrachtet man die in die Datenpfade zwischen HTTP-Clients und HTTP-Servern integrierten Sicherheitskomponenten, dann findet man auf diesen Strecken folgende Geräte: Web-Gateways, Proxys, Intrusion-Detection- bzw. -Prevention-Server, Firewalls, usw.. Die Aufgabe dieser Geräte besteht darin, den gesamten Web-Verkehr zu analysieren und Angriffe bzw. Schadcodes abzuwehren. Viele der bestehenden Sicherheitskomponenten wurden noch nicht oder nur bedingt an die neuen Anforderungen von HTTP/2 angepasst.

Die Unternehmen sind dadurch nicht mehr in der Lage, die HTTP/2-Verkehre effektiv zu scannen, verlieren sie die Möglichkeit effektiv Malware zu verhindern und die vom Unternehmen ausgehenden Verkehre zu filtern.

Einige Anbieter bieten bereits Lösungen für HTTPS und SSL-Verschlüsselung an, aber die Änderungen, die durch HTTP/2 notwendig sind, greifen tief in die Komponentenarchitektur ein. Das Multiplexen der Sessions über eine Verbindung sorgt dafür, dass die Dateien als reine Nutzinhalte und Ressourcen übermittelt werden. Dies erschwert das Reassemblieren dieser Inhalte für Sicherheitsprodukte, um diese Daten beispielsweise über eine Antiviren-Engine laufen zu lassen. Dadurch geht der eigentliche Faden der Sitzung verloren und die Inhalte lassen sich nicht mehr kontext-bezogen analysieren.

Die Lösung dieses Problems ist nicht einfach. Die Hersteller müssen ihre Produkte vollständig an die Erfordernisse von HTTP/2 anpassen. Da die Umsetzung von neuen Code- und Produktvarianten manchmal sehr lange dauert, können für die Upgrade-Zyklen manchmal Jahre ins Land gehen. Dies schafft zusätzliche Sicherheitslöcher, die nicht immer geschlossen werden können.

Die Unternehmen sollten daher die von ihnen eingesetzten Sicherheitsprodukte auf HTTP/2-Interoperabilität testen.

Neue Schwachstellen

HTTP/2 konfrontiert die Unternehmen über die Frage der Sichtbarkeit des Internet-Verkehrs hinaus mit zusätzlichen Problemen. Mehrere Schwachstellen wurden bereits entdeckt, die alle auf verteilten Denial-of-Service-Angriffen basieren. Dazu gehören beispielsweise Slow-Read, HPACK Bomb, die Dependency-Cycle-Attacke und die Stream-Multiplexing-Abuse-Variante. Die bisher bekannt gewordenen Schwachstellen wurden von den jeweiligen Herstellern inzwischen behoben, aber es gibt noch erhebliche Probleme bei den Implementierungen.

Die bekannten Web-Server (Apache, IIS, Jetty, Nghttpd und Nginx) waren jedoch gegen einen der oben genannten Angriffsvarianten anfällig. In einigen Fällen genügt bereits eine einzige Anfrage, um den Server zum Absturz zu bringen. Obwohl die Schwachstellen inzwischen beseitigt wurden, bedeutet das nicht, dass auf allen Webservern die Patches auch installiert wurden.

Upgrade in vernünftigen Tempo

Obwohl nur 11 Prozent aller Server im Internet bereits HHTP/2 unterstützen, bedeutet dies jedoch nicht, dass dies eine niedrige Upgrade-Rate darstellt. Die neue Protokollvariante wurde erst 2015 veröffentlicht. Inzwischen unterstützen die wesentlichen PC- und mobilen Browser und viele der bekannten Websites (beispielsweise Google und Twitter) das Protokoll.

Der wichtigste Treiber für das Upgrade ist die Performance-Verbesserung. Vereinzelt wurden durch den Umstieg auf HTTP/2 Verbesserung zwischen 30 und 50 Prozent erzielt.

Fazit

HTTP/2 verändert die Web-Kommunikation nachhaltig. Trotzdem sollten die Unternehmen sich Zeit nehmen, bevor sie auf HTTP/2 aktualisieren. Es gibt keine Notwendigkeit von einen auf den anderen Tag auf HTTP/2 umzuschalten. Anwender müssen für die Verwendung von HTTP/2 nichts beachten. Die neue Technik wird automatisiert im Hintergrund genuzt. (Mathias Hein)