何が起きた?
米Googleのデータ圧縮アルゴリズム「Brotli」のC言語実装において、認証なしでリモートからメモリを破壊できる深刻な脆弱性「CVE-2026-111497」が確認されました。当初はOpenAIによって「Node.js」の問題として報告され「Node2Shell」と呼ばれていましたが、HTTPを扱うさまざまなライブラリやアプリにも影響が及ぶことが判明し、セキュリティ企業のAikido Securityなどが「HTTP2Shell」という呼称を用い始めています。
問題の所在は圧縮処理ではなく、圧縮データを元の状態へ展開するデコーダー(c/dec/decode.c)です。影響を受けるのはv1.0.3からv1.2.0までで、悪用されるとメモリ破壊、情報漏洩、サービス拒否(DoS)、さらには任意コードの実行につながる可能性があります。CVSS 4.0の基本値は9.2(Critical)と非常に高い水準です。
なお、「HTTP2Shell」という名前はHTTPエコシステムへの影響が大きいことに由来するもので、HTTP/2接続そのものの脆弱性ではありません。
影響を受ける人・確認ポイント
BrotliはHTTPS通信で送受信するHTTPコンテンツの圧縮(Content-Encoding: br)にも用いられているため、Node.js以外にも幅広いインターネット関連製品に影響が懸念されます。特に以下のような環境を利用している方は要注意です。
- Node.js:v22.23.4、v24.22.1、v26.12.1が対策版
- Git for Windows:v2.56.0.windows.4が対策版(10月26日追記)
- Bun:v1.4.4が対策版
- Envoy Proxy:v1.40.0、v1.39.3、v1.38.6、v1.37.8が対策版
- Istio:v1.29.9、v1.30.6、v1.31.2が対策版(1.29系はサポート終了のため1.30以降への移行を推奨)
- Python:パッケージ「Brotli」と「brotlicffi」の対策版v1.2.1、v1.2.1.0がリリース
Brotliを同梱・静的リンクしたアプリやコンテナー、Bunで生成した単体実行ファイルは、依存ライブラリの更新だけでなく再ビルド・再配備が必要です。
裏ワザ・回避策
すぐにアップデートできない場合は、信頼できないデータに対するBrotliの展開を無効にするのが有効です。gzipやdeflateなどの他の圧縮形式は有効のままで構いません。
- 受信リクエスト:プロキシやミドルウェアが展開する前に、Content-Encoding: brのリクエストを拒否する
- 取得レスポンス:HTTPクライアントでBrotliの自動展開を無効にする。Accept-Encodingからbrを外すだけでは、サーバーからBrotliで送られるのを防げない点に注意
- Envoy Proxy・Istio:リクエストとレスポンスの両方でBrotliの展開フィルターを無効にする
- ファイルなどの入力:デコーダーに修正が適用されるまで、信頼できないBrotliデータの処理を停止する
まとめ
Brotliデコーダーの脆弱性は、Web基盤に関わる製品に幅広く影響し得るため、利用しているバージョンのチェックと、必要に応じた展開無効化や再ビルドの対応が求められます。10月21日にリリースされたBrotli v1.0.10、v1.1.1、v1.2.1で対策済みですので、該当する環境のアップデートを優先的に進めましょう。