速報

FortiWebがPHP2Shell署名を公開|Alert Onlyから遮断へ切り替える手順

CATEGORY

PHP 8.1以下はどう対応する?バックポート確認と8.3以降への移行手順

※本ページのリンクにはプロモーションが含まれています。

PHP 8.1の旧サーバーから検証工程を通りPHP 8.3以降の保護されたサーバーへ移行する概念イラスト

この記事のポイント

脆弱性
CVE-2026-109618
CVE-2026-109619
深刻度

CRITICAL9.2

対象
PHP 8.1 and older
悪用状況
不明
推奨対応
配布元の修正済みパッケージを適用し、PHP 8.3以降への移行期限を設定する。
公表日

目次

PHP 8.1以下を使っている場合、今回のCVE-2026-109618とCVE-2026-109619に対して「同じ系列の最新版へ上げればよい」とは限りません。PHP 8.1は2025年12月31日にEOLを迎え、PHPプロジェクトが公開した修正版はPHP 8.2.35、8.3.36、8.4.27、8.5.12です。一方で、UbuntuなどのOSベンダーが旧系列へ修正をバックポートしている例もあります。

したがって、PHP 8.1以下を一律に「未修正」と判定するのも、php -vに表示される上流版だけを見て「古いから危険」と判定するのも正確ではありません。最初にPHPの入手元を特定し、その配布元が示す修正済みパッケージと照合します。ただし、バックポートは今回の緊急対応であり、EOLになったPHPを使い続ける長期策ではありません。

スポンサーリンク

結論は「今すぐ保護」と「8.3以降への移行」を分ける

現在の状態直ちに行うこと次の判断
PHP公式ビルドや自作ビルドの8.1以下公開面を縮小し、対応版へ更新PHP 8.3または8.4への移行を優先
OSベンダーの旧PHPベンダーのCVEページと修正済みパッケージを確認修正版を適用して再起動後、移行期限を設定
商用LTS・延長保守のPHP契約範囲、対象パッケージ、修正番号を確認保守期限内に対応版へ移行
配布元や保守状況が不明未修正として扱い、外部到達性を下げる追跡可能な公式パッケージへ置き換える

2026年10月時点でPHP 8.2はサポート中ですが、セキュリティサポートは2026年12月31日までです。互換性上どうしても8.2を中継地点にする場合を除き、新しい移行先としてはPHP 8.3または8.4を軸にした方が、短期間で再度メジャー更新する負担を減らせます。PHP 8.5も選択肢ですが、アプリケーションや拡張の対応状況を先に確認します。

「PHP 8.1.2だから未修正」とは限らない

Linuxディストリビューションは、上流の新しい版へ番号を合わせず、必要な修正だけを既存パッケージへ取り込むことがあります。Ubuntuは今回、Ubuntu 22.04 LTSのPHP 8.1を8.1.2-1ubuntu2.28で修正済みとしています。PHPの上流版だけを見ると8.1.2ですが、Ubuntuのパッケージ改訂番号まで含めて判定する必要があります。

Ubuntu 20.04以前についても修正版が案内されていますが、PHP 7.4、7.2、7.0、5.5の更新はUbuntu ProやLegacy Supportの対象を含みます。リポジトリを追加していない環境や契約対象外の環境では、同じOS名でも修正版を受け取れない可能性があります。「修正が公開された」と「自分のサーバーに配信される」を分けて確認してください。

php -v
php --ini
command -v php

apt-cache policy php8.1-cli php8.1-fpm
dpkg-query -W 'php8.1*'

これらはCLI側の所在とパッケージ版を調べる例です。Webサーバーが使うPHP-FPMやApacheモジュールが別の版である場合もあるため、CLIの表示だけで完了にしません。稼働中のFPMプール、コンテナ、cron、キューワーカー、管理画面用PHPも同じ対象として棚卸しします。外部へphpinfo()を公開して確認する方法は、構成情報を漏らすため避けます。

スポンサーリンク

バックポートを確認できない場合は未修正として扱う

配布元が不明なバイナリ、長期間更新されていないコンテナ、非公式リポジトリ、保守契約の切れた製品では、版番号だけから今回の修正有無を証明できません。CVE番号を明記した配布元のアドバイザリ、修正済みパッケージ番号、取得元リポジトリの三点がそろわなければ、暫定的に未修正として扱うのが安全です。

  • PHPを直接インターネットへ公開する経路を減らす
  • 不要なアップロード、管理画面、APIエンドポイントを一時停止する
  • WAFやロードバランサーを経由しない直通経路を閉じる
  • サービス停止が可能なら、移行完了まで公開を止める
  • 脆弱な版が稼働していた期間のログと認証情報の利用を調査する

PHP公式は今回の2件について、完全な緩和策はなく更新が唯一の安全な選択だと説明しています。WAF、要求サイズ制限、ワーカー再起動は被害可能性を下げる補完策であり、修正の代わりにはなりません。例外運用には終了日時と責任者を設定します。

移行は本番切替より前に互換性を洗い出す

旧PHPからの移行で止まりやすいのは、PHP本体よりもComposer依存関係、フレームワーク、拡張モジュール、独自コードです。現在の本番を直接更新するのではなく、同じ設定とデータ条件を再現した検証環境へPHP 8.3または8.4を用意し、差分を先に出します。

composer check-platform-reqs
composer prohibits php 8.3
composer outdated --direct
  • ComposerのPHP制約とロックファイルを確認する
  • 必要な拡張と、各拡張の対応版をそろえる
  • 非推奨警告、型エラー、動的プロパティ、文字列処理の差をテストする
  • ログイン、決済、メール、アップロード、バッチを重点的に試す
  • ステージングで負荷とメモリー上限を確認し、切り戻し手順を作る

composer prohibitsは指定版への移行を阻む依存関係を探す材料です。ただし、Composer管理外の拡張や独自コードまでは保証しません。自動テストが少ないシステムでは、アクセスログから主要経路を抽出し、業務上重要な操作を手順化して回帰試験へ加えます。

スポンサーリンク

切替後は「実際に要求を処理する版」を確認する

パッケージ更新やコンテナのビルド成功は完了条件ではありません。PHP-FPMとWebサーバーを再起動し、新しいプロセスが起動したことを確認します。コンテナ環境では、新しいイメージのダイジェストへPodやリビジョンが切り替わり、古い実体へトラフィックが届かないことまで確認します。

  • Web、CLI、cron、キューワーカーのPHP版を個別に確認する
  • FPM、Apache、コンテナを再起動し、古いプロセスを残さない
  • ロードバランサー配下の全ノードと待機系を確認する
  • 更新前から更新完了までのログを保全する
  • 不審な子プロセス、外向き通信、ワーカー異常、認証情報の利用を調べる

PHP 8.1以下で今回の修正を受け取れた環境でも、それは移行猶予が生まれたという意味です。バックポートの有無を今日確認し、修正版を適用しながら、PHP 8.3以降への移行期限を決める。この二段構えが、緊急対応と将来の保守性を両立させます。

関連記事

出典・一次情報

本記事は以下の公開情報をもとに作成しています。最新の状況は各リンク先で確認してください。

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、これまでに100以上のWordPressサイトの構築・保守を担当してきました。Webサイト制作に加え、アプリ開発やAIを活用した開発にも取り組み、近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
WordPress / PHP / JavaScript / アプリ開発 / Webサイトの運用・セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

あわせて確認したい対策・解説

スポンサーリンク

関連する記事

おすすめの書籍

キーワードから探す