2026-10-26

Brotli2Shell: Google Brotliデコーダの脆弱性に関するFAQ

CVE-2026-111497、通称Brotli2Shellは、GoogleのBrotliデコーダライブラリにおけるメモリ破損の脆弱性です。この脆弱性により、攻撃者はリモートコード実行を行う可能性があります。影響を受けるソフトウェアにはNode.jsや.NET、Bun、Envoy Proxy、Istioなどが含まれます。Googleはこの脆弱性をCVSSv4.0で9.2と評価しており、パッチが提供されていますが、一部のプロジェクトでは修正が行われていない場合があります。攻撃者は、悪意のあるBrotliデータを解凍させることでこの脆弱性を悪用することができます。

メトリクス

このニュースのスケール度合い

9.0 /10

インパクト

8.5 /10

予想外またはユニーク度

7.5 /10

脅威に備える準備が必要な期間が時間的にどれだけ近いか

8.5 /10

このニュースで行動が起きる/起こすべき度合い

8.0 /10

主なポイント

  • ✓ CVE-2026-111497は、GoogleのBrotliデコーダライブラリにおけるメモリ破損の脆弱性であり、リモートコード実行が可能です。
  • ✓ 影響を受けるソフトウェアにはNode.js、.NET、Bun、Envoy Proxy、Istioなどがあり、パッチが提供されていますが、全てのプロジェクトが修正を行っているわけではありません。

社会的影響

  • ! この脆弱性は、広く使用されているソフトウェアに影響を与えるため、企業や開発者にとって重大なセキュリティリスクとなります。
  • ! 特に、クラウドサービスやウェブアプリケーションにおいて、攻撃者によるリモートコード実行のリスクが高まるため、迅速な対応が求められます。

編集長の意見

CVE-2026-111497は、GoogleのBrotliデコーダにおける深刻な脆弱性であり、リモートコード実行の可能性を秘めています。この脆弱性は、特にNode.jsや.NETなどの広く使用されているプラットフォームに影響を与えるため、開発者や企業は注意が必要です。攻撃者は、悪意のあるBrotliデータを解凍させることで、システムに対して深刻な攻撃を行うことができます。特に、HTTP通信を介してデータが送信される場合、攻撃のリスクが高まります。これにより、企業のデータやシステムが危険にさらされる可能性があります。今後の課題としては、影響を受けるソフトウェアの迅速なアップデートが挙げられます。多くのプロジェクトがパッチを提供していますが、全てのプロジェクトが修正を行っているわけではありません。開発者は、自身の使用しているライブラリやフレームワークが影響を受けているかを確認し、必要に応じてアップデートを行うことが重要です。また、セキュリティ対策として、脆弱性の監視や定期的なセキュリティレビューを実施することが推奨されます。これにより、将来的な攻撃からシステムを守ることができるでしょう。

解説

Brotli2Shell(CVE-2026-111497):圧縮の基盤が攻撃面に変わる——Google Brotliデコーダ脆弱性の本質と現場対応

今日の深掘りポイント

  • デコード経路が露出している「実在の接点」を洗う——プロキシ(Envoy/Istio)、APIゲートウェイ、サービス間通信、CI/ログ処理のどこでBrotliが展開されているかが勝敗を分けます。
  • 影響は「使っているか」ではなく「解凍させるか」で決まる——エンコードのみの経路はリスクが低く、デコード(受信側)や中間での透過デコードが最大のリスクになります。
  • いまは可用性より安全側に倒す——パッチ未適用区画では“受信側のBrotli無効化/剥がし”を優先し、機能退行はSLAの範囲で一時容認する判断が必要です。
  • スキャン可視化が初動を支える——Content-Encoding: brのリクエスト頻度や異常なBrotli展開失敗ログは、侵入前段のインジケータとして有効です。
  • SBOMとリビルドの同時進行——上位アプリを更新しても、コンテナ内のlibbrotli依存が古いまま残る“残留リスク”を防ぐため、ベースイメージまで含めた全面リビルドが要ります。

はじめに

GoogleのBrotliデコーダにメモリ破損を引き起こす脆弱性(CVE-2026-111497、通称Brotli2Shell)が報じられています。攻撃者が細工したBrotliデータを解凍させるだけでリモートコード実行に至る可能性があるという点が本件の核心です。BrotliはWebとクラウド基盤の“空気”のように広まっており、Node.jsや.NET、Bun、Envoy Proxy、Istioほか多様なソフトウェアがGoogle実装に依存しています。パッチは提供開始済みとされる一方、エコシステム全域での反映には時間差が生じやすく、いわば“サプライチェーンの時差”が最大のリスクになります。

本稿は、いま何が事実としてわかっているか、その事実から現場がどう判断・優先順位付けすべきかを、攻撃シナリオと運用インパクトを軸に深掘りします。数値スコアが示す緊急度は高い一方で、露出はユースケースに強く依存します。だからこそ「どこでデコードしているか」を丁寧に可視化することが最短の防御線になります。

深掘り詳細

事実整理(何が起きているか)

  • CVE-2026-111497(Brotli2Shell)はGoogleのBrotliデコーダにおけるメモリ破損(アウトオブバウンズ書き込み)に起因し、特定の悪性Brotliデータを解凍するとクラッシュやリモートコード実行に至る可能性があると報じられています。重大度は非常に高い水準と評価されています。
    参考: Tenable: Brotli2Shell FAQ
  • 影響はNode.js、.NET、Bun、Envoy Proxy、Istioなど、GoogleのBrotli実装を取り込むプロジェクトに波及し得るとされています。パッチは上流で提供開始されているものの、各プロジェクトやディストリビューション側の反映状況は一様ではありません。
    参考: 上掲Tenable記事
  • 悪用前提条件は「攻撃者が制御するBrotliデータを解凍させること」で、HTTP経路(例:Content-Encoding: brのリクエストボディ、サービス間通信、プロキシによる透過解凍など)が主な想定です。
    参考: 上掲Tenable記事

上記は公開情報(TenableのFAQ)に基づく事実です。ほかの一次情報(各ベンダのセキュリティアドバイザリ、上流レポジトリの修正コミット等)については本稿執筆時点で独自確認を行っていないため、リンクは控えます。

インサイト(何が本質的リスクか)

  • デコード面の露出が支配するリスクプロファイル
    Brotliの「圧縮(送信側)」機能だけを使う経路のリスクは限定的です。危険なのは「受信側が不特定の相手から来るBrotliデータを解凍する」経路です。具体的には、APIゲートウェイやEnvoy/IstioがリクエストのContent-Encodingを透過的に解凍する構成、サービス間でBrotli圧縮を用いる内部API、アプリ側がファイルアップロードやログ集約の過程でBrotliを解凍する処理などです。
  • 「上流が直っても下流が残る」サプライチェーンの時差
    上流のGoogle Brotliに修正が入っても、言語ランタイム、パッケージ、ディストロのビルド、ベースイメージ、さらに自社アプリの再ビルドという多段で時差が生じます。Nodeや.NETの更新適用後でも、コンテナ内に残る古いlibbrotliがリンクされたツールが温存されるケースは現場でしばしば見落とされます。
  • スコアの読み方——「規模」と「可用性影響」のせめぎ合い
    指標が示唆するのは“短期の悪用蓋然性が高く、影響スケールが広い”ことです。一方で、Brotli無効化やヘッダ除去といった一次防御はユーザ体験や帯域効率を下げる可能性があります。優先は「受信側デコードが存在し、かつ外部入力に直結する」経路の遮断で、静的アセットの配信などエンコード中心の経路は後回しで構いません。
  • 「ブラウザ」は脅威面から外して考えるのが無難
    本件はサーバ/サービス側のBrotliデコーダ(Google実装)に焦点があります。一般ユーザのブラウザにまで影響が及ぶかどうかは実装差と関与範囲に依存するため、現時点では不用意に混同せず、サーバサイド/プロキシ/マイクロサービスに絞って対策優先度をつけるのが合理的です(仮説)。

露出評価の手順(短時間での見取り図づくり)

  • 通信経路の棚卸し
    • 入口(インターネット向け):WAF/ALB → Envoy/Istio → アプリ。どこでContent-Encoding: brを解凍し得るかを確認します。
    • 内部(東西):サービス間のHTTP/2やgRPCでBrotli圧縮を有効化していないかを確認します。
  • 実装レイヤの棚卸し
    • ランタイム/フレームワーク:Node.js(zlib/brotli関連APIの利用)、.NET(System.IO.Compression.Brotli*)、Bunの内蔵HTTP、Envoy/Istioのデコンプレッサ系フィルタ。
    • パッケージ/CLI:ログ収集やCIでBrotli展開を行うユーティリティの存在を確認します。
  • ベースイメージとライブラリ
    • OSレベルのlibbrotliのバージョン、静的リンク有無、再ビルド要否をSBOMで突き止めます。

脅威シナリオと影響

以下は現時点の公開情報を踏まえた仮説シナリオです。具体の悪用手法やPoCの有無に関する断定は避け、攻撃面の広さを理解するための思考実験として提示します。

  • シナリオ1:公開プロキシでの初期侵入
    • 条件:Envoy/IstioがリクエストのBrotli解凍を許容。攻撃者がContent-Encoding: brの悪性ボディを送信。
    • 結果:プロキシ上でRCE、制御奪取ののちサービスメッシュ内へ横展開。
    • ATT&CK対応(仮説):
      • Initial Access: Exploit Public-Facing Application(T1190)
      • Execution: Exploitation for Client Execution(T1203)
      • Lateral Movement: Remote Services(T1021)、Lateral Tool Transfer(T1570)
      • Persistence: Web Shell(T1505.003)またはService登録(T1543)
      • Command and Control: Application Layer Protocol: Web(T1071.001)
  • シナリオ2:サービス間通信の透過解凍
    • 条件:上流サービスがBrotli圧縮したレスポンスを返し、下流の.NET/Nodeサービスが自動解凍。攻撃者が上流に対する入力を掌握(SSRF/キャッシュポイズニング等の別脆弱性連鎖を仮定)。
    • 結果:下流サービスでのRCE、内部資格情報の窃取。
    • ATT&CK対応(仮説):
      • Initial Access: Exploit Public-Facing Application(T1190)またはTrusted Relationship(T1199)
      • Credential Access: OS Credential Dumping(T1003)
      • Discovery: System/Network Discovery(T1082/T1016)
  • シナリオ3:ファイルアップロード/ログ収集での非HTTP経由解凍
    • 条件:ユーザがアップロードした.brアーカイブや、エッジ装置から収集したBrotli圧縮ログをアプリ/ETLが解凍。
    • 結果:バッチ/ETLワーカーでのRCE、ジョブキュー経由の横展開。
    • ATT&CK対応(仮説):
      • Initial Access: Valid Accounts(T1078)やSupply Chain Compromise(T1195)の補助を受けつつ、Execution: T1203
      • Persistence/Evasion: Modify System Process(T1543)、Masquerading(T1036)

影響評価の要点は以下です。

  • 可用性:プロセス異常終了によるDoS発生確率は高く、RCE成立が困難でも可用性劣化は現実的です。
  • 機密性・完全性:プロキシ/ゲートウェイ層の奪取は、機密トラフィック盗聴、ポリシーバイパス、トラフィック改竄に直結します。
  • 横展開のしやすさ:Kubernetes/サービスメッシュ環境では、奪取したPodからのマネージメント平面探索が早期に実を結ぶ傾向があり、クラスタスコープのリスクが増幅します。

セキュリティ担当者のアクション

優先度は「受信側でのデコード可否」と「外部入力接面の有無」で決めます。以下は短期〜中期の現実解です。

  • 0〜24時間(初動)
    • 露出の可視化
      • ログでContent-Encoding: brのリクエスト有無と頻度を可視化します。普段ほぼゼロの環境で急増があればスキャン兆候です。
      • Envoy/Istioのフィルタ設定(decompressor/transform系)と、アプリ側での自動解凍の有無(Nodeのzlib Brotli API、.NETのBrotliStream等)を棚卸しします。
    • 一時的な遮断・緩和(パッチ未適用区画)
      • 入力側のBrotli解凍を無効化、または境界でContent-Encoding: brをストリップし、バックエンドに非圧縮で渡します。
      • API仕様としてBrotli圧縮ボディを受け付けない方針を暫定運用ガイドに明記します。
      • 代替としてgzip/deflateのみ許容(必要最小限)など、許可リスト方式に寄せます。
    • 監視強化
      • Brotli解凍失敗ログ(例外/セグフォ)とプロセス再起動の相関をアラート化します。
      • 入口での異常ステータス(400/415/413増加)と、上流のトラフィックパターン変化を突合します。
  • 24〜72時間(是正)
    • パッチ適用と再ビルド
      • Node.js/.NET/Envoy/Istioなど上位コンポーネントの修正リリースに追随します。
      • ベースイメージを含めた全面リビルドを実施し、libbrotliの更新が実バイナリに反映されたことをSBOM・差分出力で確認します。
      • 自動テストに“Brotli入力を与えてもクラッシュしない”スモークを追加します(機能退行検出)。
    • コンフィグ固定化
      • デコード経路が本当に必要なサービスだけに限定し、不要な自動解凍は無効化。変換は専用のサンドボックス化したマイクロサービスにオフロードします。
  • 7〜14日(構造化)
    • パイプラインへの組み込み
      • SCA/SBOMゲートでBrotli依存の最小許容バージョンを定義し、CIでブロックします。
      • 例外承認プロセスを整備し、例外はダッシュボードで期限管理します。
    • 被害抑制設計
      • 解凍処理を別プロセスに分離(seccomp/AppArmorで権限最小化、メモリ上限設定、ネットワーク隔離)し、脆弱化しても踏み台化を防ぎます。
      • 東西トラフィックのmTLS/認可、メッシュ内のポリシー(AuthZ/Rate Limit)で横移動を困難化します。
  • ハンティングのヒント
    • 短期間に集中するContent-Encoding: br付きPOSTの増加。
    • 入口プロキシ/アプリでのセグメンテーションフォルト、OOM、再起動の同時多発。
    • Envoyのフィルタ警告や異常統計(decompress失敗率)上昇。

影響評価と実装現実のギャップを埋めるには、機械的な「全体停止」ではなく、デコード面の“点”を狙い撃ちで塞ぐのがコスト効率に優れます。スコアが高いから一律遮断ではなく、データフローとSLOを見ながら、外向き・受信側・自動解凍の三点にフォーカスして手当てするのが賢い最適化です。

参考情報

  • Tenable: Brotli2Shell Frequently Asked Questions for Google Brotli Decoder (CVE-2026-111497)
    https://www.tenable.com/blog/brotli2shell-frequently-asked-questions-for-google-brotli-decoder-cve-2026-111497

本稿は上記公開情報に依拠しており、追加の一次情報(各ベンダのアドバイザリ、上流リポジトリの修正詳細など)の確認が可能になり次第、追補版でアップデートします。読者のみなさんの現場での知見や検証結果も、編集部までぜひお寄せください。皆さんの現場の一歩が、コミュニティ全体の防御力を底上げします。

背景情報

  • i CVE-2026-111497は、GoogleのオープンソースBrotli圧縮ライブラリにおけるアウトオブバウンズ書き込みの脆弱性です。この脆弱性は、攻撃者が制御するデータを解凍する際に発生し、プロセスのクラッシュやリモートコード実行を引き起こす可能性があります。
  • i この脆弱性は、HTTPレスポンスやリクエストボディを通じて悪意のあるデータが送信されることで悪用されることがあります。Googleはこの脆弱性をCVSSv4.0で9.2と評価し、重大なリスクを伴うことを示しています。