デイリー · 記事 01 · 6 分で読む
- セキュリティ
PHP、Brotliの修正を含むWindowsパッケージを再配布
10月26日付の公式発表・10月27日JSTに原文確認
要約・概要
PHP開発チームは10月26日、Brotli 1.2.1を含むWindowsパッケージを再配布しました。本体の番号は変わらないため、配布物の-1改訂と実際の適用を一緒に確かめる必要があります。
サーバーが別のサービスから価格表を取り寄せるときにも、圧縮を解く処理が動くことがあります。PHP開発チームが10月26日に再配布したWindowsパッケージは、その通信経路で使う部品を修正したものです。
主な事実
PHP開発チームはWindows向けの8.5.12-1・8.4.27-1・8.3.36-1・8.2.35-1を公開しました。圧縮を解く部品Brotliを1.2.1へ更新し、CVE-2026-111497を修正したものです。CVEは、公表されたセキュリティ上の欠陥につく識別番号です。末尾の-1は部品を更新して組み直したWindowsパッケージを表し、PHP本体の実行時バージョンは変わりません。PHPの発表・ダウンロード

1. PHPサーバーが外部からの応答を読むとき
サーバーは、サイト訪問者の要求を処理し、必要な情報を返すコンピューターです。PHPはWordPressなどでこの処理を動かすプログラムで、cURL拡張はPHPから別のサーバーへ情報を取り寄せる通信の道具です。Brotliは転送量を減らす圧縮方式で、デコーダーは届いたデータを読める形に戻す部品です。
自動展開を有効にした架空のお店のサーバーが、外部サービスから価格表を取り寄せる場面を考えます。普段は圧縮された応答を展開して価格を読みます。ここでは外部サービスが侵害され、攻撃者の細工した応答を返したと仮定します。そのデータを修正前のデコーダーが処理すると、欠陥に到達する可能性があります。
%% 架空の価格表サービスが侵害された場合の入力経路・PHPとcURLの文書に基づく
flowchart TD
A["お店のWindows PHPサーバー"] -->|"価格表を要求"| B["仮定:外部サービスが侵害"]
B -->|"細工したBrotli応答"| C["cURLの自動展開が有効"]
C --> D["修正前のデコーダーが処理"]PHPの案内では、cURLでHTTP応答の自動展開を有効にすると、問題のデコーダーに到達する可能性があると説明しています。cURLの初期設定では無効ですが、アプリや通信用のライブラリが有効にすることがあります。管理者が自分で有効にしていなくても、アプリの設定を調べる理由はここにあります。自動展開の設定
猫と一緒に読み解く Q&A
- 猫の研究員
サイトにアップロード欄がなくても、この経路を使うの?
ポケットノート外部サーバーの応答を取得して展開する機能があれば、この経路を使うことがあるよ。この例では、侵害された価格表サービスの応答が入口なんだ。実際の影響は、そのデータをアプリが問題のBrotli処理で展開するかにかかっているよ。
2. 壊れた圧縮データで何が起きるか
メモリは、動作中のプログラムが情報を一時的に置く作業場所です。今回の欠陥では、形式の壊れた圧縮データを処理する際に、決められた作業場所の外まで書き込むことがあります。Brotli開発チームは1.2.1で修正したと発表し、同じCVEを扱うNode.jsの案内は、メモリの破損が処理の停止、情報の漏えい、条件によってはコードの実行につながり得ると説明しています。Brotliのリリース・Node.jsの説明
作業場所の隣には、ほかのデータや、プログラムが次の処理へ進むための情報が置かれている場合もあります。その情報を上書きすると、後で読み取るプログラムが止まったり、意図しない動きをしたりすることがあります。下の表はこの一般原理を作業場所にたとえたもので、今回のPHPの実際のメモリ配置や攻撃成功を再現したものではありません。セキュリティ上の弱点を分類するCWEの説明
| 処理の状況 | 作業場所で起きること | 起こり得る結果 |
|---|---|---|
| 正常な処理 | 決められた範囲内にデータを書く | ほかの処理情報を保ち、作業を続ける |
| 範囲外への書き込み | 境界を越え、ほかのデータや処理情報を上書きする | 停止・情報漏えい、条件によっては攻撃者が選んだコードの実行 |
- 処理の状況
正常な処理
- 作業場所で起きること
- 決められた範囲内にデータを書く
- 起こり得る結果
- ほかの処理情報を保ち、作業を続ける
- 処理の状況
範囲外への書き込み
- 作業場所で起きること
- 境界を越え、ほかのデータや処理情報を上書きする
- 起こり得る結果
- 停止・情報漏えい、条件によっては攻撃者が選んだコードの実行
猫と一緒に読み解く Q&A
- 猫の研究員
圧縮データを読むことが、どうしてコード実行につながるの?
ポケットノートデータを命令として信じる問題ではなく、プログラムが次の動きを決める情報まで上書きされることがあるからだよ。何が壊れるかや実行環境によって結果が変わるんだ。止まるだけの場合もあるので、すべてのメモリエラーがコード実行になるわけではないよ。
3. 8.4.27と表示されてもパッケージは変わる
インストール用のパッケージには、PHP本体のほか、通信や圧縮に使う依存部品が入ります。今回の公式Windows再配布物は次の対応です。
| PHP本体のバージョン | 交換先のWindowsパッケージ |
|---|---|
| 8.5.12 | 8.5.12-1 |
| 8.4.27 | 8.4.27-1 |
| 8.3.36 | 8.3.36-1 |
| 8.2.35 | 8.2.35-1 |
- PHP本体のバージョン
8.5.12
- 交換先のWindowsパッケージ
- 8.5.12-1
- PHP本体のバージョン
8.4.27
- 交換先のWindowsパッケージ
- 8.4.27-1
- PHP本体のバージョン
8.3.36
- 交換先のWindowsパッケージ
- 8.3.36-1
- PHP本体のバージョン
8.2.35
- 交換先のWindowsパッケージ
- 8.2.35-1
たとえば、公式WindowsパッケージでPHP 8.4.27を使うサイトなら、8.4.27-1の配布物を探します。管理画面のPHPの番号だけではBrotliの修正まで分からないため、インストールしたパッケージ名・改訂番号と、配布元の修正記録を合わせて見ます。
猫と一緒に読み解く Q&A
- 猫の研究員
ホスティング会社には、どう聞けばいい?
ポケットノート「このサイトを処理するPHPに、どのパッケージ改訂とBrotli修正が適用され、交換後の動作中のPHPにも反映されたか教えてください」と聞くといいよ。パッケージをダウンロードしたという回答だけでは、サイトが新しい部品を使っているか分からないんだ。
4. 自分の環境で適用を確かめる根拠
OSやインストール方法が分からなければ、サーバー担当者へ先に尋ねます。ホスティング会社が独自のパッケージを提供している場合は、その配布物に修正が含まれる根拠を受け取ります。Windows向けの-1はLinuxサーバーの更新番号ではありません。
| 確認すること | 担当者から受け取る根拠 |
|---|---|
| 何を交換したか | 公式Windowsパッケージ名・改訂番号、または配布元のセキュリティ修正記録 |
| サイトに反映されたか | サイトの要求を実際に処理するPHPが使うBrotliのバージョンと、交換後の確認結果 |
| 機能は引き続き動くか | 外部データの取得など、既存機能の点検結果 |
- 確認すること
何を交換したか
- 担当者から受け取る根拠
- 公式Windowsパッケージ名・改訂番号、または配布元のセキュリティ修正記録
- 確認すること
サイトに反映されたか
- 担当者から受け取る根拠
- サイトの要求を実際に処理するPHPが使うBrotliのバージョンと、交換後の確認結果
- 確認すること
機能は引き続き動くか
- 担当者から受け取る根拠
- 外部データの取得など、既存機能の点検結果
PHPのcURL情報には、使用中のBrotliのバージョンを示す項目があります。担当者はサイトの実行環境でこれを調べられます。コマンドラインで確認するPHPと、サイトを処理するPHPが別のインストールである場合もあるため、確認対象をそろえることが大切です。PHPのcURLバージョン情報
サーバーを変更する前にバックアップを確保し、既存の構成に合うパッケージを選びます。交換後は、動作中のWeb処理にも反映されたことと、既存の機能が動くことまで点検して対応を終えます。
猫と一緒に読み解く Q&A
- 猫の研究員
WordPress本体の更新で、この部品も入れ替わる?
ポケットノートPHPパッケージはサーバーやホスティングの担当者が別に管理しているよ。その担当者から、PHP側の修正が適用された根拠を受け取るといいんだ。
まとめ
サイトが実際に使う部品まで
先に扱ったNode.jsのBrotli修正と同じ欠陥が、Windows PHPの配布物でも修正されました。運営者にとって最後に必要なのは、新しいファイルの取得記録に加えて、サイトを処理するPHPに修正済みの部品が反映された根拠です。
出典
- PHPの発表php.net
- ダウンロードphp.net
- 自動展開の設定curl.se
- Brotliのリリースgithub.com
- Node.jsの説明nodejs.org
- セキュリティ上の弱点を分類するCWEの説明cwe.mitre.org
- PHPのcURLバージョン情報php.net