BLOG | NGINX

Rapport de vulnérabilité HTTP/2 d'Imperva et NGINX

NGINX-Partie-de-F5-horiz-black-type-RGB
Vignette d'Owen Garrett
Owen Garrett
Publié le 05 août 2016

Le 3 août, Imperva, une société de sécurité Internet, a annoncé quatre vulnérabilités de sécurité potentielles dans le protocole HTTP/2 et a publié un rapport détaillé évaluant un certain nombre de serveurs Web par rapport à ces vulnérabilités.

Comme le montre le tableau (page 19 du rapport Imperva), NGINX 1.9.9 a obtenu des résultats relativement bons lors des tests d'Imperva et n'a pas été affecté par trois des quatre vulnérabilités potentielles. Les tentatives d’exploitation de la vulnérabilité restante, « Slow Read », ont provoqué une fuite de ressources dans NGINX et ont finalement permis une attaque par déni de service contre les services HTTP/2.

Des vulnérabilités révélées dans les principaux serveurs Web

Le défaut a été signalé à NGINX et a été résolu rapidement dans les versions NGINX 1.9.12 et NGINX Plus R9. Nous sommes heureux de confirmer qu'aucune des versions actuelles du logiciel NGINX – NGINX Plus, NGINX Open Source « mainline » ou NGINX Open Source « stable » – n'est vulnérable à l'une des attaques potentielles décrites par Imperva.

Si vous avez implémenté HTTP/2 et que vous utilisez une version de notre logiciel antérieure à NGINX 1.9.12 ou NGINX Plus R9, mettez à jour votre logiciel. HTTP/2 est un protocole complexe et relativement nouveau, il est donc judicieux d'exécuter à tout moment la dernière version du logiciel.

Nous vous suggérons de consulter nos meilleures pratiques pour le réglage de NGINX et NGINX Plus . Le réglage dans une configuration Linux par défaut est souvent assez conservateur, et la modification de certains paramètres peut augmenter la capacité de votre système NGINX ou NGINX Plus.

Le problème

En août 2016, HTTP/2 était actuellement utilisé sur environ 9 % de tous les sites Web , y compris des sites très populaires tels que Facebook, Google et Wikipédia. Les fournisseurs de réseaux de diffusion de contenu (CDN) qui utilisent NGINX et NGINX Plus incluent souvent HTTP/2 dans le cadre de leurs offres.

La conception complexe de HTTP/2 signifie qu'il existe de nombreuses pistes possibles que les chercheurs peuvent explorer pour rechercher les faiblesses de conception ou de mise en œuvre. Les rapports Imperva décrivent quatre vulnérabilités potentielles dans HTTP/2 :

  • Attaque de lecture lente (CVE-2016-1546) , qui affecte Apache HTTP Server 2.4.17 et 2.4.18 . Il s’agit de la seule des quatre vulnérabilités qui ont affecté NGINX ; voir page 11 du rapport. La liste de la base de données nationale des vulnérabilités (NVD) est CVE-2016-1546 .
  • Multiplexage de flux HTTP/2 (CVE-2016-0150) , qui affecte Microsoft Windows 10 Gold et 1511 . La liste NVD est CVE-2016-0150 .
  • Dépendance et priorité , qui affectent les versions de nghttpd antérieures à 1.7.0 et Apache HTTP Server 2.4.18 et antérieures. Le rapport indique que la vulnérabilité a été corrigée dans nghttpd 1.7.0 « dans le cadre d’un problème de nettoyage de mémoire plus général (CVE-2015-8659) ». La liste NVD est (CVE-2015-8659) .
  • Bombe HPACK (CVE-2016-1544 et CVE-2016-2525) , qui affecte les versions de nghttpd antérieures à 1.7.1 et les versions de Wireshark antérieures à 2.0.2 et 1.12.10 . La liste NVD est CVE-2016-2525 ; la liste pour CVE-2016-1544 est marquée comme réservée et ne contient aucune information.

Lorsque Imperva a testé différents serveurs Web pour voir s’ils présentaient des vulnérabilités, une variante de leur test « Slow Read » a révélé un bug de fuite de ressources dans NGINX et NGINX Plus. Cette fuite de ressources a finalement abouti à un déni de service.

NGINX et NGINX Plus ne sont généralement pas vulnérables aux attaques « Slow Read » (souvent appelées Slowloris ). Le cas de test d'Imperva nous a aidé à isoler un bug de fuite de ressources signalé précédemment . Nous avons ensuite pu résoudre ce cas d’erreur en ajoutant des délais d’attente et des protections supplémentaires pour garantir que les ressources HTTP/2 étaient fermées et libérées correctement, et nous avons pu vérifier que ces mesures sont efficaces.

Atténuation

Nous vous recommandons vivement de mettre à niveau vers la dernière version de NGINX et NGINX Plus, en particulier si vous avez implémenté HTTP/2 et utilisez NGINX 1.9.11 ou une version antérieure, ou NGINX Plus R8 ou une version antérieure. Le bogue de fuite de ressources exposé par le cas de test d’Imperva n’est pas présenté par NGINX 1.9.12 et versions ultérieures ou NGINX Plus R9 et versions ultérieures.

NGINX et NGINX Plus fournissent des moyens efficaces pour vaincre la vulnérabilité pertinente décrite dans le rapport Imperva, et la mise à niveau vers la dernière version de l'un ou l'autre produit élimine entièrement la vulnérabilité.

Pour réduire la vulnérabilité générale de votre site, nous vous recommandons également de prendre les mesures décrites dans notre article sur l'atténuation des attaques DDoS , notamment :

  • Limiter le taux de requêtes d'un utilisateur unique (directive limit_req )
  • Limiter le nombre de connexions pouvant être ouvertes par un seul client (directive limit_conn )
  • Fermeture des connexions plus rapide avec des délais d'attente plus agressifs

Si vous avez des questions, veuillez commenter cet article – ou, si vous êtes abonné à NGINX Plus, n'hésitez pas à contacter notre équipe d'assistance pour obtenir de l'aide.


« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."