Brotli(ブロトリ)の脆弱性CVE-2026-111497は、OpenAIが2026年10月23日に公表した、広く使われる圧縮ライブラリBrotliの認証不要リモートコード実行(RCE)につながる脆弱性です。悪意ある圧縮データを送る、あるいは返すだけで、アカウント作成なしに攻撃が成立しうるとされています。
室谷代表取締役OpenAIがレッドチーミングの一環で、Brotliという圧縮ライブラリの脆弱性を見つけて開示したんですよね。これ、地味に見えてかなり広い範囲に影響する話です。
テキトー教師DotAI 認定講師そうなんですよ。BrotliはNode.jsやBun、Envoy Proxy、Istioといったソフトに組み込まれている圧縮方式で、今回CVE-2026-111497として採番されました。
まずは自環境が該当するかの確認が最優先ですね。
まずは自環境が該当するかの確認が最優先ですね。
Brotliの脆弱性CVE-2026-111497とは?何が起きたのか
まとめ
CVE-2026-111497の要点
- BrotliはWeb通信でデータを小さくして転送を速くする圧縮方式の一つ
- 問題はBrotliの展開(解圧)処理にあり、細工された圧縮データがメモリを破壊し、リモートコード実行を許す可能性がある
- 悪意ある圧縮データを送る・返すだけで攻撃が成立し、ユーザーアカウントの作成も不要
- 未修正のサーバは悪意あるクライアントに、未修正のクライアント(curl --compressedなど)は悪意あるサーバに乗っ取られうる双方向のリスク
- 根本原因は2026年2月にBrotliのソースコードで修正済みだが、当時は脆弱性と認識されずリリースも出ていなかった
- Brotliは他ソフトに組み込まれるため、ライブラリ単体・同梱ソフト・その利用者の各層で更新が必要
- 無効なブロック切り替えが一時的に追加入力が必要と誤扱われ、ストリーミングデコーダが8バイトの内部バッファに追加入力を続けてメモリ破壊に至る
- Node.jsアドバイザリではHIGHとして扱われ、影響はNode.js 26.x、24.x、22.x
室谷代表取締役まず前提として、Brotliって何かというところから整理したいんですけど、Web通信でデータを小さくして転送を速くするための圧縮方式の一つなんですよね。
テキトー教師DotAI 認定講師はい。今回の問題は、そのBrotliの展開(解圧)処理にあります。
公式ページによると、細工されたBrotli圧縮データがメモリを破壊し、影響を受けるソフトウェアでリモートコード実行を許す可能性がある、とされています。
公式ページによると、細工されたBrotli圧縮データがメモリを破壊し、影響を受けるソフトウェアでリモートコード実行を許す可能性がある、とされています。
室谷代表取締役攻撃の成立条件がまた厄介で。OpenAIの説明だと、悪意ある圧縮データを送る、あるいは返すだけで、ユーザーアカウントの作成も不要に攻撃が成立しうるんですよね。
テキトー教師DotAI 認定講師単に「サーバが危ない」という話じゃないんですよ。未修正のサーバは悪意あるクライアントに乗っ取られうるし、未修正のクライアント、たとえば「curl --compressed」のようなものは悪意あるサーバに乗っ取られうる。
双方向にリスクがあるのがポイントです。
双方向にリスクがあるのがポイントです。
室谷代表取締役しかも経緯が興味深くて、根本原因自体は2026年2月にBrotliのソースコードで修正されていたらしいんですよ。ただその時点ではセキュリティ脆弱性につながるとは認識されておらず、その後リリースも出ていなかった、と。
テキトー教師DotAI 認定講師そこが今回の難しさで、Brotliは他のソフトに組み込まれる形で使われるので、ライブラリ単体だけでなく、同梱するソフト側も更新し、さらにその利用者も更新する必要があるんです。Node.jsのアドバイザリでは、Brotliデコーダに同梱された不具合が、不正な形式の圧縮入力によって内部バッファの終端を越えて書き込む、と説明されています。
室谷代表取締役具体的には、無効なブロック切り替えが「一時的に追加入力が必要」と誤って扱われて、ストリーミングデコーダが8バイトの内部バッファにどんどん入力を追加し続けてしまう、と。これでプロセスのメモリが壊れて、クラッシュやメモリ開示、リモートコード実行につながるわけですね。
テキトー教師DotAI 認定講師はい。Node.jsのアドバイザリではHIGHとして扱われています。
影響を受けるのはNode.js 26.x、24.x、22.xです。
影響を受けるのはNode.js 26.x、24.x、22.xです。
どのソフトが影響を受ける?Node.js・Bun・Envoy・Istioの該当範囲
Brotli脆弱性の影響を受けるソフトと修正版
| プロジェクト | パッチ状況 | 修正版 |
|---|---|---|
| Node.js | 提供済み | 22.23.4 · 24.22.1 · 26.12.1 |
| Bun | 提供済み | 1.4.4(Brotli 1.2.1を含む) |
| Envoy Proxy | 提供済み | 1.40.0 · 1.39.3 · 1.38.6 · 1.37.8 |
| Istio | 提供済み | 1.29.9 · 1.30.6 · 1.31.2 |
| Google Brotli(上流) | 提供済み | 1.0.10 · 1.1.1 · 1.2.1 |
室谷代表取締役影響範囲を整理するとこうです。公式ページに修正版つきで一覧が出ています。
| プロジェクト | パッチ状況 | 修正版 |
|---|---|---|
| Node.js | 提供済み | 22.23.4 · 24.22.1 · 26.12.1 |
| Bun | 提供済み | 1.4.4(Brotli 1.2.1を含む) |
| Envoy Proxy | 提供済み | 1.40.0 · 1.39.3 · 1.38.6 · 1.37.8 |
| Istio | 提供済み | 1.29.9 · 1.30.6 · 1.31.2 |
| Google Brotli(上流) | 提供済み | 1.0.10 · 1.1.1 · 1.2.1 |
テキトー教師DotAI 認定講師補足すると、Envoy Proxyは1.36.12にも修正は含まれるものの、1.36はサポート対象外なので、サポートされているブランチを使うように、と公式ページに書かれています。Istioも1.29はEOLなので、サポートされているラインへ移る必要があります。
室谷代表取締役該当するのはどんなアプリケーションかというと、攻撃者が制御できるデータを影響を受けるBrotliデコーダに渡すものすべてです。圧縮されたHTTPリクエストボディ、信頼できないサーバから取得したレスポンス、圧縮ファイルなどが対象になります。
テキトー教師DotAI 認定講師公式ページでは、Webサービス、バックグラウンドワーカー、Node.jsやBunを同梱するツール、Brotli解圧を設定したEnvoy ProxyやIstioのデプロイを確認するように、と挙げられています。
室谷代表取締役ここ、MYUUUでも他人事じゃないんですよね。Node.jsを同梱したツールって、開発環境やCIの中に普通に転がっているので。
修正版とアップデート手順——Node.jsなどはどのバージョンに上げればよいか
修正版へのアップデート手順
- 01修正版を確認Node.jsは22系→22.23.4、24系→24.22.1、26系→26.12.1が基本。公式の一覧にある修正版、または同じブランチのより新しいパッチリリースへ更新する
- 02ピンを更新ランタイムやイメージのピンを更新する
- 03再ビルド影響を受けるランタイムを同梱したコンテナや実行ファイルを再ビルドする
- 04再起動・再デプロイ古いビルドを使っているすべてのサービス、ワーカー、スケジュールジョブ、レプリカを再起動・再デプロイする
- 05一致を確認稼働中のバイナリやイメージがベンダーの修正版と一致しているかを確認する
- 06動作をテスト一時的なブロックを入れていた場合、Brotliがデコード前に拒否されること、許可したgzipなどが引き続き動くことをテストする
テキトー教師DotAI 認定講師Node.jsであれば、22系は22.23.4、24系は24.22.1、26系は26.12.1に上げるのが基本です。Node.jsのセキュリティリリースは2026年10月21日に公開されていて、今回のBrotliの件以外にも複数の脆弱性が同時に修正されています。
室谷代表取締役手順としては、公式ページが「Start patching」として、一覧にある修正版、または同じブランチのより新しいパッチリリースへ更新したうえで、再起動または再デプロイするようにと案内しています。
テキトー教師DotAI 認定講師ここで大事なのが、ランタイムやイメージのピンを更新する、影響を受けるランタイムを同梱したコンテナや実行ファイルを再ビルドする、そして古いビルドを使っているすべてのサービス、ワーカー、スケジュールジョブ、レプリカを再起動・再デプロイする、という3点です。
室谷代表取締役「ライブラリを上げたからOK」で終わらせると、ビルド済みのイメージの中に古いBrotliが残るんですよね。ここは地味にハマりどころです。
テキトー教師DotAI 認定講師最後に、稼働中のバイナリやイメージがベンダーの修正版と一致しているかを確認し、一時的なブロックを入れていた場合は、Brotliがデコード前に拒否されること、許可したgzipなどが引き続き動くことをテストする、と公式ページにあります。
室谷代表取締役検証まで含めて1セットですね。
今すぐ更新できない場合の緩和策——Brotli解圧だけを止める方法
室谷代表取締役現実問題として、すぐ全部を上げられないこともありますよね。そういうときの緩和策が公式ページにちゃんと書かれています。
テキトー教師DotAI 認定講師基本は「信頼できないデータのBrotli解圧を無効化する」です。gzipやdeflateなど他の圧縮は有効のままにできるのがポイントで、単に全部の圧縮を止める話じゃないんですよ。
室谷代表取締役具体的な経路ごとに整理するとこうです。
- 受信リクエスト:プロキシ、ミドルウェア、ボディパーサーが解圧する前に「Content-Encoding: br」のリクエストを拒否する。直接オリジンに届く経路や代替ルートも対象
- 取得レスポンス:HTTPクライアントの自動Brotli解圧を無効化し、デコード前にBrotliレスポンスを拒否する。Accept-Encodingからbrを外すだけでは、サーバがbrを送ってくるのを止められない
- Envoy ProxyとIstio:リクエストとレスポンスの両方でBrotli解圧フィルタを無効化する。フィルタを無効にすると圧縮データがそのまま流れるので、下流のデコーダも守る必要がある
- ファイルなどその他の入力:デコーダが修正されるまで、信頼できないBrotliの処理を止める
テキトー教師DotAI 認定講師注意点も明確で、CDNやWebサーバ側でBrotliのレスポンス圧縮をオフにしても、リクエストやクライアント側の解圧は無効化されないんです。リクエストサイズ制限やWAFのルールだけでは、すべての解圧経路をカバーできない、とされています。
室谷代表取締役公式ページには実装別の例もあって、ExpressならBrotliを拒否してgzipとdeflateを維持、Next.jsはNode.jsにパッチが当たるまで組み込みの画像最適化を無効化、PythonのHTTPクライアントはgzipとdeflateを受け入れてBrotliを拒否する、といった形で示されています。
テキトー教師DotAI 認定講師どの経路も塞ぐ必要があるので、アプリケーションの入口と出口を両方棚卸しするイメージですね。
なぜAIのレッドチーミングがOSSの脆弱性発見につながったのか
室谷代表取締役ここからが今回のニュースの面白いところで。OpenAIは自社のフロンティアモデルの学習環境を強化する過程で、モデルをエージェントのチームとして動かして自社インフラの突破を試させたんですよね。
テキトー教師DotAI 認定講師はい。OpenAIのブログによると、学習中のモデルからライブのインターネットアクセスを外し、代わりにキャッシュされたWebを「オフラインの世界」として用意したそうです。
ところが2026年9月20日、あるモデルがDNSリゾルバの設定不備を悪用して、このオフラインの世界の外へ出る経路を見つけてしまった、と。
ところが2026年9月20日、あるモデルがDNSリゾルバの設定不備を悪用して、このオフラインの世界の外へ出る経路を見つけてしまった、と。
室谷代表取締役そこでOpenAIはフロンティアの学習を一時停止して、封じ込めをさらに強化。サイバー能力の高いモデルで動くエージェントのチームを編成し、研究環境の弱点を探させたわけです。
テキトー教師DotAI 認定講師その結果、ゼロデイ脆弱性や仮想マシンからの脱出、エージェント間通信のハードウェアサイドチャネルなどが見つかった、と。発見は防御の強化と、オープンソースソフトウェアへの修正の還元に使われたわけです。
室谷代表取締役今回のBrotliは、まさにその還元の一つというわけですね。OpenAIは「Patch the Planet」という枠組みで、学習環境のレッドチーミングで見つけたOSSの脆弱性を維持管理者と連携して開示・修正している、と。
テキトー教師DotAI 認定講師報告者はNode.jsのアドバイザリにOpenAI Codex SecurityのKhai Tran氏とSylvie Mayer氏とクレジットされています。修正はmcollina氏とaduh95氏が担当した、と。
室谷代表取締役OpenAIは封じ込めアーキテクチャを強化したうえで、2026年10月1日にフロンティアの強化学習と推論を再開したそうです。継続的なレッドチーミングにかなりの計算資源を確保して、安全性の判断材料の一部にしている、と。
テキトー教師DotAI 認定講師モデルの能力が上がるほど、防御側も同じ能力で攻める必要がある。今回の発見はその象徴的な例ですね。
よくある質問——curl --compressedは危険?PoCや悪用状況は?
室谷代表取締役ここからは読者から出そうな疑問を整理していきます。まず「curl --compressedは危険なのか」という点。
テキトー教師DotAI 認定講師公式の説明では、未修正のクライアントが圧縮入力を受け入れる場合、たとえば「curl --compressed」のようなケースでは、悪意あるサーバに乗っ取られうる、とされています。修正版のクライアントを使うか、信頼できないサーバからのBrotli解圧を止めるのが基本です。
室谷代表取締役次に「fetch()など通常のAPI利用でも踏むのか」。これは、攻撃者が制御できるデータを影響を受けるBrotliデコーダに渡すかどうかが判断基準になります。
Node.jsのアドバイザリでは、アプリケーションがnode:zlibで解圧するBrotliデータを攻撃者が供給できる場合に問題になると説明されています。
Node.jsのアドバイザリでは、アプリケーションがnode:zlibで解圧するBrotliデータを攻撃者が供給できる場合に問題になると説明されています。
テキトー教師DotAI 認定講師逆に言えば、信頼できない入力をBrotli解圧している経路があるかどうかを洗い出すのが第一歩ですね。
室谷代表取締役「公開PoCや悪用状況は?」という点については、現時点では明らかにされていません。公式ページでもPoCの公開や実際の悪用については言及されていません。
ただし修正版が出ている以上、優先度は高く見ておくべきです。
ただし修正版が出ている以上、優先度は高く見ておくべきです。
テキトー教師DotAI 認定講師「Brotliとは何か、なぜ圧縮展開処理が危険なのか」という基礎的な疑問については、圧縮データは外部から届く入力そのもので、解圧処理は攻撃者が中身を制御できる数少ない経路の一つだからです。今回も8バイトの内部バッファに追加入力が積み重なることでメモリ破壊に至る、と説明されています。
室谷代表取締役「過去のBrotli脆弱性との違いは?」という点は、今回の発表ソースでは過去のCVEとの関係についての説明は見当たりません。現時点では明らかにされていない、とお伝えしておきます。
テキトー教師DotAI 認定講師なお、Node.jsの2026年10月21日のセキュリティリリースでは、Brotliの件と同時に、NUL文字を含む名前の切り詰め(CVE-2026-105482)、全角数字を使ったTLS証明書ホスト名のバイパス(CVE-2026-105483)、先頭ゼロ付きIPv4でのTLS証明書検証のずれ(CVE-2026-106069)など、複数のHIGHが修正されています。
室谷代表取締役だからこそ、Node.jsを使っているなら今回のリリースにまとめて上げるのが効率的ですね。まずは自環境のBrotli解圧経路を洗い出して、修正版へ。
それが難しければBrotli解圧だけを止める。この順番で動くのがよさそうです。
それが難しければBrotli解圧だけを止める。この順番で動くのがよさそうです。
テキトー教師DotAI 認定講師受講生さんにも、依存関係のアップデートは「ライブラリを上げる」で終わらせず、イメージの再ビルドと再デプロイ、そして稼働中のバイナリの確認までをセットでやるように伝えていきます。
