Brotliデコーダーの重大な脆弱性により、Node.js、Bun、ブラウザ、HTTPクライアント、およびその他のプロジェクトに影響が出ます。

Brotliデータ圧縮デコーダのリファレンス実装を含むライブラリに脆弱性(CVE-2026-111497、コードネーム:Broccoli2ShellおよびHTTP2Shell)が発見されました。この脆弱性により、特別に細工された圧縮データを処理する際にバッファオーバーフローが発生します。Googleによると、この脆弱性は、公式のBrotliデコーダ実装を使用するプロジェクトを攻撃する際に、リモートコード実行に悪用される可能性があります。影響を受けるプロジェクトには、Node.js、Bun、Envoy、Istio、Webブラウザ、プロキシサーバー、HTTPクライアント、HTTPサーバー、アーカイバ、UEFIファームウェア、JPEG XLビューア、Python、Ruby、Java、PHP、および.NET用のコンテンツデコードライブラリ、およびそれらの関連依存関係が含まれます。

この問題は今年2月にOpenAIによって発見され、デコード中に無効なストリームを破棄することでBrotliのコードベースでブロックされました。10月22日、Brotli 1.0.10、1.1.1、および1.2.1のパッチリリースが公開され、修正が明示的に発表され、根本的な問題に対処しました。同日、非標準ビルドを使用したラボ環境でリモートコード実行を可能にするプロトタイプのエクスプロイトが作成されました(標準ビルドではクラッシュします)。その後、Impervaは標準のNode.js 24.22.0ビルドに対する攻撃を検出しました。 Linux- ARM64システム上の環境。

この脆弱性は、圧縮ストリームのブロック解析中にエラー処理が不適切であったために、バッファの範囲外への書き込みが発生するというものです。DecodeBlockTypeAndLength() 関数はエラーコードではなく true と false の値のみを返していたため、呼び出し元はストリームの破損と、関数に追加のデータを渡す必要がある状態を区別できませんでした。ストリームで誤った圧縮データブロックタイプが指定された場合、デコーダはそれをエラーではなく、ストリームからの追加読み取りが必要なデータ範囲外の状態として解釈しました。しかし、割り当てられたバッファは追加データの読み取りに対応するように設計されていなかったため、データはデコーダの内部状態を格納するバッファ外の領域に書き込まれました。

影響を受けるプロジェクト:

  • Brotli リファレンス ライブラリに関する問題は、リリース 1.0.3 以降存在しており、アップデート 1.0.10、1.1.1、および 1.2.1 で修正されましたが、libbrotlidec ライブラリを使用するアプリケーションやライブラリに影響を与えます。
  • Node.js JavaScriptプラットフォームは、アップデート26.12.1、24.22.1、および22.23.4でパッチが適用されました。サードパーティコンテンツをリクエストするためにfetch()メソッドを使用するアプリケーションは、HTTPレスポンスに「Content-Encoding: br」ヘッダーが含まれている場合、脆弱性の影響を受ける可能性があります。また、サードパーティコンテンツを解凍するためにzlib.brotliDecompress*()、createBrotliDecompress()、およびbrotli.decompress()メソッドを直接呼び出した場合、またはExpress 5およびbody-parser 2.xライブラリを介して解析されたHTTPリクエストを受信した場合にも、この脆弱性が顕在化します。
  • Python パッケージの brotli と brotlicffi (バージョン 1.2.1 で修正が提案されています) およびそれらを使用するプロジェクト (人気のあるライブラリ urllib3、aiohttp、httpx、Scrapy など) は、外部 Web リソースにアクセスする際に「Content-Encoding: br」ヘッダーを持つレスポンスをデコードします。
  • Brotli圧縮("Accept-Encoding: br"))をサポートするHTTPサーバー、HTTPプロキシ、HTTPクライアント、およびWebブラウザ。Apache httpdにはmod_brotliが同梱されています(デフォルトでは無効)。nginxにはサードパーティモジュールngx_brotliが利用可能です(依存関係のbrotliバージョンは最新バージョンに更新されています)。Chrome/ChromiumおよびFirefoxでは、この問題は以前のアップデートで既に修正されています。プロキシでは、サーバ Envoyの脆弱性は、リリース1.40.0、1.39.3、1.38.6、1.37.8、1.36.12で修正されています。
  • アプリケーションで BrotliDecoder、BrotliStream、および HttpClient メソッドを使用する際の .NET ランタイムに脆弱性があります。この脆弱性はまだ修正されていません。
  • PHPのbrotli拡張機能でbrotli_uncompress()関数を使用する際に発生する問題。現在修正中です。
  • RubyパッケージのBrotliには、Brotli.inflateメソッドを利用した脆弱性が存在しました。この脆弱性はまだ修正されていません。
  • DuckDBで圧縮Parquetファイルをインポートする際に問題が発生します。現在修正作業中です。
  • ClickHouse DBMS。修正作業中です。
  • YDB DBMS。この脆弱性はまだ修正されていません。
  • Apache Arrowで圧縮Parquetファイルをインポートする際に発生する問題。現在修正作業中です。
  • libjxl(JPEG XLメタデータ圧縮にBrotliを使用)。
    修正準備中。
  • NanaZip、7-Zip-zstd、およびp7zipアーカイバは、.brファイルを解凍する際に脆弱性を抱えています。この脆弱性は依然として存在します。
  • MuPDF。この脆弱性は未修正です。
  • EDK IIとUEFIToolをベースにBrotliで圧縮されたUEFIファームウェア。EDK IIとUEFITool向けの修正版を準備中です。
  • Bun JavaScriptフレームワーク。この脆弱性はバージョン1.4.4で修正されました。
  • Istioはマイクロサービス管理プラットフォームです。この脆弱性はバージョン1.29.9、1.30.6、および1.31.2で修正されました。
  • curlとlibcurlの場合、依存関係に脆弱なバージョンのlibbrotlidecが存在すると、脆弱性が顕在化します。
  • Web Open Font (WOFF) フォント形式のパーサーは、
    ブロトリ。
  • Brotli4j、SumatraPDF、Ghostscript、CatBoost、およびYTsaurus。この脆弱性はアップデートで修正されました。

出所: オープンネット.ru

DDoS 保護機能を備えた信頼性の高いサイト用ホスティング、VPS VDS サーバーを購入する 🔥 DDoS攻撃対策付きの信頼性の高いウェブサイトホスティング、VPS/VDSサーバーを購入しましょう | ProHoster