2026年10月21日(協定世界時)、PHPの開発元は緊急の脆弱性2件を修正した版を公開しました。版は PHP 8.5.12、8.4.27、8.3.36、8.2.35 です。ログインしていない相手からのリクエストで、遠隔からコードを実行され得る、という内容です。公式は、すべてのPHP利用者に直ちに更新するよう強く勧めています。
この記事では、何が危ないのか、自分のサイトがどの版で動いているかの見方、すぐ更新できないときの一時措置の限界を、PHP公式の案内の範囲で整理します。アプリの画面やログインを直す話ではありません。再現の手順は書きません。
何が起きたのか
脆弱性は2件です。番号は CVE-2026-109618 と CVE-2026-109619 です。1件目は、メモリが足りなくなったときの処理で、リクエストの内部データが途中までしか用意されていないのに、終了処理がそれを正常なデータとして扱ってしまう、という問題です。2件目は、リクエストが使っていたメモリを解放したあとも内部の状態が残り、同じプロセスが次のリクエストで、初期化される前にその状態を使ってしまう、という問題です。
公式は、Webのリクエストを受けるPHPを対象としています。PHP-FPM、Apacheのモジュール版(mod_php)、php-cgi、FrankenPHP、LiteSpeedが含まれます。危険度が最も高いのは mod_php で、アプリケーションのコードが動く前に、認証のないリクエストで攻撃が成立する例が示された、と書かれています。事前の予告では、いずれも CVSS v4.0 で 9.2 とされていました。
どの版へ上げるか
今すぐ合わせる版は、使っている系統の修正版です。8.5なら 8.5.12、8.4なら 8.4.27、8.3なら 8.3.36、8.2なら 8.2.35 です。8.2は2026年12月31日でサポートが終わり、その後はセキュリティ修正が出ません。8.2.35に上げたあとも、次の系統への移行を予定に入れます。
PHP 8.1以前は、PHPプロジェクト本体からの更新が止まっています。Linuxの配布元や、長期サポートの事業者が修正を戻している場合があるので、そこを確認するか、サポート中の版へ移します。深刻さを踏まえ、7.4、8.0、8.1向けには、ソースから組む人向けの最小限の修正も公開されています。公式は、それも更新の代わりにはしない、という立場です。
ボランティアが維持する rpms.remirepo.net は、公開当日の更新がない、と案内されています。配布パッケージか、ソースからのビルドへ切り替えるよう促しています。Windowsのバイナリは、PHPのダウンロードページに置かれています。
先に見る場所
バージョンは、サーバーに入れるなら php -v です。Webから見るなら、応答ヘッダの X-Powered-By に版が出ることがあります。出ていなくても、動いていないという意味ではありません。表示を消しているだけのことがあります。ホスティングを使っている場合は、自分でPHPを入れ替えられないことが多く、事業者のメンテナンス告知が一次情報になります。コントロールパネルの表示と、公開ページが実際に使っている版が違うこともあるので、応答に出る版も合わせて見ます。
コンテナで動かしている場合は、アプリのコードではなく、イメージの中のPHPを差し替えます。修正版のイメージを取り直し、コンテナを作り直してから、もう一度バージョンを見ます。タグが古い版のままのときは、修正版の番号を指定して取り直します。
LaravelやWordPressのように、アプリが動くPHPの範囲が決まっていることがあります。新しい系統へ上げる前に、そのアプリが公式に対応している版かを見ます。対応していない系統へ飛ばすと、脆弱性とは別の不具合でサイトが止まります。対応している範囲のなかで、修正が入った版を選びます。
更新のあとには、PHP-FPMやWebサーバーのワーカーを再起動します。ファイルを置いただけでは、動いているプロセスが古い版のまま残ります。再起動後に、もう一度バージョンを見ます。確認の順番は次のとおりです。
- いまの版と、FPMかApacheモジュールかを確認する
- 8.2から8.5なら、その系統の修正版へ上げる
- 8.1以前なら、配布元の修正か、サポート中の版への移行を選ぶ
- アプリが対応しているPHPの範囲を先に見る
- ワーカーを再起動し、版が変わったことを確認する
すぐ更新できないときの限界
公式は、完全な対策は更新だけと説明したうえで、すぐ上げられない場合の一時措置も書いています。メモリ上限を外す、POSTのサイズを抑える、セッションのアップロード進捗を止める、といった設定です。これらは特定の経路への出方を減らすもので、その状態が安全になる、という意味ではありません。ini_set() や、リクエストのあとで読む設定では間に合わない、とも書かれています。設定でしのいでいる間も、更新の予定を先に切ります。
アプリのコードを直しても、この問題はふさがりません。モジュール版では、アプリが動く前に届く、と公式が説明しています。ログイン画面やWAFも、PHPがその前段で処理する構成では頼りになりません。詳細な設定名は、PHP公式のセキュリティアドバイザリを見てください。
まとめ
2026年10月21日に公開された修正版へ上げることが、公式の唯一の安全な対応です。8.5.12、8.4.27、8.3.36、8.2.35 が、それぞれの系統の版です。8.1以前は本体の更新が終わっているので、配布元を確認するか、サポート中の版へ移します。一時的な設定は、更新までの時間を短くするためのもので、残したままにするものではありません。
一次情報は PHP 公式のセキュリティアドバイザリです。国内では、更新までのあいだサービスを止めた事業者や、レンタルサーバーの緊急メンテナンスが報道されています。自社のサイトは、報道の一覧ではなく、自分のPHPの版で判断します。
Makoto Tejimaでは、公開サイトや業務システムのPHPの版、動かしている方式、アプリが対応できる範囲を見て、更新の段取りを一緒に整理しています。ご相談ください。