PHP 8.5.12、8.4.27、8.3.36 および 8.2.35 は、認証されていないリモートコード実行を可能にする可能性のある、2つの重大な脆弱性を修正しています。すべてのPHPユーザーは、速やかにアップデートすることを強く推奨します。

影響を受ける対象:Webリクエストを提供するすべてのPHPインストール。これには、PHP-FPM、mod_phpを使用したApache、php-cgi、FrankenPHP、およびLiteSpeedが含まれます。特にmod_phpのリスクが高いと判断されており、認証されていないリクエストによって攻撃が開始され、アプリケーションコードが実行される前に脆弱性が悪用される事例が確認されています。

脆弱性の詳細:

* OOM(Out-of-Memory)による脆弱性:CVE-2026-109618 (GHSA-w8hw-w9fx-j79w)。メモリ不足時の処理が、PHPの内部リクエストデータが部分的に初期化された状態で中断されることがあります。その結果、リクエストのクリーンアップ処理が、無効なデータを有効なデータとして扱う可能性があります。

* 古いグローバル状態による脆弱性:CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp)。リクエストが所有する内部状態が、対応するメモリが解放された後も残存することがあります。同じワーカーによって処理される後続のリクエストが、通常のリセット処理が行われる前に、その古い状態を利用する可能性があります。

アップデート方法:

PHP 8.5.12、8.4.27、8.3.36、または 8.2.35 にアップデートしてください。ソースコードのダウンロードは、ダウンロードページから入手できます。Windows版のソースコードとバイナリファイルも、同じページにあります。

LinuxディストリビューションおよびLTS(Long Term Support)ベンダーは、事前にこれらの修正プログラムを受け取っているため、ベンダーにお問い合わせいただき、アップデートされたパッケージを確認してください。

PHP 8.1 以前のバージョンは、PHPプロジェクトからのアップデートが提供されません。一部のディストリビューションおよびLTSベンダーは、バックポートされた修正プログラムを提供している場合があります。詳細については、ベンダーにお問い合わせいただくか、サポートされているバージョンにアップグレードしてください。

これらの脆弱性の重大性から、PHPセキュリティチームは、ソースコードからビルドする場合や、LTSベンダーにアクセスできないユーザーのために、PHP 7.4、PHP 8.0、およびPHP 8.1に対して、最小限のソースコードのバックポートを提供しました。

すぐにアップデートできない場合:アップデートが完全な解決策ですが、以下の対策は、特定の攻撃経路に対するリスクを軽減しますが、インストールを完全に安全にするものではありません。

OOMによる脆弱性(CVE-2026-109618):

`memory_limit` を -1 に設定します。可能であれば、アプリケーションが上書きできない方法で設定してください。例えば、FPM プールまたは Apache の設定ファイルにおける `php_admin_value` を使用します。また、どのプール、ディレクトリ、またはアプリケーションの設定が、制限値を設定していないことを確認してください。これにより、PHP のメモリ制限に関する問題を回避できますが、根本的なメモリ割り当ての失敗は依然として問題を引き起こす可能性があります。

`post_max_size` を低い値に設定します。ファイルアップロードが不要なアプリケーションでは、`post_max_size = 8M` に設定します。ファイルアップロードが必要な場合は、`post_max_size = 32M` に設定します。`upload_max_filesize` は、`post_max_size` よりも小さく設定してください。デコードされたリクエストサイズ、入力フィールドの数、マルチパートのパート数、ヘッダーの数、およびネストの深さについて、Web サーバーまたはプロキシレベルで制限を設けることを検討してください。これらの制限は、有効な `Content-Length` がないリクエストにも適用される必要があります。

可用性の境界として、コンテナまたは cgroup の制限を使用します。可能であれば、影響を受けたワーカーのみを停止するポリシーを使用してください。`RLIMIT_AS` または `RLIMIT_DATA` を使用しないでください。これらは、脆弱なメモリ割り当ての失敗を引き起こす可能性があります。

古いグローバル状態を悪用したリモートコード実行 (CVE-2026-109619):

`session.upload_progress.enabled=0` を設定し、すべてのワーカーを再起動します。`php.ini`、FPM プール、またはリクエストの解析前に適用されるサーバー設定を使用します。`ini_set()` または FPM の `.user.ini` には依存しないでください。これにより、確認されたセッション関連の脆弱性をブロックできますが、他のバリエーションはブロックされません。

PHP 8.5 では、`fatal_error_backtraces=0` を設定し、すべてのワーカーを再起動します。これにより、確認された致命的なエラーのトレースパスのみをブロックできます。

初期化前に診断情報を出力する、リクエストごとに適用される無効または非推奨の設定を削除します。`error_reporting`、`display_errors`、または `@` を使用して診断情報を隠すことは効果がありません。

攻撃者が到達可能な致命的なエラーと実行タイムアウトを修正します。これには、コールバック、アップロードまたはインポート処理、およびクリーンアップにおける失敗が含まれます。

上記の注意書きには、詳細な技術情報が記載されています。