php2shell(CVE-2026-109618 / CVE-2026-109619)の修正版が公開された2日後の2026年10月23日、PHP公式から別の脆弱性CVE-2026-115560の情報提供のアドバイザリが出ました。
「また緊急対応か」と身構えましたが、発生条件を読み解いて担当しているサイトのコードを確かめた結果、緊急の対応は要らないと判断しました。この記事では、その確かめ方と判断の根拠をまとめます。
この記事の内容は2026年10月時点のものです。
php2shellへの対応は、PHPの緊急脆弱性に、Xserver上のWordPressで一晩対応した記録 と PHPを自分で上げられない環境でどう備えたか にまとめています。
この記事の要点
- CVE-2026-115560は、php2shellの修正版(8.2.35、8.3.36など)では直っていない、別の問題
- ただし、特殊な設定とアプリのコードがそろったときだけ起きる。PHP公式も「起こりにくい」としていて、修正は次の定例リリースで行われる
- WordPress本体はPHPのセッション機能を使っていないので、通常は当てはまらない
- 念のため、サーバー上のすべてのPHPファイルを
serialize_handlerで検索し、当てはまるコードがないことを確かめた
脆弱性の概要
セッションのアップロード進捗機能(session.upload_progress)を悪用して、リモートでコードを実行できる可能性がある脆弱性です。
PHP公式によると、次の条件が すべて そろったアプリだけが対象です。
- 設定ファイルで
session.serialize_handlerをphp_binaryかphp_serializeにしている - アプリのコードの中で、
ini_set()を使ってそれをphpに切り替えてからsession_start()を呼んでいる - セッションのアップロード進捗機能が有効になっている(初期設定では有効)
公式の位置づけは次のとおりです。
- 「起こりにくい(unlikely)」攻撃の経路とされている
- 攻撃の報告はない
- 緊急リリースはせず、次の定例リリースで修正し、詳しいアドバイザリもそのときに出す
- 修正までの対策として
session.upload_progress.enabled=0を推奨。php2shellのときにこの設定をすでに入れていれば、追加の対応は要らない
影響の確かめ方の考え方
3つの条件のうち、アプリ側で決まるのは条件2だけです。条件1と3はサーバーの設定なので、共用サーバーやマネージドホスティングでは事業者が管理しています。
条件2を満たすには、コードの中に必ずserialize_handlerという設定の名前が書かれます。そこで、この文字列がコードに1つもなければ、条件2は満たされないと判断できます。
なお、WordPress本体はPHPのセッション機能(session_start())を使っていません。気にする必要があるのは、プラグインやテーマが独自にセッションを使っている場合だけです。
実際の確かめ方
サーバーにSSHで入り、WordPressを置いているフォルダの中のすべてのPHPファイル(本体、テーマ、プラグイン)を検索しました。
cd <WordPressを置いているフォルダ>
grep -rn "serialize_handler" --include='*.php' .
何も表示されなければ、当てはまるコードはありません。担当しているサイトは、どれも何も表示されませんでした。
SSHが使えない環境では、FTPなどでwp-contentフォルダを手元にダウンロードし、手元で同じgrepを実行しても確かめられます。WordPress本体は使っていないので、wp-contentだけで十分です。
環境ごとの判断
| 環境 | 判断 | 根拠 |
|---|---|---|
| PHPで動くWordPress | 影響なし | 当てはまるコードがない。事業者が緩和策を入れたと発表している環境もあった |
| 静的配信型のWordPress(公開サイト) | 対象外 | 閲覧時にPHPを実行しない |
| 静的配信型のWordPress(編集環境) | 事業者に確認 | サーバーの設定は事業者が管理しているので、設定の状況を問い合わせた |
サーバーの設定を自分で見られない環境では、事業者に次の点を問い合わせておくと確実です。
session.serialize_handlerとsession.upload_progress.enabledの設定の状況- 公式が推奨する
session.upload_progress.enabled=0を入れる予定があるか - 次の定例リリースで修正を適用する予定と、適用後の知らせ方
この記事を書いた時点では、問い合わせた事業者からの回答はまだありません。回答が来たら、この記事に追記します。
「明日になったら影響あり」になる可能性
今回の判断は、その時点の情報とコードにもとづくものです。状況が変わりうるのは、主に次の3つの場合です。
| ケース | 可能性 | 備え |
|---|---|---|
| 公式の詳しいアドバイザリで、条件が今より広いと分かる | いちばんありうる | 次の定例リリースで出る内容を確かめる |
| プラグインの追加や更新で、当てはまるコードが入る | 低い | プラグインを入れたら、同じgrepをもう一度実行する |
| ホスティング側がPHPの設定を変える | とても低い | 条件1は初期値ではないので、わざわざ変えるとは考えにくい |
次の定例リリースの日付は、この記事を書いた時点ではまだ公式に発表されていません。PHP 8.5系はここ数か月、ほぼ4週間ごとの木曜日にリリースされているので、11月19日ごろと見込んで、その時期にもう一度確かめる予定です。
振り返り
- 条件を読んでから動く:「リモートでコードを実行」という言葉だけで慌てず、発生条件を分解すると、確かめるべきことは「コードに
serialize_handlerがあるか」の1点に絞れました - 事業者の発表を確かめる:共用サーバーやマネージドホスティングでは、利用者が触れないサーバーの設定を、事業者が先に手当てしていることがあります。ステータスページの更新通知に登録しておくと、続報にすぐ気づけます
- 判断に期限を付ける:今回の「影響なし」は暫定の判断です。詳しいアドバイザリが出たときにもう一度確かめることを、最初から決めておきました
