urllib3はPython向けのHTTPクライアントライブラリです。urllib3のストリーミングAPIは、大きなHTTPレスポンスを一度に全てメモリに読み込む代わりに、チャンク単位でコンテンツを読み取ることで効率的に処理するよう設計されています。urllib3はHTTPヘッダーの`Content-Encoding`(例:`gzip`、`deflate`、`br`、`zstd`)に基づいてデコードや解凍を行うことができます。ストリーミングAPI使用時には必要なバイトのみを解凍し、部分的にコンテンツを消費できるようになっています。バージョン1.22から2.6.3未満の間、HTTPリダイレクトレスポンスに対して、ライブラリは接続をドレインするためにレスポンスボディ全体を読み込み、不必要にコンテンツを解凍していました。この解凍は読み取りメソッドが呼ばれる前に行われ、設定された読み取り制限は解凍データの量を制限しませんでした。そのため、解凍爆弾に対する保護がなく、悪意あるサーバーはこれを悪用してクライアント側で過剰なリソース消費を引き起こす可能性がありました。信頼できないソースからコンテンツをストリーミングし、リダイレクトを無効化しないまま`preload_content=False`を設定しているアプリケーションおよびライブラリが影響を受けます。ユーザーはライブラリをurllib3 v2.6.3以降のバージョンにアップグレードすることを推奨します。このバージョンでは、リダイレクトレスポンスのコンテンツを`preload_content=False`でデコードしません。すぐにアップグレードできない場合は、信頼できないソースへのリクエストで`redirect=False`を設定してリダイレクトを無効にしてください。
|