DX PHPの重大脆弱性「php2shell」で見えた、サポート期限切れシステムのリスクと対応パターン

2026年10月21日、PHPに深刻な脆弱性が公表され、国内でも多くのWebサービスが緊急メンテナンスを実施しました。当社が開発・保守しているシステムは、修正版の公開当日の夜のうちに、PHPのバージョン更新だけで対応を終えることができました。一方で、サポートが終了したPHPで動いているシステムでは、PHPの更新だけでは済まず、システム本体の改修が必要になり、対応に苦慮したケースも多かったはずです。今回の出来事をもとに、PHPのサポート期限の考え方と、脆弱性が発表されたときの対応パターンを整理します。

「php2shell」とはどのような脆弱性だったのか

「php2shell」は、PHP本体に見つかった2件の脆弱性(CVE-2026-109618、CVE-2026-109619)の通称です。深刻度は国際的な評価基準で10点満点中9.2とされ、条件がそろうと、ログインなどの認証なしに外部からサーバー上で任意のプログラムを実行されるおそれがあります。WordPressやLaravelといった、ごく一般的な構成で影響を受けることも報告されました。

PHPの開発チームは、日本時間の10月21日夜に修正版(8.5.12、8.4.27、8.3.36、8.2.35)を公開しました。ここで重要なのは、公式の修正版が提供されたのは、サポート期間内のバージョンだけだという点です。

PHPには「サポート期限」がある

PHPは毎年新しいバージョンが公開され、それぞれに決まったサポート期間があります。リリースから2年間は不具合とセキュリティの両方が修正され、その後の2年間はセキュリティ上の重大な問題のみが修正されます。合計4年を過ぎるとサポート終了(EOL)となり、その後に脆弱性が見つかっても、公式の修正は提供されません。

2026年10月時点のサポート状況は次のとおりです。

  • PHP 8.2:2026年12月31日まで(残り約2か月)
  • PHP 8.3:2027年12月31日まで
  • PHP 8.4:2028年12月31日まで
  • PHP 8.5:2029年12月31日まで

PHP 8.1以前はすでにサポートが終了しています(8.1は2025年末、7.4は2022年11月に終了)。

厄介なのは、サポートが切れてもシステム自体は普段どおり動き続けることです。そのため、期限切れに気づかないまま何年も運用され、今回のような重大な脆弱性が見つかったときに初めて問題が表面化します。

脆弱性が発表されたときの対応パターン

対応の大変さは、システムがどの状態にあるかで大きく変わります。

パターン1:サポート期間内のPHPで動いている
同じバージョン系列の修正版へ更新するだけで対応できます(例:8.3系なら8.3.36へ)。プログラムの書き方に影響する変更はほぼないため、作業は更新と動作確認が中心で、数時間で終わることも珍しくありません。

パターン2:サポート切れだが、新しいPHPへ移行できる
サポート期間内のPHPへ上げる必要がありますが、古いバージョンから新しいバージョンへ一気に上げると、プログラムの書き方の違いによってエラーが出る箇所が多く見つかります。特にPHP 7系から8系への移行は変更点が多く、あわせてLaravelなどのフレームワークや各種ライブラリも更新しなければならないことがほとんどです。改修とテストに数日から数週間かかることもあり、緊急時に短期間でこれを行うのは大きな負担です。

パターン3:すぐには改修できない
改修が間に合わない場合は、暫定的な措置で被害を防ぐことになります。OSの提供元や有償の延長サポートが用意する修正パッケージを適用する、WAF(Webアプリケーションファイアウォール)やアクセス制限で外部から接続できる範囲を絞る、場合によってはシステムを一時停止する、といった方法です。ただし、いずれも根本的な解決ではなく、時間を稼ぐための手段にすぎません。

パターン4:レンタルサーバーやクラウドサービス上で動いている
PHPの更新を事業者が行うのか、自社で設定を切り替える必要があるのかを確認します。事業者側でPHPが更新されても、システムが古いバージョンにしか対応していなければ、結局パターン2と同じ改修が必要になります。

長く手を入れていないシステムほど危ない

導入時には最新のPHPで作られたシステムでも、4年経てばサポートが切れます。保守契約がなく、開発会社とのやり取りも途絶え、社内にも詳しい担当者がいない――。こうした「長い間止まっていたシステム」ほど、何のバージョンで動いているのかを把握することすら難しく、いざというときの対応に時間がかかります。今回、最も苦労したのはこうしたシステムだったと考えられます。

平時にやっておきたいこと

重大な脆弱性は、いつ発表されるか予測できません。慌てないために、普段から次のような準備をしておくことをおすすめします。

  • 自社システムが使っているPHPとフレームワークのバージョン、サポート期限を一覧にしておく
  • サポート終了の1年ほど前を目安に、バージョンアップの計画と予算を確保する
  • 保守契約に「緊急の脆弱性対応」や「定期的なバージョンアップ」が含まれているか確認する
  • PHP 8.2を使っている場合は、年内のサポート終了に向けて移行計画を立てる

まとめ

今回の「php2shell」では、サポート期間内のPHPを使い続けていたシステムは更新作業だけで対応でき、サポート切れのシステムは本体の改修という大きな負担を背負うことになりました。差を分けたのは、技術力よりも「日頃からバージョンを最新に保っていたかどうか」です。システムは作って終わりではなく、使い続けるための手入れが必要です。自社のシステムがどの状態にあるか分からない場合は、まず現状の把握から始めてみてください。

自社システムのバージョン確認・保守体制のご相談はこちら