ブログ | NGINX

Imperva HTTP/2 脆弱性レポートと NGINX

NGINX-F5 水平黒タイプ RGB の一部
オーウェン・ギャレット サムネイル
オーウェン・ギャレット
2016 年 8 月 5 日公開

8 月 3 日、インターネット セキュリティ企業 Imperva は、HTTP/2 プロトコルの 4 つの潜在的なセキュリティ脆弱性を発表し、これらの脆弱性に対して多数の Web サーバーを評価した詳細なレポートを発行しました。

表に示されているように (Imperva レポートの 19 ページから)、NGINX 1.9.9 は Imperva のテストで比較的良好なパフォーマンスを示し、4 つの潜在的な脆弱性のうち 3 つの影響を受けませんでした。 残りの脆弱性「Slow Read」を悪用しようとすると、NGINX でリソース漏洩が発生し、最終的に HTTP/2 サービスに対するサービス拒否攻撃が可能になりました。

大手ウェブサーバーに脆弱性が発見される

この障害は NGINX に報告され、NGINX 1.9.12 および NGINX Plus R9 リリースで速やかに解決されました。 NGINX ソフトウェアの現在のバージョン(NGINX Plus、NGINX Open Source の「メインライン」、NGINX Open Source の「安定版」)は、Imperva が説明した潜在的な攻撃に対して脆弱ではないことをお知らせします。

HTTP/2 を実装していて、NGINX 1.9.12 または NGINX Plus R9 より前のバージョンのソフトウェアを使用している場合は、ソフトウェアを更新してください。 HTTP/2 は複雑で比較的新しいプロトコルなので、常に最新のソフトウェア バージョンを実行するのが賢明です。

NGINX と NGINX Plus のチューニングに関するベスト プラクティスを確認することをお勧めします。 デフォルトの Linux 構成のチューニングは多くの場合非常に保守的であり、いくつかのパラメータを変更すると、NGINX または NGINX Plus システムの容量が増加する可能性があります。

問題

2016 年 8 月現在、HTTP/2 は FaceBook、Google、Wikipedia などの非常に人気のあるサイトを含む、すべての Web サイトの約 9%で使用されています。 NGINX および NGINX Plus を使用するコンテンツ配信ネットワーク (CDN) プロバイダーは、多くの場合、サービスの一部として HTTP/2 を含めています。

HTTP/2 の設計が複雑なため、研究者が設計や実装の弱点を探すために探索できる手段は数多くあります。 Imperva のレポートでは、HTTP/2 の 4 つの潜在的な脆弱性について説明しています。

  • Slow Read 攻撃(CVE-2016-1546)は、 Apache HTTP Server 2.4.17 および 2.4.18 に影響します。 これは、NGINX に影響を与えた 4 つの脆弱性のうちの 1 つです。レポートの 11 ページを参照してください。 National Vulnerability Database (NVD) のリストはCVE-2016-1546です。
  • HTTP/2 ストリーム多重化(CVE-2016-0150)は、 Microsoft Windows 10 Gold および 1511に影響します。 NVD リストはCVE-2016-0150です。
  • 依存関係と優先順位。これは、 nghttpd 1.7.0 より前のバージョンおよび Apache HTTP Server 2.4.18 以前のバージョンに影響します。 報告書によると、この脆弱性は「より一般的なメモリクリーンアップの問題(CVE-2015-8659)の一部としてnghttpd 1.7.0 で修正されました」とのことです。 NVD リストは(CVE-2015-8659)です。
  • HPACK Bomb (CVE-2016-1544およびCVE-2016-2525)は、 nghttpdの 1.7.1 より前のバージョンと、 Wireshark の 2.0.2 および 1.12.10 より前のバージョンに影響します。 NVD リストはCVE-2016-2525です。CVE -2016-1544のリストは予約済みとしてマークされており、情報は含まれていません。

Imperva がさまざまな Web サーバーをテストして脆弱性の有無を確認したところ、「Slow Read」テストのバリエーションにより、NGINX および NGINX Plus のリソース漏洩バグが明らかになりました。 このリソース漏洩は最終的にサービス拒否を引き起こしました。

NGINX と NGINX Plus は通常、「Slow Read」攻撃 ( Slowlorisとも呼ばれます) に対して脆弱ではありません。 Imperva のテスト ケースは、以前に報告されたリソース漏洩バグを特定するのに役立ちました。 その後、タイムアウトとガードを追加して HTTP/2 リソースが正しく閉じられ、解放されるようにすることでこのエラーケースに対処し、これらの対策が有効であることを検証できました。

緩和

特に、HTTP/2 を実装していて、NGINX 1.9.11 以前、または NGINX Plus R8 以前を使用している場合は、NGINX および NGINX Plus の最新バージョンにアップグレードすることを強くお勧めします。 Imperva のテスト ケースで明らかになったリソース漏洩のバグは、NGINX 1.9.12 以降または NGINX Plus R9 以降では発生しません。

NGINX と NGINX Plus は、Imperva レポートに記載されている関連する脆弱性を打破する効果的な方法を提供しており、いずれかの製品を最新リリースにアップグレードすると、脆弱性が完全に排除されます。

サイトの脆弱性を全体的に軽減するには、 DDoS 攻撃の緩和に関する記事で概説されている次のような対策を講じることをお勧めします。

  • 単一ユーザーからのリクエストのレートを制限する ( limit_reqディレクティブ)
  • 単一のクライアントが開くことができる接続の数を制限する( limit_connディレクティブ)
  • より積極的なタイムアウトで接続をより早く閉じる

ご質問がある場合は、この投稿にコメントしてください。また、NGINX Plus の加入者の場合は、お気軽にサポート チームにお問い合わせください。


「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"