GoogleのBrotli圧縮ライブラリにおいて、CVE-2026-111497として識別される深刻なセキュリティ脆弱性が発見されました。当初はNode.jsへの影響から「Node2Shell」として注目されましたが、この欠陥は`DecodeBlockTypeAndLength()`関数内で発生する境界外書き込みです。この関数は、Brotliストリームが使用するハフマンツリーを切り替えるポイントであるブロックスイッチの処理を担当しています。影響を受けるバージョン(1.0.3から1.2.0)では、この関数が返すブーリアン値が、デコーダーによって「さらなる入力の要求」または「ストリームの破損」のいずれかと誤認される可能性があります。デコーダーの「高速パス」では、この戻り値が破棄されるため、細工されたストリームによって失敗するスイッチを強制させることができ、その結果として境界外書き込みが発生します。これにより、認証されていないリモートの攻撃者がメモリを漏洩させたり、プロセスをクラッシュさせたり、あるいは任意のコードを実行したりすることが可能になる可能性があります。

この画像は、コアとなる脆弱性と、WebサービスおよびPythonパッケージへの拡大した影響を説明しています。

このビジュアルは、Brotliライブラリにおける境界外書き込みの実用的な悪用方法を実演しています。
この脆弱性の範囲は、主要なPythonパッケージや様々なWebサービスランタイムに影響を与えることが確認されたことで、大幅に拡大しました。BrotliはHTTP圧縮の標準であるため、`requests`、`httpx`、`aiohttp`を含む多くのPython HTTPクライアントは、環境内に脆弱な`Brotli`または`brotlicffi`パッケージが存在する場合、それらを自動的にロードして使用します。これは、アプリケーション自体がソースコード内でBrotliライブラリを明示的にインポートしていなくても、脆弱性にさらされる可能性があることを意味します。この脆弱性は、送信リクエスト(例:悪意のあるサーバーがクライアントに細工されたレスポンスを送信する)または受信リクエスト(例:クライアントがサーバーに悪意のあるリクエストボディを送信する)のいずれかを通じてトリガーされる可能性があるため、特に危険です。
修正には、影響を受けるライブラリの修正済みバージョンへのアップグレードが必要です。Pythonユーザーは、`Brotli`をバージョン1.2.1以上、`brotlicffi`をバージョン1.2.1.0以上にアップグレードする必要があります。Node.js、Bun、Envoyなどの他の影響を受けるランタイムについても、修正パッチがリリースされています。すぐにアップグレードできない場合は、セキュリティの専門家は、リバースプロキシまたはロードバランサーのレベルで、`Content-Encoding`ヘッダーに`br`を含む受信HTTPリクエストを拒否することを推奨しています。さらに、Python環境からBrotliおよび`brotlicffi`パッケージを削除することでもリスクを軽減できます。ほとんどの人気HTTPクライアントは、自動的に`gzip`または`deflate`圧縮にフォールバックするためです。
根本的な原因は2026年2月にアップストリームのBrotliソースコードで修正されましたが、当初はセキュリティ脆弱性として認識されなかったため、修正済みバージョンのリリースが10月まで遅れました。この遅延により、古いバージョンのライブラリを同梱しているプロジェクトやコンテナイメージは、更新されたコンポーネントで再構築されるまで脆弱なままとなります。多くのアドバイザリデータベースがまだこのCVEを特定のPyPIパッケージに関連付けていないため、`pip-audit`や`Dependabot`などの自動化ツールがこれらのバージョンを高リスクとしてフラグ立てない可能性があり、依存関係ツリーの手動チェックが必要となります。