最終更新:2026年10月22日
2026年10月21日、PHPの開発チームは2件の深刻な脆弱性「php2shell」(CVE-2026-109618、CVE-2026-109619)に対する緊急の修正版を公開しました。認証なしにサーバー上でコードを実行される恐れがあり、欧州では複数の公的機関が修正までの間、Webサイトを一時停止しました。
多くのPHPサイトは数日のうちに修正版へ更新されるはずです。一方で、企業にとって本当に難しいのはその先です。修正版を適用できないシステムや、どのバージョンで動いているのか社内で誰も把握していないシステムは、どうすればよいのでしょうか。
本記事は、PHPで構築したWebサイト、ECサイト、社内システムを運用している企業の経営者やIT担当者の方に向けて、とくに長く使い続けているシステムの見直し方を整理したものです。
修正の難しさはシステムの状態で変わります
修正版が提供されているのは、サポート中のPHP(8.2.35、8.3.36、8.4.27、8.5.12)だけです。そのため、状況は大きく3つに分かれます。
- PHP 8.2以降で動いている場合:修正版に更新すれば対応は完了します。作業は数時間程度で済むことが多く、レンタルサーバーでは事業者が更新を進めています。
- PHP 7.4・8.0・8.1で動いている場合:いずれもサポート終了済みです。今回はPHPの開発チームによるソースコード向けのバックポートや、一部のLinuxディストリビューションの修正パッケージがあります。ただし、次の脆弱性でも同じ対応があるとは限りません。
- PHP 7.3以前で動いている場合:修正は提供されていません。安全に運用を続けるには、バージョンアップが必要です。
注意したいのは、企業の業務システムやECサイトの多くが2つ目と3つ目に当てはまる点です。5〜8年前に構築したシステムが問題なく動いているため手を入れず、気づけば中身を把握している人がいなくなっている、というケースは珍しくありません。
こんな状態なら見直しのタイミングです
次のような状態は、すぐに攻撃を受けることを意味するわけではありません。ただし、php2shellのような脆弱性が見つかったとき、対応に時間と費用がかかる原因になります。
- 稼働中のPHPのバージョンを社内で把握できていない。セキュリティ情報が出ても「自社は影響を受けるのか」に答えられません。
- 構築した担当者や開発会社のサポートが終わっている。ドキュメントがなく、更新の責任者もいない状態です。
- フレームワークやパッケージが古い。Laravel 5系・6系、CakePHP 2系、EC-CUBE 2系・3系、開発が止まったプラグインを多く使うWordPressなどが該当します。PHPを上げるには、フレームワークごと更新する必要があります。
- 複数の担当者が改修を重ねており、自動テストがない。更新のたびに、どこかが動かなくなる不安を抱えています。
- 定期的な保守の予定がない。障害が起きたときだけ確認している状態です。こうした状態には、SLAに基づく保守・運用の体制づくりが有効です。
2つ以上当てはまる場合は、今回の修正だけで終わらせず、システム全体を見直すきっかけにすることをおすすめします。
EC-CUBEを運用している場合
EC-CUBEは国内で広く使われているECパッケージで、系列ごとに動作するPHPのバージョンが異なります。
- EC-CUBE 4.3系:PHP 8.1〜8.3に対応しています。8.2または8.3で運用し、修正版へ更新する形が現実的です。
- EC-CUBE 4.1系・4.2系:対応するPHPがすでにサポート終了となっています。4.3系への移行を計画に入れておくと、今後の脆弱性にも対応しやすくなります。
- EC-CUBE 4.0系以前(2系・3系を含む):古いPHPで動いていることが多く、今回の修正版を適用できない可能性があります。4.0系では過去の脆弱性(CVE-2021-20717)による実被害も報告されており、優先して対応を検討したい系列です。
カスタマイズやプラグインの多いEC-CUBEサイトでは、PHPの更新によって購入フローや管理画面の動作に影響の出ることがあります。本番環境へ反映する前に、検証環境で主要な操作を確認してください。
古いPHPシステムの3つの選択肢
1. 暫定対応でしのぐ
ディストリビューションの修正パッケージを適用する、使っていないアップロード機能を止める、WAFで不審なリクエストを遮断するなど、リスクを下げる対応です。
- 向いているケース:数日以内に手を打つ必要があり、その間に中長期の計画を立てたい場合
- 留意点:根本的な解決にはなりません。サポート終了のPHPで動き続けるため、次の脆弱性でも同じ問題が起こります。
2. 段階的にバージョンアップする
業務ロジックや画面はそのままに、PHPとフレームワークをサポート中のバージョンへ段階的に更新します。
- 向いているケース:システムの機能は業務に合っていて、基盤だけが古くなっている場合
- 留意点:PHP 8系ではPHP 7系から多くの変更があり、廃止された関数や厳格になった型チェック、互換性のないライブラリへの対応が必要です。ソースコードの調査、ライブラリの更新、主要な業務フローの回帰テストを計画的に進めます。期間は既存コードの規模と状態によって大きく変わります。
3. 再構築・プラットフォームを移行する
新しい基盤でシステムを作り直し、あわせて業務の改善も進めます。
- 向いているケース:現行システムが業務に合わなくなっている場合や、改修の費用が作り直しを上回る場合
- 留意点:費用と期間が最も大きく、データ移行や並行稼働の計画が欠かせません。業務システムを段階的に刷新する考え方は、C# / .NET・Javaによる業務システム開発のポイントでも紹介しています。
多くの企業にとって現実的なのは、1と2の組み合わせです。まず暫定対応で目の前のリスクを下げ、その間に数か月単位のバージョンアップ計画を立てる進め方です。外部の開発会社に依頼する場合は、オフショア開発会社の選び方も参考にしてください。
5分でできるセルフチェック
各質問に回答すると、システムのリスクの目安を確認できます。
1. 稼働中のPHPのバージョンを正確に把握していますか?
2. そのバージョンは、セキュリティサポートの期間内(8.2以降)ですか?
3. セキュリティ情報が出たとき、システムを更新する担当者や委託先は決まっていますか?
4. ソースコードはGitなどでバージョン管理されていますか?
5. 本番サーバーとは別の場所に、定期的なバックアップを保管していますか?
6. 基本的な内容だけでも、システムの構成をまとめた資料はありますか?
7. この1年以内に、フレームワークやライブラリを更新しましたか?
7問中0問に回答済み
自社のシステムに当てはまる課題はありますか?
当てはまる項目を選んで送信してください。ARISの技術チームからご連絡し、状況に合った進め方をご提案します。
今週中に対応したいこと
- 稼働中のPHPのバージョンを確認する(確認方法は記事末尾の補足を参照)
- PHP 8.2以降であれば修正版へ更新する。レンタルサーバーの場合は事業者の対応状況を確認する
- すぐに更新できない場合は暫定的な緩和策を適用し、システムの点検日程を決める
- 10月21日〜22日に未更新だったサーバーは、見覚えのないPHPファイル、不審な管理者アカウント、外部への通信の増加がないかを点検する。侵害の疑いがあれば、データベースのパスワードやAPIキーなどの認証情報を変更する
- 10月21日以前のバックアップは上書きせずに保管する
まとめ
php2shellへの対応は数週間で落ち着くはずです。しかし、保守担当者のいない古いPHPシステムは残り続け、次の脆弱性でも同じリスクを抱えることになります。企業にとっての負担は一度の修正作業そのものより、問題が起きるたびに後手で対応せざるを得ない状態にあります。
ARIS VietnamはPHP/Laravelによる業務システムの開発と保守を手がけており、既存システムの調査、PHP 7系から8系への移行、定期保守にも対応しています。現在のシステムについてご相談がある場合は、お問い合わせください。サービスの詳細はソフトウェア開発サービスでご覧いただけます。
補足:技術情報
影響を受けるバージョンと修正版
| PHPのブランチ | 修正版 | 補足 |
|---|---|---|
| 8.5 | 8.5.12 | それより前のバージョンが影響を受けます |
| 8.4 | 8.4.27 | それより前のバージョンが影響を受けます |
| 8.3 | 8.3.36 | それより前のバージョンが影響を受けます |
| 8.2 | 8.2.35 | それより前のバージョンが影響を受けます |
| 7.4・8.0・8.1 | 公式リリースなし | ソースコード向けのバックポートと、AlmaLinux・Ubuntu・Red Hatなど一部ディストリビューションの修正パッケージがあります |
| 5.x〜7.3 | 修正なし | バージョンアップが必要です |
Webリクエストを処理するPHP環境(PHP-FPM、Apacheのmod_php、php-cgi)はすべて対象です。PHP本体の問題のため、WordPress、Laravel、EC-CUBE、独自開発のシステムのいずれも確認が必要で、WordPressやプラグインの更新だけでは解消されません。
レンタルサーバーの対応状況(10月22日時点)
- さくらのレンタルサーバ:コントロールパネルで選択できるすべてのPHPバージョンで対応を完了したと発表しています。
- エックスサーバー:PHP 8.2〜8.5は修正パッチの適用を完了し、それより古いバージョンは順次対応すると案内しています。
最新の状況は各社の公式のお知らせでご確認ください。
稼働中のPHPバージョンの確認方法
- VPS・専用サーバー:
php -vでコマンドライン版、php-fpm -vでWebを処理しているPHP-FPMのバージョンを確認します。両者は異なる場合があります。 - 確実な方法:
<?php phpinfo();と記述したinfo.phpを一時的に設置してブラウザで確認し、確認後すぐに削除します。 - cPanel・Plesk・DirectAdmin:「PHPバージョンの選択」や「PHP設定」の画面で確認できます。
- Docker:イメージのタグを確認し、新しいイメージでコンテナを再ビルドします。
- WordPress:管理画面の「ツール」→「サイトヘルス」→「情報」→「サーバー」で確認できます。
更新できない場合の暫定策
アップロード機能を使わないサイトでは、file_uploads を Off にする方法があります。あわせて、不要な multipart/form-data リクエストをWebサーバーやWAFで遮断し、session.upload_progress.enabled を無効にすることも有効です。いずれもリスクを下げるための一時的な措置で、PHPの開発チームは根本的な対策を更新のみとしています。