PHP Windows版 8.5.12-1 など更新|Brotli脆弱性の影響と確認点
Windows 上で PHP を動かしているサイト運営者や開発者に向けた記事です。php.net が告知した、Brotli の脆弱性修正を含む Windows ビルドの更新内容を整理します。
どのバージョンが対象か、どんな条件で影響を受けるか、「-1」の付いたパッケージは何が違うかが分かります。
- 更新された Windows ビルドの一覧と、修正された脆弱性
- 脆弱なデコーダに到達する条件と、「-1」接尾辞の意味
- 同時期に告知された重大な脆弱性との関係と、動く前の確認点
- 更新されたのは PHP 8.5.12-1、8.4.27-1、8.3.36-1、8.2.35-1 の 4 本です。Brotli 1.2.1 を含み、CVE-2026-111497 を修正します。
- Windows ビルドでは、cURL 拡張経由で HTTP レスポンスの自動展開が有効なときに、脆弱なデコーダに到達しえます。cURL ではこの設定は既定で無効です。
- 「-1」は依存ライブラリを更新した再ビルドを示します。PHP のソースリリースは同一で、ランタイムのバージョンは変わりません。
- 8.5.12 などの本体更新は、別の重大な脆弱性 2 件を修正するものです。公式は完全な緩和策はなく、更新だけが安全な選択だとしています。
今回の Windows ビルド更新の内容
php.net のお知らせによると、更新対象は次の 4 つの Windows パッケージです。
| 系列 | 更新後のパッケージ |
|---|---|
| PHP 8.5 | 8.5.12-1 |
| PHP 8.4 | 8.4.27-1 |
| PHP 8.3 | 8.3.36-1 |
| PHP 8.2 | 8.2.35-1 |
どのパッケージにも Brotli 1.2.1 が含まれます。これは CVE-2026-111497 を修正するものです。CVE-2026-111497 は、Brotli の展開処理で起きる out-of-bounds write の脆弱性です。
更新パッケージは、php.net の downloads ページで入手できます。
どんな場合に影響を受けるのか
脆弱な Brotli のデコーダに到達しうるのは、次の条件がそろったときです。
- PHP の Windows ビルドを使っている
- cURL 拡張を通じて HTTP リクエストを送っている
- HTTP レスポンスの自動展開(automatic HTTP response decompression)が有効になっている
cURL では、この自動展開の設定は既定で無効です。ただし、アプリケーションや HTTP クライアントライブラリが有効にできます。
自分のコードで設定していなくても、利用しているライブラリが有効にしている場合があります。その場合は、既定が無効でも上の条件を満たします。
「-1」の接尾辞が示すこと
今回のパッケージ名には「-1」が付いています。公式の説明は次のとおりです。
- 依存ライブラリを更新して、Windows パッケージを再ビルドしたことを示す
- PHP のソースリリースは、元の版と同一
- PHP ランタイムのバージョンは変わらない
つまり PHP 本体のコードが変わったわけではなく、同梱ライブラリが Brotli 1.2.1 に入れ替わった版です。8.5.12 などの番号が同じでも、「-1」の付いた再ビルド版かどうかで中身が異なります。
同時期の重大な脆弱性との関係
同じ php.net のお知らせには、PHP 8.5.12、8.4.27、8.3.36、8.2.35 のセキュリティリリースも載っています。こちらは別の問題で、認証なしのリモートコード実行につながりうる 2 件の重大な脆弱性を修正します。
| CVE | 公式の説明 |
|---|---|
| CVE-2026-109618 | メモリ不足の処理がきっかけで、リクエスト後始末が無効なデータを有効なものとして扱いうる |
| CVE-2026-109619 | リクエストが所有する内部状態が、メモリ解放後も残りうる |
公式は、Web リクエストを処理するすべての PHP 環境が対象だとしています。例として PHP-FPM、Apache の mod_php、php-cgi、FrankenPHP、LiteSpeed を挙げ、リスクが最も高いのは mod_php です。
すべての PHP ユーザーに、直ちに更新することを強く推奨しています。Windows のソースとバイナリは、downloads ページにあります。
今回の Brotli 修正は、これらの本体更新とは別の告知です。Windows で運用している場合は、本体のセキュリティ更新と再ビルド版の両方を確認してください。
関連:PHP の重大な脆弱性(2026 年 10 月 21 日)で何が起きたか|サイト運営者が確認すること
すぐ更新できない場合の公式の案内
公式は、完全な解決策は更新のみだと明記しています。すぐに更新できない場合の対策は、特定の攻撃経路への露出を減らすだけで、環境を安全にはしません。
CVE-2026-109619 向けの対策の一つが、session.upload_progress.enabled=0 の設定です。php.ini、FPM プール、またはリクエスト解析前に適用されるサーバー設定で指定し、すべてのワーカーを再起動します。ini_set() や FPM の .user.ini には頼らないよう案内されています。これは確認済みのセッション経路を塞ぐもので、他の変種は塞げません。
公式は、次の通常バグ修正リリースまでこの設定を推奨しています。可能性の低い RCE 経路から完全に保護するためです。CVE-2026-109619 の勧告で、すでにこの緩和策を適用済みなら、設定を維持すれば追加の対応は不要です。
その他の緩和策(memory_limit、post_max_size、Web サーバー層の上限など)は、公式の勧告で案内されています。
手続き・判断の前に確認すること
- 運用している PHP が Windows ビルドか。公式の告知は Windows ビルドの Brotli 修正を扱っています。
- 使っている系列が 8.5、8.4、8.3、8.2 のいずれかか。更新の対象は、この 4 系列です。
- cURL 拡張を使った HTTP リクエストがあるか。ある場合は、アプリケーションや HTTP クライアントライブラリが、レスポンスの自動展開を有効にしていないか確認します。
- 入手元は php.net の downloads ページです。パッケージ名に「-1」が付いた版かどうかを見ます。
- PHP 8.1 以前は、PHP プロジェクトからの更新を受けません。一部のディストリビューションと LTS ベンダーは修正をバックポートしているため、詳細はベンダーに問い合わせるか、サポート対象バージョンへ移行します。
- Linux ディストリビューションで運用している場合、更新パッケージはベンダーに確認します。公式は、ベンダーに事前にパッチを渡したと説明しています。
- PHP 8.2 は 2026 年 12 月 31 日にサポートが終了し、以降はセキュリティ修正が提供されません。8.2 を使っている場合は、サポート対象バージョンへのアップグレードを計画します。
次にやること
- Windows 上の PHP の系列と、現在入れているパッケージ名を確認します。「-1」の付かない版なら、downloads ページで再ビルド版を入手して入れ替えます。
- コードと利用ライブラリの設定を見て、cURL の自動展開が有効になっているか洗い出します。有効にしている箇所があれば、更新までの優先度を上げます。
- 本体のセキュリティリリース(8.5.12、8.4.27、8.3.36、8.2.35)が適用済みか確認します。未適用で更新できない場合は、公式の勧告に載る緩和策を一時的な措置として検討します。
出典
内容は確認日時点のものです。最新の情報は、出典の公式ページで確認してください。
本記事は、公式情報(PHP.net News)の内容を整理したものです。私が実際に使った感想ではありません。アフィリエイトリンクは含みません。 確認日: 2026-10-29 / 出典: https://www.php.net/index.php#2026-10-26-1