
3件目の脆弱性は特定の設定で発生
PHPで、ウェブサイトの乗っ取りやマルウェアの遠隔実行につながる可能性がある3件目の脆弱性「CVE-2026-115560」が見つかりました。PHP Foundationは、発生に必要な設定の組み合わせは実用環境では極めてまれだとして、緊急修正を見送り、次回の通常リリースで修正版と詳しい勧告を公開する方針です。
この脆弱性が成立するには、アプリケーションでセッションのシリアライズ方式をphp_binaryまたはphp_serializeに設定したうえで、session_start()を呼び出す前にini_set()でphpへ切り替える必要があります。さらに、セッションのアップロード進捗機能が有効であることも条件です。
PHP Foundationのエグゼクティブディレクター、Elizabeth Barron氏は、こうした条件が実際のPHP利用で重なるとは想定していないと説明しました。PHP Security Teamは情報提供を目的とする勧告を公開し、次回の通常のバグ修正リリースまでsession.upload_progress.enabled=0にするよう案内しています。
セッション方式の切り替えが攻撃条件に含まれる理由
PHPのセッションは、ウェブサイトへのアクセスをまたいでデータを保持する仕組みです。セッションIDで利用者を識別し、リクエスト終了時に$_SESSIONの値をシリアライズして保存し、次のアクセスで復元します。
シリアライズ方式はsession.serialize_handlerで選びます。phpとphp_binaryはPHP独自の形式で、php_serializeは内部でPHPのserialize()とunserialize()を使います。既定の方式はphpです。
php方式では、セッションの最上位キーに数値を使えず、|を含む文字列キーも使えません。php_serializeにはこの制約がなく、数値キーや|を含むキーを最上位に置けます。3件目の脆弱性では、この方式の設定と実行時の切り替え、アップロード進捗機能の有効化が同時に成立することが条件です。
設定を無効にすると進捗情報が記録されない
session.upload_progress.enabledは、アップロード中のファイルの進み具合をPHPが追跡する機能を切り替えます。有効にすると、受信済みバイト数や処理状況などが$_SESSIONに保存され、別のリクエストから進捗を確認できます。
この設定を無効にすると、機能が記録する進捗情報を表示に使えなくなります。アップロード中に別のエンドポイントへリクエストを送り、進捗を確認する使い方もあります。
進捗データの記録には、アップロードリクエストに所定のPOST変数が含まれることも必要です。記録の更新頻度は設定で調整できます。
先行する2件は修正版への更新を推奨
今回の脆弱性とは別に、PHPではメモリ処理に関する2件の深刻なRCE脆弱性(CVE-2026-109618、CVE-2026-109619)が公開され、修正版が提供されました。対象バージョンはPHP 8.5.12、8.4.27、8.3.36、8.2.35で、PHPはウェブリクエストを処理するすべてのインストールに更新を勧めています。
PHP Foundationは2件について、金曜日の時点で公開後の攻撃成功を示す証拠は得ていないと述べました。一方、複数の研究者は攻撃の試みを記録しており、MandiantのCTO、Charles Carmakal氏は、限定的な攻撃が始まっている可能性と脅威の深刻さを指摘しました。
PHPの実行方式には、Apacheのプロセス内で動くmod_phpと、ウェブサーバーからリクエストを受け取る独立したワーカープールで動くPHP-FPMがあります。PHPの勧告は、実証された攻撃経路に対するリスクが最も高い構成としてmod_phpを挙げていますが、PHP-FPM、php-cgi、FrankenPHP、LiteSpeedも影響対象に含めています。










