OpenSourceMalwareは10月23日、Node.jsで「Node2Shell」と呼ばれたCVE-2026-111497が、PythonのBrotliとbrotlicffiにも影響すると公表しました。修正版はBrotli 1.2.1、brotlicffi 1.2.1.0です。Aikidoは影響の広がりを「HTTP2Shell」と呼んでいます。
問題があるのはGoogle Brotliのデータ展開処理です。認証していない攻撃者が用意した圧縮データを展開すると、メモリ破壊から情報漏えいやコード実行につながる恐れがあります。Googleの評価はCVSS v4.0で9.2です。
OpenSourceMalwareの10月23日の調査は、Pythonのパッケージにも同じC言語のデコーダーが入ることを確認しています。Pythonでの検証は不正入力の処理比較までで、コード実行の実証は行っていません。Node.js側の更新は先日の記事で扱っています。
requestsやhttpxを通じて使われる経路も確認する
urllib3とそれを使うrequests、httpx[brotli]として導入したhttpxなどでは、環境にBrotliやbrotlicffiがあると圧縮応答を自動展開します。URLプレビューやクローラーなどが、攻撃者のサーバーから応答を受け取る経路が確認対象です。
サーバー側では、Content-Encoding: brのリクエスト本文をアプリやミドルウェアが展開する経路もあります。Brotliを直接呼ぶコードがなくても、依存パッケージと入出力の処理を確認してください。
Pythonの修正版と確認方法
まずpip show Brotli brotlicffiなどで、実行環境に入っている版を確認します。GitHub Advisoryが示す範囲は次のとおりです。
| パッケージ | GitHub Advisoryの影響範囲 | 修正版 |
|---|---|---|
| Brotli | 1.0.3以上、1.2.1未満 | 1.2.1 |
| brotlicffi | 1.0.3以上、1.2.1.0未満 | 1.2.1.0 |
OpenSourceMalwareは、これより古いBrotliにも同じ不具合の処理を確認しています。表の範囲より古いBrotliも含め、導入済みのBrotliとbrotlicffiをそれぞれ修正版へ更新します。依存関係を固定するファイルとコンテナーイメージにも反映し、再展開してください。OS提供のパッケージは、OSベンダーの修正情報に従います。
更新までPythonのBrotli対応を外す場合
Aikidoは、任意で導入したBrotli対応を外す場合、Brotliとbrotlicffiの両方をアンインストールし、依存設定から再導入されないようにする対処を示しています。変更後はアプリを再起動し、通信への影響を確認します。Brotli応答を送る相手とは通信が失敗する場合があります。
Accept-Encodingからbrを消すだけでは、相手が送るBrotli応答の展開を止められません。Aikidoは、HTTPクライアントでは展開前にBrotli応答を拒否するか、デコーダーを無効にする対処を案内しています。サーバー側では、アプリが展開する前にbrを含む圧縮リクエストを拒否する設定にします。

コメント