CVE-2026-111497 は Google Brotli デコーダのバッファオーバーフローです。不正な Brotli 圧縮入力が内部バッファを越えて書き込むことがあります。攻撃者制御のデータを影響を受けるデコーダへ渡すアプリは暴露の可能性があります。圧縮 HTTP リクエスト本体、信頼できないサーバから取得したレスポンス、圧縮ファイルなどが含まれます。影響はクラッシュやメモリ漏洩からリモートコード実行まで。出方向の圧縮にだけ Brotli を使うこと自体は、このデコーダ欠陥への暴露を意味しません。
Node.js は 2026 年 10 月 21 日の 22.x/24.x/26.x セキュリティリリースで本問題を High と評価しました。無効な block switch が永久的な形式エラーではなく「一時的にもう少し入力が必要」と扱われ、ストリーミングデコーダが 8 バイトの内部バッファへバイトを足し続けた、とあります。アプリが `node:zlib` で攻撃者の Brotli を展開するとプロセスメモリを壊せます。Node.js アドバイザリは OpenAI Codex Security の Khai Tran と Sylvie Mayer の報告、および mcollina・aduh95 の修正に謝意を示しています。
修正バージョン(Patch the Planet 2026-10-23 時点)
| プロジェクト | 修正バージョン |
|---|---|
| Node.js | 22.23.4、24.22.1、26.12.1(サポート中の系統を使用) |
| Bun | 1.4.4(Brotli 1.2.1 を含む) |
| Envoy | 1.40.0、1.39.3、1.38.6、1.37.8(1.36.12 も修正含むが 1.36 は非サポート) |
| Istio | 1.29.9、1.30.6、1.31.2(1.29 は EOL、サポート線へ移行を) |
| Google Brotli(上流) | 1.0.10、1.1.1、1.2.1(ライブラリの系統に合う修正版を) |
上流 Brotli の 1.0.3〜1.2.0 が影響範囲です。埋め込みライブラリと静的バイナリも更新してください。Envoy のアドバイザリ(GHSA-3wvj-j6qm-62mr)は Brotli 展開フィルタを設定したデプロイが対象です。Chromium と Node を同梱する Electron 系、curl/libcurl や Python/Java バインディング、Brotli を読むファイル/フォント処理も確認してください。
暫定緩和
すぐ更新できない場合は、gzip/deflate などは残しつつ、信頼できないデータの Brotli 展開を止めます。
- プロキシ・ミドルウェア・body parser が展開する前に、`Content-Encoding: br` のリクエストを拒否する。
- HTTP クライアントでは自動 Brotli 展開を止め、展開前に Brotli レスポンスを拒否する。`Accept-Encoding` から `br` を外すだけでは、サーバが送ってくるのを止められない。
- Envoy/Istio ではリクエスト・レスポンス双方の Brotli 展開フィルタを無効化。無効化後も圧縮バイトが下流の脆弱デコーダへ渡ることがある。
- デコーダを直すまで、信頼できない Brotli ファイル処理を止める。
CDN やオリジンで Brotli *レスポンス圧縮*を切っても、リクエスト側やクライアント側の展開は止まりません。更新後は古いランタイムをピンしたイメージを再ビルド・再デプロイし、全レプリカとワーカーを再起動し、実行中バイナリをベンダー修正版と照合してください。
OpenAI の 10 月 23 日付・最先端モデル訓練環境の説明では、高計算のレッドチームが Patch the Planet 経由で開示した OSS 欠陥の一つとして本 Brotli 問題に触れています。訓練隔離の話は OpenAI が最先端モデル訓練環境の隔離を強化。Node.js 向けの別稿は Qoder が php2shell Defense と Node.js Vulnerability Scan スキルを追加。
各パッチビルドについて、私たちはまだ自前の環境で一つひとつ再テストしていません。暴露面やアップグレードの知見があれば、サイトフッターの連絡先からフィードバックをください。関連記事は OpenAI 訓練環境の隔離、Qoder Node.js 脆弱性スキャンスキル。
