PHP 修正確認レシート

その PHP、
本当に直っている?

サーバの中で確認

PHP の php2shell(CVE-2026-109618 / CVE-2026-109619、2026-10-21 修正公開)は、修正版に上げたつもりでも版数だけでは「直ったか」が分かりません。ディストリのパッケージは修正を当てても版数を変えない(Ubuntu 24.04 の 8.3.6 のまま)、FPM や Apache を再起動しないと古い PHP が動き続ける、別のプールに別の PHP が残っている。この 1 ファイルを置いて開くと、その場の PHP について実行形態・版数・パッケージ changelog の CVE 記載・更新後に再起動済みか・関連する設定値を 1 枚のレシートにします。

使い方(3 分)

  1. phpcheck.php をダウンロード(PHP 1 ファイル・約 24KB・PHP 5.4 以降で動きます)
  2. 点検したいサイトの PHP が動く場所(公開ディレクトリ)に置く。FTP でも、WordPress ならテーマのフォルダでも構いません。
  3. ブラウザで開く(例 https://example.jp/phpcheck.php)。レシートが出ます。表示した時点でファイルは自分を削除します(削除できない環境では手で消してください。版数と設定が誰にでも見える状態で置いておかないためです)。
  4. コマンドラインでも動きます(php phpcheck.php・この場合は削除しません)。ただし CLI の PHP と Web の PHP は別のことがあるので、本番の判定はブラウザから開いてください。

何を見て、何と言うか

  • 版数: 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 以上なら「修正版以上」。それより前でも、ディストリのバックポートなら版数は変わらないので断定しません。8.1 / 8.0 / 7.4 は公式の修正リリースが無く、ベンダのバックポートが要ります。7.3 以前は修正がありません。
  • パッケージ changelog: Debian / Ubuntu 系なら /usr/share/doc/php8.x-common/changelog.Debian.gz に CVE-2026-109618 の記載があるかを読みます(読める場合)。RHEL 系や読めない環境には、管理者権限で打つコマンドをレシートに出します。
  • 再起動: Linux なら、このプロセスの起動時刻と PHP 本体(php-fpm / libphp)の更新時刻を比べ、更新後に再起動していなければそう言います。
  • 実行形態: Apache mod_php(最も危険とされる形態)、PHP-FPM、CGI/FastCGI、LiteSpeed などを見分け、再起動の対象を示します。
  • 設定値: session.upload_progress.enabled・memory_limit(緩和策で触った値。更新後に戻す)・expose_php(Off を推奨)・opcache.enable・display_errors。
  • 総合は 3 段: 「修正が当たっている根拠があります」「確認が必要です」「修正が当たっている根拠がありません/再起動がまだです/修正がありません」。

版数と設定の確認です。侵害の有無や安全を判定するものではありません。 このファイルは通信も書き込み(自分自身の削除以外)もコマンド実行もせず、入力も受け取りません。レンタルサーバやマネージド環境では提供元が配る PHP の版数が出るので、適用状況は提供元の告知でも確認してください。

出典

php.net Security advisory(2026-10-21) / IPA 注意喚起(2026-10-22) / Sansec: 版数だけでは判断できない理由と changelog の確認コマンド。 外からの確認は ShipCheck の外形チェック に「PHP 版数の露出」を 1 項目足しました(応答ヘッダに版数が見えるか。見えること自体を隠すのが推奨)。