AI手帖

HTTP2Shell(Brotliの不具合)とは?仕組みと企業・個人の対応

HTTP2Shell(CVE-2026-111497)は、Google Brotliの「圧縮を元に戻す処理」に見つかった不具合です。細工された外部データが修正前の処理へ届くと、ソフトの停止や情報漏えい、不正な命令実行の恐れがあります。製品内のコピーも含めて修正版へ更新し、動いている版を確認することが対策の基本です。

この記事の流れ

圧縮データを元に戻す処理で何が起きるのか

Web通信では、データを小さくたたんで送り、受け取った側で元の大きさに戻す「Brotli」という仕組みがよく使われます。圧縮した荷物を届いた先で開いて広げるような手順です。今回の不具合(CVE-2026-111497、通称HTTP2Shell/Node2Shell)は、データを小さくする側ではなく、受け取った側で「圧縮を元に戻す処理(展開処理)」に見つかりました[1][3]。

外から受け取る本文と、アプリが外部から受け取る応答が、修正前のBrotli展開処理に届く二つの経路。起こり得る影響は異常停止、メモリ内の情報漏えい、不正なプログラムの実行。
細工されたデータが影響のある展開処理まで届くことが、問題が起きる条件です。

この問題は、ソフトの中にBrotliの部品が入っているだけで起きるわけではありません。攻撃者が細工した外部データが、修正前の展開処理まで実際に届くことが発生の条件です[7][8]。データが届く経路には次の2つがあります。

  • 外から届く要求の本文:利用者などから届いた通信の本文を、サーバーのアプリや通信を中継する部品の設定で展開する経路です[5][9]。
  • アプリが外部から受け取る応答:アプリが外部のURLへデータを取りに行き、返ってきた応答を展開する経路です。たとえばBunのfetch機能はBrotliの応答を自動で展開します[2][9]。

条件がそろうとメモリの扱いに異常が起き、ソフトの停止やメモリ内の情報漏えい、攻撃者のプログラムが動かされる恐れがあります[7]。プログラムが動かされる場合は、まずそのソフト自身の権限で実行されるため、そのソフトが読める秘密情報や利用できる接続先も確認の対象になります。「HTTP2Shell」という名前ですがHTTP/2固有の穴ではなく、HTTP/2の設定を切るだけでは解決しません[8]。

企業は「組み込まれたコピー」まで更新して確認する

企業での対応を難しくするのは、同じBrotliが複数の製品の内部に「組み込まれたコピー」として入っている点です[1][8]。たとえばBunでプログラムとソフトを動かす土台を1つの配布用ファイルにまとめると(bun build --compile)、当時のBrotliがその中に組み込まれます。手元のBun本体だけを更新しても、過去に配ったファイルは作り直すまで古いまま残ります[2]。

対応は次の3段階で進めます。

  1. 調べる:ソフトを動かす土台やパッケージ、コンテナ、配布用の実行ファイル、通信の中継製品を洗い出し、外部データを展開する経路と管理者を特定します。IstioもBrotli展開を有効にした構成が対象です[5][8]。
  2. 製品ごとの更新・必要な再ビルドと再配置:外部データが届く経路を優先して修正版へ更新し、古いコピーを含むコンテナや配布ファイルは作り直して(再ビルド)、再配置・再起動します[1][2]。
  3. 動いている版を確認:稼働中の版と提供元の修正情報を照合し、未対応の箇所には担当者を決めます。クラウドや委託先に任せている範囲は提供元の対応状況を確認します[6][7]。

更新までの暫定策として製品ごとに展開処理を停止・制限する場合は、受信する本文と外部からの応答の両経路を確認します。入口のWAFの保護範囲に、アプリが外部から受け取る応答まで含まれるとは限りません。採る対策がどの経路まで有効かを、製品の公式手順と照合します[8][9]。また、侵害の疑いがある場合は、不具合を塞ぐ更新とは別に、環境の隔離や記録の保全、調査を並行して進めます。

個人は「自分で動かしているか」で対応を分ける

個人の対応は、自分でアプリやサーバーを動かしているか、普段Webサイトやアプリを使っているだけかで分かれます。個人の端末でも、開発や公開のためにサーバーやアプリを動かしているなら運用者側の手順が必要です。

企業、個人でアプリやサーバーを運用する人、普段Webやアプリを使う人の三者ごとの対応。
個人でも、開発や公開のためにアプリ・サーバーを動かす場合は運用者側の対応が必要です。

自分でアプリやサーバーを動かしている人

自分の環境で使うソフトを動かす土台(Node.jsやBun)やパッケージ(Pythonのbrotliやbrotlicffiなど)、配布物、コンテナを修正版へ更新します[1][4]。必要に応じてアプリやコンテナを作り直して再起動し、いま動いている版が更新されたかを確認します[2]。レンタルサーバーやクラウドを利用している場合は、どこまで自分が更新するかを運営会社の案内で確認します。

普段Webサイトやアプリを使う人

手元のOSやブラウザ、利用アプリの公式更新を適用し、提供元の案内を確認します。利用先サービスのサーバーを修正する責任はその運営会社にあります。すべての個人端末が安全とも危険とも一律には言えないため、手元のソフトを公式の最新版に保つことが基本の対策になります。

修正が入った版の例と確認のポイント

以下の表は、2026年10月26日時点で公式資料から確認した「本件(CVE-2026-111497)の修正が入った版の例」です[1][3]。すべての対象製品の一覧や、そのまま導入すべき最新版のリストではありません。

この不具合の修正が入った版(2026年10月26日確認)
ソフト修正が入った版の例
Node.js22.23.4 / 24.22.1 / 26.12.1
Bun1.4.4
Python brotli1.2.1
Python brotlicffi1.2.1.0
Google Brotli / libbrotli1.0.10 / 1.1.1 / 1.2.1(利用系列に対応)

実際の運用では、利用している系列のうち現在もサポート中の修正版を選びます[5][11]。Linuxなどの配布元が番号を変えずに独自の修正を反映している場合は、番号だけで判断せず配布元のセキュリティ告知を照合します[6]。

更新作業の最後は、いま実際に動いているソフトに修正版が反映されているかを確かめて完了とします。

公式の修正情報と研究報告

確認日:2026年10月26日。