<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Apache on KnightLiブログ</title>
        <link>https://knightli.com/ja/tags/apache/</link>
        <description>Recent content in Apache on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Thu, 11 Jun 2026 08:43:45 +0800</lastBuildDate><atom:link href="https://knightli.com/ja/tags/apache/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>HTTP/2 Bomb 脆弱性への対応：CVE-2026-49975 の影響範囲と緩和策</title>
        <link>https://knightli.com/ja/2026/06/11/http2-bomb-cve-2026-49975-mitigation/</link>
        <pubDate>Thu, 11 Jun 2026 08:43:45 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/06/11/http2-bomb-cve-2026-49975-mitigation/</guid>
        <description>&lt;p&gt;&lt;code&gt;HTTP/2 Bomb&lt;/code&gt; は、最近公開された HTTP/2 のサービス拒否リスクだ。&lt;code&gt;CVE-2026-49975&lt;/code&gt; と関連しており、攻撃者が小さなリクエストでサーバーに大量のメモリを割り当てさせ、それを長時間保持させることで、サービス低下、swap への退避、最終的な利用不能を引き起こす可能性がある。&lt;/p&gt;
&lt;p&gt;この問題は「また普通の DDoS か」と誤解されやすい。しかし危険なのはトラフィック量ではなく、メモリ増幅だ。クライアントが送るデータは少ない一方で、サーバーは HTTP/2 のヘッダー圧縮とフロー制御状態の処理で、何倍ものリソースを消費する可能性がある。&lt;/p&gt;
&lt;p&gt;運用・セキュリティチームにとって、今重要なのは攻撃の再現ではない。まず HTTP/2 がどこで終端されているかを確認し、該当コンポーネントをアップグレードするか、一時的に HTTP/2 を無効化することだ。&lt;/p&gt;
&lt;h2 id=&#34;何が危険なのか&#34;&gt;何が危険なのか
&lt;/h2&gt;&lt;p&gt;HTTP/2 Bomb は、2種類の古い問題を組み合わせている。&lt;/p&gt;
&lt;p&gt;1つ目は HPACK に関連する圧縮増幅だ。HTTP/2 はヘッダー圧縮に HPACK を使う。クライアントは短い参照で、サーバーにヘッダー構造を復元・割り当てさせることができる。実装がヘッダーフィールド数、Cookie 分割、内部の簿記コストを十分に制限していない場合、サーバーは小さな入力に対して大量のメモリを割り当てることがある。&lt;/p&gt;
&lt;p&gt;2つ目は Slowloris に似た「保持」だ。攻撃側は HTTP/2 のフロー制御を利用し、サーバーの応答を正常に完了させないことで、先に割り当てたメモリをプロセス内に長時間固定できる。&lt;/p&gt;
&lt;p&gt;個別に見れば、どちらも新しい考え方ではない。厄介なのは、これらを組み合わせると、高帯域や大量接続がなくてもバックエンドのメモリを危険な状態に押し込める点だ。&lt;/p&gt;
&lt;h2 id=&#34;まず確認すべきコンポーネント&#34;&gt;まず確認すべきコンポーネント
&lt;/h2&gt;&lt;p&gt;公開情報で、影響または確認対象として挙げられている HTTP/2 サーバー実装は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nginx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Apache httpd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Microsoft IIS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Envoy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Cloudflare Pingora&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;NVD の &lt;code&gt;CVE-2026-49975&lt;/code&gt; 説明は、現在 Apache HTTP Server の &lt;code&gt;mod_http2&lt;/code&gt; に焦点を当てており、Apache HTTP Server 2.4.17 から 2.4.67 までが影響範囲とされている。Red Hat の公告も関連問題を HTTP/2 HPACK のサービス拒否として扱い、httpd、nginx、Envoy などをコンポーネントごとに処理する必要があるとしている。&lt;/p&gt;
&lt;p&gt;ここでは2つの点に注意したい。&lt;/p&gt;
&lt;p&gt;第一に、すべてのバックエンドアプリケーションサービスが直接このリスクにさらされているわけではない。まず確認すべきは HTTP/2 の終端点だ。公開ロードバランサー、リバースプロキシ、Ingress、ゲートウェイ、CDN のオリジン側、API Gateway、サービスメッシュ入口などが該当する。&lt;/p&gt;
&lt;p&gt;第二に、CVE の紐づけやベンダーごとの対象範囲は完全には一致しない。1つの CVE 番号だけを見て、すべてのコンポーネントがカバーされたと判断しないほうがよい。実際に使っている HTTP/2 コンポーネントごとに、ベンダーまたはディストリビューションの公告を確認する。&lt;/p&gt;
&lt;h2 id=&#34;簡易チェック手順&#34;&gt;簡易チェック手順
&lt;/h2&gt;&lt;p&gt;次の順番で確認するとよい。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;公開入口で HTTP/2 が有効か；&lt;/li&gt;
&lt;li&gt;HTTP/2 はどこで終端されているか。CDN、WAF、ロードバランサー、Nginx、Apache、Envoy、IIS、サービスメッシュか；&lt;/li&gt;
&lt;li&gt;HTTP/2 を終端するコンポーネントのバージョンは、ベンダー修正版の範囲に入っているか；&lt;/li&gt;
&lt;li&gt;上流プロキシでリクエストヘッダーフィールド数、Cookie 分割、接続寿命、単一 worker のメモリを制限できるか；&lt;/li&gt;
&lt;li&gt;CDN/WAF を迂回してオリジンへ直接接続できる経路がないか。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;多くのサイトは CDN 配下に見えても、オリジン IP、予備ドメイン、テストドメイン、管理入口、カナリア入口が HTTP/2 を直接公開していることがある。確認すべきなのはメインドメインだけではなく、「HTTP/2 を受けられるすべての境界」だ。&lt;/p&gt;
&lt;h2 id=&#34;修正と緩和策&#34;&gt;修正と緩和策
&lt;/h2&gt;&lt;p&gt;最優先はアップグレードだ。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nginx&lt;/code&gt; を使っている場合、公開情報では &lt;code&gt;1.29.8+&lt;/code&gt; で関連制限が導入されたとされている。アップグレードできない場合は、一時的に HTTP/2 を無効化することを検討する。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Apache httpd&lt;/code&gt; を使っている場合は、&lt;code&gt;mod_http2&lt;/code&gt; の修正版に注意する。公開資料では &lt;code&gt;mod_http2 v2.0.41&lt;/code&gt; に修正が含まれるとされている。Red Hat が示す一時緩和策は、該当 virtual host を HTTP/1.1 のみにすることだ。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-apache&#34; data-lang=&#34;apache&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Protocols&lt;/span&gt; http/1.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;nginx&lt;/code&gt; で一時緩和が必要な場合は、ベンダーやディストリビューションの案内に従って HTTP/2 を無効化する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;http2&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;off&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;Envoy&lt;/code&gt;、&lt;code&gt;IIS&lt;/code&gt;、&lt;code&gt;Pingora&lt;/code&gt;、マネージドゲートウェイを使う場合は、それぞれのベンダー公告に従う。Nginx や Apache の設定発想をそのまま適用してはいけない。具体的な制限点や修正方法が異なる可能性がある。&lt;/p&gt;
&lt;p&gt;すぐにアップグレードできないシステムでは、次の防御策を検討する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;エッジで単一リクエストのヘッダーフィールド数を制限する。分割された &lt;code&gt;cookie&lt;/code&gt; フィールドも含める；&lt;/li&gt;
&lt;li&gt;異常に長寿命な HTTP/2 stream を制限する；&lt;/li&gt;
&lt;li&gt;HTTP/2 入口に接続数、並行 stream、リクエストレート、メモリ上限を設定する；&lt;/li&gt;
&lt;li&gt;worker やコンテナに適切なメモリ上限を設定し、1つのプロセスがホスト全体を引きずらないようにする；&lt;/li&gt;
&lt;li&gt;オリジンは信頼済みプロキシからのアクセスだけを受け入れ、WAF/CDN の迂回を防ぐ；&lt;/li&gt;
&lt;li&gt;HTTP/2 接続数、アクティブ stream、メモリ急増、swap 使用量、5xx を監視する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらはパッチの代替ではないが、修正までの露出時間を減らせる。&lt;/p&gt;
&lt;h2 id=&#34;リスクが高い場面&#34;&gt;リスクが高い場面
&lt;/h2&gt;&lt;p&gt;リスクが高いのは、だいたい次のような環境だ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP/2 を有効にした Nginx / Apache / Envoy / IIS が公開インターネットに直接出ている；&lt;/li&gt;
&lt;li&gt;API Gateway や Ingress の入口で HTTP/2 が有効；&lt;/li&gt;
&lt;li&gt;CDN を迂回してオリジンへ直接アクセスできる；&lt;/li&gt;
&lt;li&gt;メモリの小さい単一ホストが複数サイトや複数業務を載せている；&lt;/li&gt;
&lt;li&gt;worker / container のメモリ制限がない；&lt;/li&gt;
&lt;li&gt;異常接続、stream、メモリの監視がない；&lt;/li&gt;
&lt;li&gt;可用性が重要なのに HTTP/1.1 へ素早く戻す手順がない。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;サービスが内網限定でも完全には無視できない。内網からの攻撃、テストスクリプトの誤用、サプライチェーンコンポーネントの露出、サービスメッシュ入口の設定ミスにより、公開インターネットの問題が横展開後の可用性問題になることがある。&lt;/p&gt;
&lt;h2 id=&#34;cvss-だけを見ない&#34;&gt;CVSS だけを見ない
&lt;/h2&gt;&lt;p&gt;この種の脆弱性はスコアが混乱しやすい。一部資料は &lt;code&gt;CVSS 9.8&lt;/code&gt; を強調している一方、NVD ページでは現時点で CISA-ADP の CVSS 3.1 が 7.5 High と表示され、NVD 自身の評価はまだ補完中だ。&lt;/p&gt;
&lt;p&gt;実際の防御では、スコアは最初の判断材料ではない。より実用的なのは次の質問だ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自分の HTTP/2 入口は影響を受けるか；&lt;/li&gt;
&lt;li&gt;インターネットから到達可能か；&lt;/li&gt;
&lt;li&gt;ベンダー修正版へアップグレード済みか；&lt;/li&gt;
&lt;li&gt;HTTP/2 を素早く無効化できるか；&lt;/li&gt;
&lt;li&gt;メモリ、接続、stream レベルの保護があるか；&lt;/li&gt;
&lt;li&gt;前段防御を迂回してオリジンへ直行できる経路があるか。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらの答えが複数不明なら、高優先度で扱うべきだ。&lt;/p&gt;
&lt;h2 id=&#34;運用側の推奨対応順&#34;&gt;運用側の推奨対応順
&lt;/h2&gt;&lt;p&gt;次の順で進めるとよい。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;すべての HTTP/2 終端点を列挙する；&lt;/li&gt;
&lt;li&gt;ベンダー公告と照合し、バージョンと修正状況を確認する；&lt;/li&gt;
&lt;li&gt;公開入口とエッジプロキシを優先してアップグレードする；&lt;/li&gt;
&lt;li&gt;すぐにアップグレードできない入口では一時的に HTTP/2 を無効化する；&lt;/li&gt;
&lt;li&gt;オリジンが信頼済みプロキシからのアクセスだけを許可しているか確認する；&lt;/li&gt;
&lt;li&gt;worker、コンテナ、サービスプロセスにメモリ境界を設定する；&lt;/li&gt;
&lt;li&gt;HTTP/2 接続、stream、リクエストヘッダーフィールド数、メモリ異常を監視する；&lt;/li&gt;
&lt;li&gt;変更ウィンドウ後に、業務アクセスが正常に動くか確認する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;HTTP/2 を無効化すると、性能、接続再利用、一部クライアント体験に影響する可能性がある。それでも、パッチがない、または露出が不明な場合は、無防備なままより安定した一時対応になる。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;HTTP/2 Bomb の核心は「どれだけ大量のトラフィックを送るか」ではない。「小さなリクエストで大きなメモリ割り当てを発生させ、そのメモリを保持できる」ことだ。そのため、HTTP/2 がデフォルトで有効なエッジサービスでは特に危険になる。&lt;/p&gt;
&lt;p&gt;対応時は、急いで再現しようとせず、1つの CVE ページだけを見ない。まずすべての HTTP/2 終端点を洗い出し、Nginx、Apache、Envoy、IIS、Pingora、またはディストリビューションの公告をコンポーネントごとに確認する。アップグレードできるものはアップグレードする。できないものは一時的に HTTP/2 を無効化し、エッジでヘッダーフィールド、接続、stream、メモリ制限を追加する。&lt;/p&gt;
&lt;p&gt;参考：&lt;a class=&#34;link&#34; href=&#34;https://blog.calif.io/p/codex-discovered-a-hidden-http2-bomb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Calif の原始公開&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-49975&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD CVE-2026-49975&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://www.haproxy.com/blog/haproxy-cve-2026-49975-http2-bomb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HAProxy 分析&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://access.redhat.com/security/vulnerabilities/RHSB-2026-007&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Red Hat RHSB-2026-007&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
