PHPの脆弱性CVE-2026-115560とは?10月21日の更新のあとも要る設定と、自分が当てはまるかの確かめ方

PHPの脆弱性CVE-2026-115560を説明する記事のアイキャッチ。PHPの開発チームが2026年10月23日に告知。10月21日の更新では直らず8.5.12・8.4.27・8.3.36・8.2.35は別の2件を直す、修正は次の定期のバグ修正リリースで出る予定、修正が出るまでsession.upload_progress.enabled = 0でアップロード進捗の機能を切る、当てはまるのは実行中にシリアライズのハンドラーを切り替えるアプリなど3つがそろうとき、10月21日にこの設定をしていればこの件でほかにやることはない、の5つを示す図

PHPの開発チームは2026年10月23日、セッションのアップロード進捗の機能(Session Upload Progress)にかかわる脆弱性 CVE-2026-115560 を告知しました。悪用されるとリモートでコードを実行されるおそれがありますが、起きるのは、設定とアプリのコードがめずらしい組み合わせになっているときだけです。修正は次の定期のバグ修正リリースで出る予定で、それまでは、次の設定でアップロード進捗の機能を切るよう勧めています。

session.upload_progress.enabled = 0

10月21日に PHP を 8.5.12・8.4.27・8.3.36・8.2.35 に更新したサイトでも、この脆弱性はまだ直っていません。この設定は、10月21日の重大な脆弱性(CVE-2026-109619)の回避策としてすでに案内されていたものです。10月21日にこの設定をしていれば、そのまま続けるだけでよく、この件でほかにやることはありません。

目次

結論:いま押さえること

  • CVE-2026-115560 は、セッションのアップロード進捗の機能にかかわる脆弱性です。PHPの開発チームは、この組み合わせは実際にはめずらしいとしています。
  • 当てはまるのは、設定でセッションのデータの形式(シリアライズのハンドラー)を php_binary か php_serialize にしたうえで、アプリが実行中に ini_set() で php に切り替え、そのあと session_start() を呼んでいて、アップロード進捗の機能も有効なままの場合です。
  • 実行中にシリアライズのハンドラーを変えないアプリなら、アップロード進捗の機能は有効のままでかまいません。
  • 修正は次の定期のバグ修正リリースで出る予定です。それまでは、アップロード進捗の機能を切っておきます。
  • 10月21日に出た 8.5.12・8.4.27・8.3.36・8.2.35 への更新は、別の2件の重大な脆弱性を直すものなので、まだなら先に済ませます。
  • 2026年10月24日9時53分(日本時間)時点の php.net の内容です。

CVE-2026-115560とは

PHPのセッションには、ファイルのアップロード中に進み具合を $_SESSION に書き込む機能があります。この機能を使う設定が有効で、さらにセッションのデータの形式(シリアライズのハンドラー)を実行中に切り替えるアプリでは、リモートでコードを実行される道筋がありうる、というのが今回の告知の内容です。

日付(2026年) できごと
10月21日 PHP 8.5.12・8.4.27・8.3.36・8.2.35 が出て、重大な脆弱性2件(CVE-2026-109618・CVE-2026-109619)が直る。CVE-2026-109619 の回避策の1つとして、アップロード進捗の機能を切る設定が案内される
10月23日 PHPの開発チームが CVE-2026-115560 を告知し、アップロード進捗の機能を切るよう勧める
次の定期のバグ修正リリース 修正と、CVE-2026-115560 の詳しい勧告が出る予定

CVE.org では、CVE-2026-115560 は番号が予約された状態です。

自分のPHPが当てはまるか

シリアライズのハンドラーは、session.serialize_handler という設定で決まります。php.net の告知では、次の3つがすべてそろったときだけ起きるとされています。

  • 設定(php.ini など)でシリアライズのハンドラーを php_binary か php_serialize にしている
  • アプリが実行中に ini_set() でシリアライズのハンドラーを php に切り替え、そのあと session_start() を呼んでいる
  • アップロード進捗の機能が有効のまま(設定を変えていなければ有効)

PHPのマニュアルでは、session.serialize_handler の既定は php、アップロード進捗の機能は既定で有効です。シリアライズのハンドラーを既定の php のまま使っていて、実行中に変えていないアプリなら、この組み合わせには当てはまりません。

バージョンと設定の確かめ方

サーバーにログインできるときは、PHPのバージョンを次のコマンドで確かめます。

php -v

2つの設定の値は、次のコマンドで確かめられます。

php -i | grep session.upload_progress.enabled
php -i | grep session.serialize_handler

PHPのマニュアルでは、PHPは動かし方(コマンドラインやWebサーバーなど)ごとに読む設定ファイルを分けられるとされています。そのため、コマンドラインのPHPは、Webサーバーで動くPHPと別の php.ini を読んでいることがあります。コマンドラインのPHPが読み込んでいる設定ファイルは、次のコマンドで確かめられます。

php --ini

Webサーバー側の設定(php.ini やPHP-FPMのプール、Webサーバーの設定)も確かめます。

いまできる対策

修正が出るまでは、アップロード進捗の機能を切ります。10月21日の php.net の告知では、次のように設定するよう案内されています。

  • php.ini、PHP-FPMのプール、Webサーバーの設定など、リクエストを読む前に効く場所で設定する
  • ini_set() や PHP-FPMの .user.ini には頼らない
  • 設定したら、すべてのワーカーを再起動する
session.upload_progress.enabled = 0

この設定にすると、アップロードの進み具合をセッションで追う機能は使えなくなります。CVE-2026-109619 の勧告(GHSA-6wmf-4rv5-p3rp)も、この機能が要らないなら、修正を当てたあとも切っておくのが賢明かもしれない、としています。

レンタルサーバーなどで php.ini を自分で変えられないときは、php.ini やPHP-FPMのプールなど、リクエストを読む前に効く場所でこの設定ができるかを、サーバー会社に確かめます。

10月21日の更新との関係

10月21日の PHP 8.5.12・8.4.27・8.3.36・8.2.35 は、CVE-2026-109618 と CVE-2026-109619 の2件を直す更新です。CVE-2026-115560 の修正は、これとは別に次の定期のバグ修正リリースで出る予定です。10月21日の更新をまだしていないなら、先に更新します。自分のPHPのバージョンの確かめ方と、10月21日の2件の対策は、PHPに重大な脆弱性2件、修正バージョン8.5.12・8.4.27・8.3.36・8.2.35が公開にあります。

PHP 8.1 とそれより前のバージョンは、PHPの開発チームからの更新の対象外です。ディストリビューションなどの提供元が修正を出していることがあるので、提供元に確かめるか、サポート中のバージョンに上げます。

よくある質問

10月21日にアップロード進捗の機能を切った。ほかにやることは?

この件では、ありません。php.net は、10月21日にこの設定をした人は、そのまま続ければほかの作業は要らないとしています。php.ini などに設定してワーカーを再起動したかは、念のため確かめます。10月21日の更新をまだしていないなら、それは別に必要です。

PHPをもう一度更新すれば直る?

いまはまだ、更新では直りません。CVE-2026-115560 の修正は、次の定期のバグ修正リリースで出る予定です。修正が出るまでは、アップロード進捗の機能を切って防ぎます。

WordPressのサイトも対象?

当てはまるかどうかは、WordPressかどうかではなく、PHPの設定と、使っているテーマ・プラグインなどのコードが上の3つの条件にそろうかで決まります。迷うときは、修正が出るまでアップロード進捗の機能を切っておくのが、php.net の勧めに沿った対策です。

公式の発表

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

社内エンジニアとして、SREとセキュリティの仕事をしています。サーバーの構築や運用、クラウド環境の設計にも関わってきました。趣味はゲームと漫画・アニメ。

コメント

コメントする

目次