
PHPプロジェクトは、Windows向けPHPパッケージに含まれる圧縮ライブラリ「Brotli」の脆弱性CVE-2026-111497に対処するため、PHP 8.2~8.5向けのWindowsビルドを再度更新しました。
今回の更新は、10月21日に公開された「PHP2Shell」と呼ばれるリモートコード実行脆弱性の修正からわずか5日後に実施されたもので、短期間で2度目のセキュリティ対応とります。
問題となったのはBrotliライブラリ
今回問題となっているのは、PHP本体というよりWindows版PHPに同梱されているBrotliライブラリの脆弱性で、cURL拡張機能によるHTTPレスポンスの自動展開処理を通じて到達可能とのことです。攻撃者は細工した圧縮レスポンスを送信することで脆弱性を悪用できると考えられています。
通常、cURLの自動展開機能は無効ですが、アプリケーションやHTTPクライアントライブラリが有効化している場合は注意が必要です。例えば、PHP向けの人気HTTPクライアントライブラリ「Guzzle」は、デフォルトでcURLの自動デコード機能を有効にしており、設定を変更せずに利用しているアプリケーションは、脆弱性に到達する条件を満たしている可能性があります。
Brotliライブラリの脆弱性について、GoogleはCVSS 4.0スコアで9.2(Critical)と評価しています。また、Red HatもCVSS 3.1で8.1(Important)を付与しており、業界全体で高リスクな問題と認識されています。
修正版はBrotli 1.2.1を搭載
再公開されたWindowsビルドは以下のバージョンです。
- PHP 8.5.12-1
- PHP 8.4.27-1
- PHP 8.3.36-1
- PHP 8.2.35-1
これらのビルドには修正版の Brotli 1.2.1 が含まれています。一方でPHPのソースコード自体は変更されていないため、php -v の表示は更新前後で変わりません。更新の有無は、ファイル名に付与された「-1」のサフィックスやSHA-256ハッシュで確認できます。
当面の回避策は?
PHP側は更新できない環境向けの公式回避策を提示していません。一方で脆弱性を発見したOpenAIは、アップデート適用までの暫定措置としてHTTPクライアントでBrotliの自動展開機能を無効にするよう推奨しています。PHPではCURLOPT_ENCODINGを設定しないこと、Guzzleではdecode_contentをfalseに設定することが対策として紹介されています。
まとめ
今回の問題はPHP本体ではなく、Windows版PHPに同梱されるBrotliライブラリに起因するものです。しかし、Guzzleのような広く利用されているライブラリがデフォルトで影響条件を満たしていることから、Windows環境でPHPアプリケーションを運用している管理者は早急なアップデートが求められます。特に先週のPHP2Shell対応を実施したばかりの環境でも、今回の再ビルド版への置き換えが必要になる点には注意が必要です。
[via The Hacker News Logo]
