BLOG | NGINX

Der Imperva HTTP/2-Schwachstellenbericht und NGINX

NGINX-Teil-von-F5-horiz-schwarz-Typ-RGB
Owen Garrett Miniaturbild
Owen Garrett
Veröffentlicht am 05. August 2016

Am 3. August gab Imperva – ein Internet-Sicherheitsunternehmen – vier potenzielle Sicherheitslücken im HTTP/2-Protokoll bekannt und veröffentlichte einen detaillierten Bericht, in dem eine Reihe von Webservern hinsichtlich dieser Lücken bewertet wurden.

Wie die Tabelle (aus Seite 19 des Imperva-Berichts) zeigt, zeigte NGINX 1.9.9 in den Imperva-Tests eine gute Leistung und blieb von drei der vier möglichen Schwachstellen unberührt. Der Versuch, die verbliebene Schwachstelle „Slow Read“ auszunutzen, führte zu einem Ressourcenleck in NGINX und ermöglichte so einen Denial-of-Service-Angriff auf HTTP/2-Dienste.

Aufgedeckte Schwachstellen in führenden Webservern

Der Fehler wurde an NGINX gemeldet und umgehend in den Versionen NGINX 1.9.12 und NGINX Plus R9 behoben. Wir freuen uns, bestätigen zu können, dass keine der aktuellen Versionen der NGINX-Software – NGINX Plus, NGINX Open Source „Mainline“ oder NGINX Open Source „Stable“ – für einen der von Imperva beschriebenen potenziellen Angriffe anfällig ist.

Wenn Sie HTTP/2 implementiert haben und eine Version unserer Software vor NGINX 1.9.12 oder NGINX Plus R9 verwenden, aktualisieren Sie Ihre Software. HTTP/2 ist ein komplexes und relativ neues Protokoll. Daher ist es ratsam, immer die neueste Softwareversion zu verwenden.

Wir empfehlen Ihnen, unsere Best Practices zum Optimieren von NGINX und NGINX Plus durchzusehen. Die Optimierung einer Linux-Standardkonfiguration ist häufig recht konservativ und durch die Änderung einiger Parameter kann die Kapazität Ihres NGINX- oder NGINX Plus-Systems erhöht werden.

Das Problem

Seit August 2016 wird HTTP/2 derzeit auf etwa 9 % aller Websites verwendet, darunter auch sehr beliebte Websites wie Facebook, Google und Wikipedia. Anbieter von Content Delivery Networks (CDN), die NGINX und NGINX Plus verwenden, bieten HTTP/2 häufig als Teil ihres Angebots an.

Aufgrund des komplexen Designs von HTTP/2 stehen Forschern zahlreiche Möglichkeiten offen, um Schwächen im Design oder bei der Implementierung aufzuspüren. Der Imperva-Bericht beschreibt vier potenzielle Schwachstellen in HTTP/2:

  • Slow Read Attack (CVE-2016-1546) , der Apache HTTP Server 2.4.17 und 2.4.18 betrifft. Dies ist die einzige der vier Schwachstellen, die NGINX betrafen; siehe Seite 11 des Berichts. Der Eintrag in der National Vulnerability Database (NVD) lautet CVE-2016-1546 .
  • HTTP/2 Stream Multiplexing (CVE-2016-0150) , das Microsoft Windows 10 Gold und 1511 betrifft. Die NVD-Auflistung ist CVE-2016-0150 .
  • Abhängigkeit und Priorität , die Versionen von nghttpd vor 1.7.0 und Apache HTTP Server 2.4.18 und früher betrifft. In dem Bericht heißt es, dass die Sicherheitslücke in nghttpd 1.7.0 „als Teil eines allgemeineren Speicherbereinigungsproblems (CVE-2015-8659) “ behoben wurde. Die NVD-Auflistung lautet (CVE-2015-8659) .
  • HPACK-Bombe (CVE-2016-1544 und CVE-2016-2525) , die Versionen von nghttpd vor 1.7.1 und Versionen von Wireshark vor 2.0.2 und 1.12.10 betrifft. Der NVD-Eintrag lautet CVE-2016-2525 ; der Eintrag für CVE-2016-1544 ist als reserviert gekennzeichnet und enthält keine Informationen.

Als Imperva verschiedene Webserver auf Schwachstellen prüfte, stellte eine Variante des „Slow Read“-Tests einen Ressourcenleck-Bug in NGINX und NGINX Plus fest. Das Ressourcenleck führte schließlich zu einer Dienstverweigerung.

NGINX und NGINX Plus sind generell nicht anfällig für Slow-Read-Angriffe (häufig als Slowloris bekannt). Der Testfall von Imperva hat uns geholfen, einen früher gemeldeten Fehler mit Ressourcenleck sicher zu identifizieren. Wir haben den Fehler behoben, indem wir zusätzliche Timeouts und Schutzmechanismen eingeführt haben, um HTTP/2-Ressourcen sicher zu schließen und freizugeben, und konnten die Wirksamkeit dieser Maßnahmen bestätigen.

Milderung

Wir empfehlen Ihnen dringend, auf die neueste Version von NGINX und NGINX Plus zu aktualisieren – besonders wenn Sie HTTP/2 nutzen und aktuell NGINX 1.9.11 oder älter beziehungsweise NGINX Plus R8 oder älter verwenden. Der von Impervas Testfall aufgedeckte Ressourcenleck-Fehler tritt bei NGINX 1.9.12 und neueren Versionen sowie bei NGINX Plus R9 und später nicht mehr auf.

NGINX und NGINX Plus bieten wirksame Möglichkeiten, die im Imperva-Bericht beschriebene entsprechende Sicherheitslücke zu schließen, und ein Upgrade auf die neueste Version eines der Produkte schließt die Sicherheitslücke vollständig.

Um die Anfälligkeit Ihrer Site im Allgemeinen zu verringern, empfehlen wir Ihnen außerdem, die in unserem Beitrag zur Eindämmung von DDoS-Angriffen beschriebenen Maßnahmen zu ergreifen, darunter:

  • Begrenzung der Anzahl von Anfragen eines einzelnen Benutzers (die Direktive „limit_req “)
  • Begrenzung der Anzahl der Verbindungen, die von einem einzelnen Client geöffnet werden können (die Direktive „limit_conn “)
  • Schnelleres Schließen von Verbindungen durch aggressivere Timeouts

Wenn Sie Fragen haben, kommentieren Sie bitte diesen Beitrag. Wenn Sie NGINX Plus-Abonnent sind, können Sie sich auch gerne an unser Supportteam wenden, um Hilfe zu erhalten.


„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."