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 aus der Tabelle (Seite 19 des Imperva-Berichts) hervorgeht, schnitt NGINX 1.9.9 bei den Tests von Imperva vergleichsweise gut ab und war von drei der vier potenziellen Schwachstellen nicht betroffen. Versuche, die verbleibende Sicherheitslücke „Slow Read“ auszunutzen, verursachten ein Ressourcenleck in NGINX und ermöglichten letztendlich 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 testete, deckte eine Variante des „Slow Read“-Tests einen Ressourcenleck-Bug in NGINX und NGINX Plus auf. Dieser Ressourcenverlust führte letztendlich zu einer Dienstverweigerung.

NGINX und NGINX Plus sind im Allgemeinen nicht anfällig für „Slow Read“-Angriffe (oft als Slowloris bezeichnet). Der Testfall von Imperva hat uns geholfen, einen zuvor gemeldeten Fehler im Zusammenhang mit Ressourcenlecks zu isolieren. Wir konnten diesen Fehlerfall dann beheben, indem wir zusätzliche Timeouts und Schutzmechanismen hinzufügten, um sicherzustellen, dass HTTP/2-Ressourcen korrekt geschlossen und freigegeben wurden, und wir konnten überprüfen, ob diese Maßnahmen wirksam sind.

Milderung

Wir empfehlen dringend, auf die neueste Version von NGINX und NGINX Plus zu aktualisieren, insbesondere wenn Sie HTTP/2 implementiert haben und NGINX 1.9.11 oder früher bzw. NGINX Plus R8 oder früher verwenden. Der durch den Testfall von Imperva aufgedeckte Fehler durch Ressourcenlecks tritt bei NGINX 1.9.12 und höher oder NGINX Plus R9 und höher nicht 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."