AI支援分析がHTTP/2設定に関連する脆弱性を発見、主要Webサーバーに影響するHTTP/2サービス妨害手法を研究者が公開
セキュリティ研究者は、主要Webサーバーが採用するデフォルトのHTTP/2設定に問題があるとして警告を発しています。この問題は、Codexを活用した分析によって発見されるまで、10年以上にわたって人間によるレビューをくぐり抜けてきたとされています。
セキュリティコンサルタント会社のCalifによると、HTTP/2プロトコルの処理における脆弱性により、nginx、Apache HTTPサーバー、Microsoft IIS、Envoy、CloudflareのPingoraといった主要Webサーバーに対してサービス妨害(DoS)攻撃が可能になるとのことです。
HTTP/2は2015年に導入され、複数の同時接続を可能にすることでHTTPの速度向上を実現しましたが、現在は新たなQUIC暗号化トランスポートプロトコルを基盤とするHTTP/3への移行が徐々に進んでいます。Califが発見した問題は、影響を受けるサーバーがHTTP/2のヘッダー圧縮とリクエスト処理を扱う方法にあり、攻撃者が通常の想定を大幅に超えるメモリ消費を引き起こせる点にあります。
「この攻撃は、圧縮爆弾とSlowlorisスタイルのホールドという、10年前から人間に知られている2つの手法を組み合わせたものです」と、CalifのCEOであるThai Duong氏はブログ投稿で述べ、この手法をHTTP/2 Bombと名付けました。Shodanを使った調査では、HTTP/2をサポートしてこれらのサーバーのいずれかを実行している880,000以上のウェブサイトが確認されましたが、多くのウェブサイトはコンテンツデリバリーネットワーク(CDN)を使用しており、攻撃の複雑さが増す可能性があると同氏は述べています。
圧縮機能をDoS攻撃に悪用
CVE-2026-49975として追跡されているこの問題は、HTTP/2に組み込まれたヘッダー圧縮メカニズムであるHPACKに関係しています。Califは、攻撃者がプロトコルの動的ヘッダーテーブルを悪用し、受信リクエストのサイズから通常想定される量を大幅に超えるメモリをサーバーに繰り返し割り当てさせることができると発見しました。
攻撃者が制御する比較的少量のトラフィックで、ターゲットサーバーに過剰なメモリ割り当てを引き起こすことができるとDuong氏は述べています。
「このボムはHTTP/2のヘッダー圧縮スキームであるHPACKを標的としています。ネットワーク上の1バイトがサーバー上で1つのフルヘッダー割り当てになり、それがリクエストごとに数千回繰り返されます」と同氏は説明します。「ホールドはゼロバイトのフロー制御ウィンドウであり、サーバーがそのメモリをいつまでも解放できない状態に保ちます。」
HTTP/2がDoS攻撃を許すとして指摘されたのは、今回が初めてではありません。2019年には、Netflixが公開した複数のHTTP/2サービス妨害脆弱性が多数のサーバー実装に影響を与え、エコシステム全体で緊急パッチが適用される事態となりました。
2023年10月には、このプロトコルがストリーム多重化機能に起因する大規模なDDoS攻撃に脆弱であることが明らかになりました。
Duong氏は投稿の中で、2012年にHPACKの脆弱性の発見と修正に貢献したことを振り返っています。当時はその脆弱性が、CRIMEという別の攻撃に悪用されていました。「私はCRIMEへの対処に集中しすぎて、Bombを見逃してしまいました」と同氏は述懐しています。
Califはすべての影響を受けるプロジェクトにこの脆弱性を報告しました。nginxとApache HTTPサーバーは速やかに攻撃経路を遮断し、Envoyは6月3日にパッチを適用しました。Microsoft IISとCloudflareのPingoraは、本記事公開時点でまだパッチをリリースしていませんでした。
管理者は、これらの製品で通常使用される更新チャネルを通じて、nginxの修正済みバージョン(v1.29.8以降)またはApacheの修正済みバージョン(mod_http2 v2.0.41)を入手する必要があります。Envoyはバージョン1.35.11、1.36.7、1.37.3、および1.38.1向けのパッチを発行しました。
パッチが利用できない組織に対して、Califは可能であればHTTP/2を無効にするか、「リクエストごとのヘッダー数に厳格な上限を設けるものをサーバーの前段に配置する」よう推奨しています。