CVE-2026-115560 は、2026年10月23日に PHP セキュリティチームが公表した、特殊な設定で遠隔コード実行(RCE)につながりうる新しい脆弱性です。先に修正された php2shell(CVE-2026-109618・109619)とは別の脆弱性で、修正パッチはまだ出ておらず、PHP は次回の定期更新で直す方針です。やっかいなのは、php2shell を修正した版(8.5.12 など)に上げても、この CVE-2026-115560 は残る点です。一方で発動には通常とは異なる設定とアプリのコードの組み合わせが要るため条件は狭く、何より暫定の緩和策があります。すぐに更新できないときの考え方はWAFによる仮想パッチにもまとめていますが、今回は PHP 自身が設定1つでの緩和を案内しています。この記事は、何が起きたか・発動の3条件・php2shell との違い・いますぐの緩和と確かめ方を、報道の一次整理と実機点検で整理します。依存する実行環境の脆弱性への備えはサプライチェーン攻撃とは|手口・防御ツール比較・npm 12の新機構まで実践解説も参考にしてください。

CVE-2026-115560何が起きたか

php2shell とは別の、未修正の PHP RCE

  1. 10/21

    php2shell の修正版が公開

    CVE-2026-109618・109619(8.5.12 ほか)

  2. 10/23

    別の RCE を公表(未修正)

    CVE-2026-115560。修正版 8.5.12 でも影響

  3. 緩和

    upload_progress を無効化

    session.upload_progress.enabled=0 を暫定で案内

  4. 修正

    次回の定期更新で修正予定

    影響版・深刻度はまだ未公表

  5. 現状

    115560 の実環境悪用は確認なし

    発動に狭い条件が必要

出典: PHP の暫定案内の報道(bleepingcomputer・lilting.ch ほか・2026-10-24 確認)

30秒でわかる

  • ・何が:php2shell とは別の未修正 PHP RCE(CVE-2026-115560)。修正版 8.5.12 でも影響
  • ・いつ危ない:3条件すべて(serialize_handler の切り替え+upload_progress 有効)が揃うときだけ。条件は狭い
  • ・いますぐ:session.upload_progress.enabled=0 にして全ワーカー再起動。php2shell で設定済みなら追加対応は不要
  • ・修正:次回の定期更新で。実環境の悪用は現時点で確認なし

まずやること

・session.upload_progress.enabled=0 を php.ini・PHP-FPM のプール・Apache の設定で入れ、全ワーカーを再起動する
・php2shell(CVE-2026-109619)対策で既に 0 にしているなら、追加対応は不要
・アプリが ini_set('session.serialize_handler', 'php') をしていないか探す(していなければこの経路の心配は薄い)

CVE-2026-115560 とは:php2shell とは別の、未修正の PHP RCE

10月21日に修正された php2shell(CVE-2026-109618・109619)は、未認証で到達しうる RCE で、修正版へ上げれば直りました。今回の CVE-2026-115560 は、それとは別の脆弱性です。PHP は、特殊な設定で RCE につながりうるとして10月23日に公表し、修正パッチはまだ出ていません。影響を受けるバージョンや深刻度スコアはまだ公表されておらず、完全な勧告は次回のリリースと一緒に出る見込みです。

重要なのは、php2shell を修正した版(8.5.12 など)でも、この CVE-2026-115560 は影響するという点です。「10月21日の更新で直ったはず」と考えて更新を済ませた環境でも、別途の対応が必要になります。PHP が 115560 と php2shell(CVE-2026-109619)で根本原因を共有するかどうかは、現時点では明らかにしていません。

発動に必要な3つの条件(なぜ「狭い」のか)

この脆弱性が怖い経路になるのは、次の3つがすべて揃ったときだけです。ひとつでも欠ければ、この経路では影響しません。

ALL THREE NEEDED発動の前提

3つがすべて揃うと影響する

  1. 1.config の serialize_handler が php_binary/php_serialize

    既定の php では該当しない

  2. 2.アプリが ini_set で php に切り替える

    session_start() を呼ぶ前に

  3. 3.session.upload_progress が有効

    既定で ON

出典: lilting.ch・safeguard.sh ほか(2026-10-24 確認)。どれか欠ければ、この経路では影響しない

・設定で session.serialize_handler が php_binary か php_serialize になっている(既定の php では該当しません)
・アプリが実行時に ini_set() でそれを php に切り替え、その後 session_start() を呼ぶ
・session.upload_progress が有効(既定で ON)

この「設定を特殊な値にしておき、アプリ側で実行時に切り替える」という組み合わせは、通常の構成ではあまり見られません。PHP が悪用に『通常とは異なる設定とアプリケーションコードの組み合わせが必要』としているのはこのためで、だから条件は狭く、現時点で実際の悪用も報告されていません。

とはいえ、3つのうち「upload_progress が有効」は既定で ON なので、実質は残り2つ、とくに「アプリが実行時に serialize_handler を php に切り替えているか」が分かれ目になります。古いコードや、セッションの保存形式を途中で変える処理を持つアプリでは、知らずに当てはまっていることがあります。自分のアプリがこの組み合わせに該当しないかは、後述の検知で確かめておく価値があります。なお、攻撃の具体的な手順やコードはここでは扱いません。防御に必要なのは、前提条件を知って自分の露出を見極め、緩和を入れることです。

php2shell との違い(修正版でも影響する)

同じ session.upload_progress が関わるため混同しやすいので、php2shell との違いを整理します。

TWO PHP RCESphp2shell との違い

別の CVE。片方は修正済み、115560 は未修正

php2shell

CVE-2026-109618・109619

  • 修正済み(8.5.12 ほか)
  • 未認証で到達しうる
  • 更新で直る

CVE-2026-115560

別の CVE

  • 未修正(次回更新で修正予定)
  • 修正版 8.5.12 でも影響
  • 発動に3条件が必要で狭い
出典: 報道(2026-10-24 確認)。同じ緩和 session.upload_progress.enabled=0 が両方に効く
観点 php2shell(109618・109619) CVE-2026-115560
修正の状況 修正済み(8.5.12 ほか) 未修正(次回更新で修正予定)
修正版での影響 更新すれば解消 修正版 8.5.12 でも残る
到達のしやすさ 未認証で到達しうる 3条件が必要で狭い
同じ緩和が効くか upload_progress.enabled=0 が有効 upload_progress.enabled=0 が有効

ポイントは、両方に同じ緩和(session.upload_progress.enabled=0)が効くこと。だから php2shell 対応でこの設定を 0 にしていれば、115560 のためにあらためて何かをする必要はありません。逆に、php2shell では更新だけで済ませて緩和設定を入れていない場合は、今回この設定が必要になります。

いますぐやる緩和と、自分が影響するか確かめる

GOTCHAS勘違いしやすい点

修正版でも影響。だが今すぐ緩和できる

こう思いがち

実際は

こう思いがち: 8.5.12 に上げたから安全

実際は: 115560 は修正版でも影響。別途の緩和が要る

こう思いがち: パッチが出るまで打つ手なし

実際は: upload_progress=0 で今すぐ塞げる(全ワーカー再起動)

こう思いがち: php2shell 対応とは別に何か要る

実際は: php2shell で upload_progress=0 済みなら追加対応は不要

出典: PHP の暫定案内の報道(2026-10-24 確認)

緩和は設定1つです。session.upload_progress.enabled=0 を、php.ini・PHP-FPM のプール・Apache の設定で入れ、すべてのワーカーを再起動します。ホスト・コンテナイメージ・FPM プールごとに確認してください。アップロードの進捗バーを使っているアプリは、この設定で動かなくなる点に注意します。自分の環境の状態と、危ない書き方をしていないかは、次で確かめられます。

# この環境の設定(upload_progress が ON か、serialize_handler は何か)
php -r 'echo "upload_progress=", ini_get("session.upload_progress.enabled"), " / handler=", ini_get("session.serialize_handler"), "\n";'

# アプリが実行時に serialize_handler を php に切り替えていないか探す
grep -rnE "ini_set\(['\"]session\.serialize_handler['\"]" . 2>/dev/null

これは判定ではなく構成の確認で、この結果だけでは安全とは言えません。フレームワークやライブラリが内部でハンドラを切り替えている場合までは、この2つでは拾い切れないからです。確実な対策は、緩和を入れたうえで、修正版が出たら各環境を更新することです。

当サイトで確かめたこと(2026-10-24)

この記事を書いた環境の PHP は 8.3.6 でした。php -r で既定値を見ると、session.upload_progress.enabled は 1(ON)で、緩和にはこれを明示的に 0 にする必要があると分かります。一方 session.serialize_handler は既定で phpで、発動条件の1つ「config が php_binary か php_serialize」は既定では満たされません。これが「条件が狭い」と言われる理由です。掲載した検知 grep は、ini_set('session.serialize_handler', 'php') を含むファイル(陽性)で該当行を検出・終了コード0、含まないファイル(陰性)で検出なし・終了コード1になることを確認しました。脆弱性を発動させる操作は一切行っていません。

影響範囲とこれから

影響範囲について公式に示されているのは、特殊な設定とアプリのコードの組み合わせで RCE につながりうること、修正版 8.5.12 を含む環境でも影響すること、修正は次回の定期更新の予定であることです。影響を受けるバージョンの一覧や深刻度スコアは、2026年10月24日時点ではまだ公表されていません。115560 の実環境での悪用は、現時点で報告されていません。

関連して、修正済みの php2shell(CVE-2026-109618・109619)には、公開前から攻撃の試みがあったと報告されています。ある観測では公開の数日前から試行が見られ、複数の攻撃者の関与が示唆される一方、侵害を確認していないとする説明もあります。つまり「条件が狭い・まだ悪用がない」ことは油断の理由にはならず、緩和を入れて修正版を待つのが堅実です。とくに未修正の脆弱性は、完全な勧告や影響版の一覧が後から出てくることが多いので、続報を追いながら、まず手元で打てる緩和を先に入れておくのが安全です。更新できない間に時間を稼ぐ考え方はWAFによる仮想パッチに、php2shell そのものの詳しい対応はPHP の脆弱性 php2shell の記事にまとめています。

参照ソース

・PHP shares mitigation for new and unpatched RCE vulnerability(BleepingComputer) — 公表内容・暫定緩和・発動条件(2026-10-24 確認)
・PHP CVE-2026-115560 only hits apps that switch serialize_handler to php at runtime(lilting.ch) — 発動の3条件の整理と独立検証
・PHP CVE-2026-115560: unpatched session upload progress RCE explained(safeguard.sh) — 緩和手順と修正版での影響
・PHP の脆弱性 php2shell(CVE-2026-109618・109619)の記事(当サイト) — 同じ緩和が関わる別の PHP RCE