WebサーバーのHTTP/2実装のDoS脆弱性「HTTP/2 Bomb」

カテゴリ
脆弱性の公表
目次
  1. 脆弱性の内容
    1. 開示と公表のいきさつ
  2. 時系列
  3. 対象の製品と版
  4. 悪用の状況
  5. 修正と回避策
    1. 公表元が示した緩和策
    2. 開発元と配布元の修正
    3. 国内の事業者の対応
  6. 未公表の事項
  7. 注
  8. 出典
  9. 更新記録
  10. 関連記事

Califが公表した「HTTP/2 Bomb」は、主要なWebサーバーの多くに対するリモートからのサービス妨害の手口である⁠[32]。nginx、Apache httpd、Microsoft IIS、Envoy、Cloudflare Pingoraの既定のHTTP/2設定で成立する⁠[32]。国内ではさくらインターネット、お名前.com、エックスサーバーなどがHTTP/2を一時的に無効にし、修正を当てた後に再び有効にした⁠[15、17、18]。

脆弱性の内容

Califの2026年6月2日〔注1〕のブログによると、攻撃はCodexが発見し、10年前から知られた圧縮爆弾とSlowloris型の保持の2つの手法をつないだものだった⁠[32]。HPACK(RFC 7541)は、接続の両端が最近のヘッダを動的テーブルに持ち、一度登録したヘッダを通常1バイトの索引で参照できる圧縮方式である⁠[32]。攻撃側は1つのヘッダを登録し、1バイトの参照を1要求で数千回送り込む⁠[32]。サーバーは参照1つにつき、約70バイト(nginx・IIS・Pingora)から約4,000バイト(Apache httpd・Envoy)を割り当てる⁠[32]。

保持の側では、HTTP/2(RFC 9113)のフロー制御でサーバーの応答のウィンドウをクライアントが制御することを使う⁠[32]。ウィンドウを0バイトにして応答を送り終えさせず、1バイトのWINDOW_UPDATEを少しずつ送って送信のタイムアウトを延ばし続け、割り当てたメモリを解放させない⁠[32]。

Califは、既知の手法との違いを増幅の出どころに置いた⁠[32]。ヘッダはほぼ空のまま、サーバーがエントリごとに割り当てる管理用のメモリから増幅が生じ、復号するものがほとんど無いので復号後のサイズの上限は働かない⁠[32]。

ヘッダの数を制限するApacheとEnvoyに対しては、RFC 9113の§8.2.3が認めるCookieの断片ごとの分割で上限を回避でき、両者は断片を上限に数えていなかった⁠[32]。Califは、100Mbpsの回線の家庭のコンピューターで、脆弱なサーバーを数秒で利用できなくできるとした⁠[32]。

「HPACK Bomb」の名は2016年のCVE-2016-6581で付いたと、Califは書いた⁠[32]。CVE-2016-6581の記録によると、PythonのHPACKライブラリv1.0.0〜v2.2.0を使うHTTP/2実装へのこの攻撃では、圧縮比が4,096倍以上になりうる⁠[40]。Califは、2025年にはApache httpdで約4000倍の増幅がCVE-2025-53020になったとも書いた⁠[32]。圧縮の増幅を伴わないHTTP/2のSlowloris型の枯渇も、Apache httpdのCVE-2016-8740とCVE-2016-1546にさかのぼるとした⁠[32]。

CVE-2026-47774の6月17日の記録では、Envoyの原因の1つは、Cookieのバイトがヘッダサイズの検査で完全には数えられていないことだった⁠[29]。もう1つの原因として、oghttp2/quicheのHPACKの上限が符号化後のバイトに働き、復号後の合計には対応する上限が無いことを挙げている⁠[29]。

Cloudflareは、0.8.1より前のPingoraがh2クレートの既定の上限を使っていたと、CVE-2026-105297の記録で説明した⁠[30]。既定の上限は、復号後16 MiBのヘッダリストと、無制限の同時ストリームだった⁠[30]。報告者は1つの接続で、メモリの上限が2 GiBのPingoraのプロセスをメモリ不足(OOM)で強制終了させた⁠[30]。

表1:本事象に割り当てられたCVE
CVE概要成立条件CVSS資料
CVE-2026-49975Apache HTTP Serverのmod_http2のサービス妨害HTTP/2プロトコル通信機能を使用している場合(日立)Apacheはmoderate、Red HatはImportant、SUSEはimportant、日立は基本値7.5・環境値5.3⁠[1、8、10、11]
CVE-2026-49160WindowsのHTTP.sysの、HTTP/2での制御されない資源の消費認証の無い攻撃者がネットワーク経由で攻撃できる7.5〔注3〕(重要度Important、Microsoft)⁠[4]
CVE-2026-47774Envoyの、CookieのヘッダのサイズとHPACKの増幅によるHTTP/2のメモリの枯渇認証の無いリモートのクライアント7.5(CVE記録)、Red HatはImportant⁠[8、29]
CVE-2026-105297Pingoraの、上限の無い既定のヘッダリストと同時ストリームによるHTTP/2サーバーのメモリの枯渇認証の無いリモートのクライアント-⁠[30]
表2:Califの試験での増幅率とメモリの消費
製品と版増幅率消費したメモリ資料
Envoy 1.37.2約5,700:1約10秒で約32GB⁠[32]
Apache httpd 2.4.67約4,000:1約18秒で約32GB⁠[32]
nginx 1.29.7約70:1約45秒で約32GB⁠[32]
Microsoft IIS(Windows Server 2025)約68:1約45秒で約64GB⁠[32]

開示と公表のいきさつ

Califは4月にnginxへ開示し、nginxはfreenginxのmax_headersディレクティブを取り込んで、翌日に1.29.8を出した⁠[32]。Califは、この段階で攻撃は公開されたものとみなしたと書いた⁠[32]。

Apacheへの開示〔注2〕と同じ日には、CookieのヘッダをLimitRequestFieldsに数える修正が入り、CVE-2026-49975が割り当てられた⁠[32]。Apacheは謝辞で、発見者をCalif.IOの研究者とOpenAI Codexの協力と記した⁠[1]。

Califは、修正のコミットが公開されて手口を直接示しており、有能なAIモデルなら差分を動くエクスプロイトに変えられるとした⁠[32]。IIS、Envoy、Pingoraも脆弱だと分かったのは、この方法によるものだった⁠[32]。保守者に通知したうえで、コミットからエクスプロイトまでの道のりが短いことを理由に、緩和策を示すために公表したと説明した⁠[32]。6月3日の追記では、Envoyがこの攻撃を緩和するとみられる修正を出したとし、修正を詳しく検証していると書いた⁠[32]。

目次へ

時系列

時系列
日付主体内容資料
2026年4月7日nginxmax_headersディレクティブを加えた1.29.8を出した⁠[3]
2026年5月26日Apache HTTP Serverプロジェクトセキュリティチームが報告を受けた⁠[1]
2026年5月27日Apache HTTP Serverプロジェクト上流のmod_h2で修正した⁠[1]
2026年6月2日CalifHTTP/2 Bombを公表した⁠[32]
2026年6月4日EnvoyCVE-2026-47774を修正した1.38.1を出した⁠[6]
2026年6月4日-pingora-core 0.8.1がcrates.ioに登録された⁠[7]
2026年6月4日さくらインターネット18時30分〜20時20分にさくらのレンタルサーバなどのHTTP/2を無効にした⁠[12]
2026年6月5日エックスサーバー14時ごろ〜18時ごろにHTTP/2を無効にし、19時30分ごろ〜23時30分ごろに修正プログラムを当てて再び有効にした⁠[18]
2026年6月6日Red HatRHSB-2026-007を公開した⁠[8]
2026年6月8日Apache HTTP Serverプロジェクト2.4.68を出し、oss-securityでCVE-2026-49975を深刻度moderateとして告知した⁠[1、2]
2026年6月9日MicrosoftCVE-2026-49160を公開し、MaxHeadersCountの設定を導入した⁠[4、5]
2026年7月2日16時30分ごろさくらインターネットnginxの更新とHTTP/2の有効化の作業を終えた⁠[14]
2026年10月20日CloudflareCVE-2026-105297を公開した⁠[30]

目次へ

対象の製品と版

表3:開発元ごとの影響を受ける版と修正版
製品影響を受ける版修正版資料
nginx1.29.8未満1.29.8⁠[3、22、32]
Apache HTTP Server2.4.17〜2.4.672.4.68(修正はmod_http2 v2.0.41にある)⁠[1、32]
WindowsのHTTP.sys(IIS)-2026年6月のWindowsセキュリティ更新⁠[4]
Envoy1.35.11・1.36.7・1.37.3・1.38.1より前1.35.11、1.36.7、1.37.3、1.38.1⁠[29]
Pingora(pingora-core)0.8.1より前0.8.1⁠[7、30]

Califは、Shodanの検索でHTTP/2に対応しこれらのサーバーを動かす880,000以上のWebサイトが見つかったとし、多くはCDNの背後にあって停止させるのははるかに難しいとも書いた⁠[32]。

表4:配布元の対応状況
配布元状態修正版・アドバイザリ資料
Red Hat修正版ありRHEL 8・9・10、JBoss Core Services、OpenShift Service Mesh 2・3が対象。RHSA-2026:28921など5件⁠[8]
Debian修正版ありapache2をDLA-4620-1、DSA-6323-1で修正(bookworm 2.4.67-1~deb12u3、trixie 2.4.67-1~deb13u3)⁠[9]
SUSEResolved-⁠[10]
日立製作所(Cosminexus HTTP Server)対策版ありLinux(x64) 11-70-02・11-50-42、Windows(x64) 11-50-42⁠[11]
日立製作所(Cosminexus V11)該当6製品(11-30〜11-70)⁠[11]

目次へ

悪用の状況

Califは、サーバーごとのAI生成の解説、Dockerの検証環境、PoCのスクリプトを公開し、所有していない基盤に向けないよう求めた⁠[32]。

表5:開発元・当局・事業者が示した悪用の評価
対象示した組織評価資料
CVE-2026-49160Microsoft公開済み(publiclyDisclosed: Yes)、悪用なし(exploited: No)、最新版での悪用可能性は「Exploitation More Likely」⁠[4]
CVE-2026-49160CISA(CVE記録のSSVC、6月10日)Exploitation「none」⁠[28]
CVE-2026-49975CISA(CVE記録のSSVC、6月18日)Exploitation「poc」、Automatable「yes」、Technical Impact「partial」⁠[27]
CVE-2026-49975HKCERT(6月4日)高リスク(High Risk)。PoCのコードが公開済みで、既定のHTTP/2設定に脆弱な挙動があるため⁠[31]
HTTP/2 Bomb(CVE-2026-49975)カゴヤ・ジャパン公開PoCが存在し、悪用リスクが高い状態⁠[23]

目次へ

修正と回避策

公表元が示した緩和策

  1. nginxは1.29.8以降に更新し(max_headersディレクティブが既定値1000で加わる)、更新できなければhttp2 off;でHTTP/2を無効にする⁠[32]。
  2. Apache httpdは修正の入ったmod_http2 v2.0.41に更新し、できなければProtocols http/1.1でHTTP/2を無効にする⁠[32]。公表時は2.4.xのリリースに修正が入っていなかった⁠[32]。LimitRequestFieldSizeを下げるのは部分的な緩和で、LimitRequestFieldsを下げても効果は無い⁠[32]。
  3. Microsoft IIS、Envoy、Cloudflare Pingoraは公表時に修正が無く、HTTP/2を無効にするか、要求ごとのヘッダ数に上限を強制する装置を前に置く⁠[32]。
  4. 復号後のヘッダの最大サイズとヘッダの最大数は別の上限で、両方を設ける⁠[32]。ワーカーのメモリをcgroupsなどで制限する⁠[32]。

開発元と配布元の修正

Microsoftは対策として6月のWindowsセキュリティ更新の適用を挙げ、レジストリ設定MaxHeadersCountを導入した⁠[4]。MaxHeadersCountは、HTTP/2とHTTP/3の要求に含まれるヘッダの数を制限する⁠[4]。MicrosoftはKB5102602で、6月9日以降に出たWindowsの更新を当てるとこの設定を使えるとし、ヘッダの数の制限はメモリの過剰な使用、CPUの高い負荷、サービス妨害から守るのに役立つと説明した⁠[5]。

MaxHeadersCountの値はHKLM\SYSTEM\CurrentControlSet\Services\HTTP\ParametersのREG_DWORDで設定する⁠[5]。MaxRequestBytesの設定によってはHTTP.sysが実際に強制する上限をさらに引き上げることがあり、変更を反映するには再起動が要るとした⁠[5]。

表6:MaxHeadersCountの値
項目値資料
既定200⁠[5]
最小50⁠[5]
最大65535⁠[5]

Envoyの6月4日のリリースノートでは、最大ヘッダリストサイズに違反したHTTP/2のストリームはリセットされ、圧縮されていないCookieもこの上限に数えられる⁠[6]。Cookieはmax_headers_countの上限にも数えられるようになった⁠[6]。runtime guardのenvoy.reloadable_features.http2_include_cookies_in_limitsをfalseにすると、元の挙動に戻せる⁠[6]。CVE-2026-47774の記録には、修正の適用のほかに完全な回避策は知られておらず、一時的な緩和策として運用上できる場合の下流のHTTP/2の無効化などがある⁠[29]。

CVE-2026-105297の記録によると、0.8.1以降のPingoraは、H2Optionsを渡さない場合に既定の上限を強制する⁠[30]。上限は、復号後64 KiBのヘッダリストと、1接続あたり最大100の同時ストリームである⁠[30]。独自のH2Optionsを渡すアプリケーションは、この既定の対象から外れる⁠[30]。

Cloudflareは、CloudflareのCDNの顧客は影響を受けなかったとし、理由を社内のPingoraのサービスにHTTP/2のクライアントが無いためと説明した⁠[30]。The Hacker NewsとSecurityWeekは、Cloudflareが、既存のアーキテクチャとDDoSの緩和策がこの攻撃を自動で検知して顧客を守っていると説明したと報じた⁠[33、34]。

SecurityWeekの7月1日の記事によると、CitrixはNetScaler ADCとNetScaler Gatewayの更新で、HTTP/2 Bombを含む6件の脆弱性を修正した⁠[35]。CitrixはHTTP/2 BombにNetScaler固有のCVE-2026-13474を割り当てた⁠[35]。

Red HatはRHSB-2026-007で、HTTP/2の無効化を推奨し、HTTP/1.1に戻っても互換性は保たれるが性能は下がるとした⁠[8]。nginxのパッケージにはmax_headersディレクティブを移植し、既定で有効(1要求あたり1000ヘッダ)にした⁠[8]。

国内の事業者の対応

さくらインターネットは6月5日の告知で、HTTP/2を止めた理由を、外部からの攻撃でサービスが停止する可能性がある脆弱性への暫定対策と説明した⁠[12]。対象はさくらのレンタルサーバ(ライト・スタンダード・プレミアム・ビジネス・ビジネスプロ)と、さくらのマネージドサーバおよびリセール向けサービスの全プランだった⁠[12]。作業の間には数秒ほどWebサーバーに接続できない時間があり、一部の環境では表示がわずかに遅くなる可能性があるとした⁠[12]。6月5日18時45分の追記では、コンテンツブースト(CDN機能)とさくらのウェブアクセラレータの利用者は対策が済んでおり、HTTP/2を使い続けられると書き加えた⁠[12]。

ITmedia NEWSの6月5日の記事によると、さくらインターネットはITmedia NEWSの確認に「HTTP/2 Bomb対策である」と答えた⁠[36]。さくらインターネットは6月4日の緊急メンテナンスの告知で、作業を「HTTP/2に関する脆弱性の暫定対策として」行うと書いた⁠[13]。

さくらインターネットの6月19日の告知では、nginxのバージョンアップとHTTP/2の有効化が作業の内容だった⁠[14]。作業は6月22日10時から予定していた⁠[14]。6月25日には、作業に時間を要しているとして期間を7月2日まで延ばした⁠[14]。さくらインターネットは7月3日の告知で、対象サーバーのnginxを更新して脆弱性の解消を確かめてから、HTTP/2を再び有効にしたと説明した⁠[15]。

GMOインターネットのお名前.comは6月4日の告知で、CVE-2026-49975への暫定対策として、お名前.comレンタルサーバーの対象サーバーをHTTP/1.1の通信に切り替えた⁠[16]。一時的に無効にしたHTTP/2は、恒久対策の準備が整い次第、再び有効にする予定とした⁠[16]。6月24日の告知で、Webサーバーソフトウェアの更新による恒久対策を終えてHTTP/2での通信を再開し、利用者の側での対応は要らないと書いた⁠[17]。

カゴヤ・ジャパンの6月9日の告知では、対象はKAGOYA CLOUD VPS、専用サーバーFLEX、KAGOYA DC+、cloud tapで、OSやミドルウェアの管理権限が利用者にあるサービスだった⁠[23]。カゴヤ・ジャパンは、レンタルサーバープランとdesknet's NEO専用プランを対策済みとした⁠[23]。

エックスサーバーは6月5日の告知で、「現時点で、当サービスにおける本脆弱性の影響は確認しておりません」と書いた⁠[18]。HTTP/2を止めた対象は、エックスサーバー、XServerビジネス、XServerショップ、XServerドライブ、XServer for WordPressだった⁠[18]。XServer Static、シンレンタルサーバー、スターレンタルサーバーでも、対象サービスの行だけが違う同じ告知を出した⁠[19、20、21]。

XServer VPSの6月8日の告知では、nginx v1.29.8未満と、mod_http2 v2.0.41相当の修正が未適用のApache httpdなどでHTTP/2を有効にしている環境が影響を受ける⁠[22]。エックスサーバーは、そうした環境の利用者に対策を求めた⁠[22]。

RisuPuの6月5日の告知によると、RisuPuは発表の段階で修正された版の配信を確認できないとして、HTTP/2を一時的に無効にしてHTTP/1.1に切り替えた⁠[24]。6月24日の追記で自団体の管理分を除くサービスの対応を終え、6月26日の追記で「りすぷクラウド」も含む全サービスの対応を終えたとした⁠[24]。

慶應義塾湘南藤沢情報センターは6月5日の案内で、Webサーバの管理者に、HTTP/2の設定状態を確かめて対応するよう求めた⁠[25]。

目次へ

未公表の事項

  • 実際の攻撃でサービスが止まった事例の有無と件数
  • CalifによるEnvoyの修正の検証の結果(Califは6月3日の追記で、残る欠陥が見つかれば記事を更新するとした⁠[32])
  • nginxの開発元によるCVEの割り当て(Red Hatは、上流のnginxはこの手法にCVEを割り当てていないとした⁠[8])
  • MicrosoftによるMaxHeadersCountの推奨値
  • 独自のH2Optionsを渡すPingoraのアプリケーションに向けた上限の値

注

  • 〔注1〕ITmedia NEWSは、Califの注意喚起を「6月3日(現地時間)」と書いた⁠[36]。お名前.comとカゴヤ・ジャパンの告知も、公表の日を6月3日とした⁠[16、23]。
  • 〔注2〕Califは、Apacheに5月27日に開示したと書いた⁠[32]。Apacheは、セキュリティチームへの報告を5月26日と記録した⁠[1]。
  • 〔注3〕The Hacker Newsは6月10日の更新で、CVE-2026-49160のCVSSを7.8と書いた⁠[33]。

出典

当事者

関係組織

公的機関

調査・観測

報道機関

背景資料

  • [40]CVE Program『CVE-2016-6581』(2017年1月10日公開)

更新記録

  • 2026年6月6日:公開した。
  • 2026年6月8日:Apache HTTP Serverプロジェクトの2.4.68の告知(出典1、2)、XServer VPSの告知(出典22)、SecurityWeekの記事の6月8日の更新(出典34)を加え、「脆弱性の内容」「時系列」「対象の製品と版」「修正と回避策」「注」を改めた。
  • 2026年6月9日:MicrosoftのCVE-2026-49160の情報とKB5102602(出典4、5)、カゴヤ・ジャパンの告知(出典23)を加え、「脆弱性の内容」「時系列」「対象の製品と版」「悪用の状況」「修正と回避策」「注」を改めた。
  • 2026年6月10日:The Hacker Newsの記事の6月10日の更新(出典33)とCVE-2026-49160のCVE記録のCISAの評価(出典28)を加え、「悪用の状況」「修正と回避策」「注」を改めた。
  • 2026年6月17日:CVE-2026-47774のCVE記録(出典29)を加え、「脆弱性の内容」「対象の製品と版」「修正と回避策」を改めた。
  • 2026年6月18日:CVE-2026-49975のCVE記録のCISAの評価(出典27)を「悪用の状況」に加えた。
  • 2026年6月19日:さくらインターネットの6月19日の告知(出典14)を「修正と回避策」に加えた。
  • 2026年6月24日:お名前.comの6月24日の告知(出典17)とRisuPuの6月24日の追記(出典24)を「修正と回避策」に加え、リードを改めた。
  • 2026年6月25日:さくらインターネットの6月19日の告知の6月25日の更新(出典14)で延びた作業の期間を「修正と回避策」に加えた。
  • 2026年6月26日:RisuPuの6月26日の追記(出典24)を「修正と回避策」に加えた。
  • 2026年7月1日:SecurityWeekの7月1日の記事(出典35)を「修正と回避策」に加えた。
  • 2026年7月3日:さくらインターネットの7月3日の告知(出典15)と6月19日の告知の7月3日の更新(出典14)を「時系列」「修正と回避策」に加え、リードを改めた。
  • 2026年8月4日:日立製作所の8月4日のセキュリティ情報(出典11)を「脆弱性の内容」「対象の製品と版」に加えた。
  • 2026年8月19日:CVE-2026-49975のCVE記録(出典27)を8月19日の更新の版に改めた。
  • 2026年9月16日:Red HatのRHSB-2026-007(出典8)を9月16日の更新の版に改めた。
  • 2026年10月20日:CVE-2026-105297のCVE記録(出典30)を加え、「脆弱性の内容」「時系列」「対象の製品と版」「修正と回避策」を改めた。
  • 2026年10月29日:MicrosoftのKB5102602(出典5)を10月29日の更新の版に改めた。

目次へ