2026年10月、PHP に「PHP2Shell」と呼ばれる重大な脆弱性が公表されました。このブログも PHP で動いている WordPress なので、すぐに対応しました。この記事では、何が起きていて、何をしたのかを順番にまとめます。
どんな脆弱性だったのか
PHP2Shell は、PHP 本体にある2つの脆弱性(CVE-2026-109618 / CVE-2026-109619)の通称です。
- ログインしていない外部の人が、サーバー上で好きなプログラムを動かせてしまう可能性がある
- 深刻度は CVSS 9.2(10点満点中)
- 修正版は PHP 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12
- 公表の直後から、この脆弱性を狙った通信が観測されている
このブログの状況
このブログは Amazon Lightsail 上の WordPress で動いています。確認してみると、PHP のバージョンは 7.4 でした。
PHP 7.4 はすでにサポートが終わっているため、公式の修正版は出ません。さらに、このサーバーは Bitnami という仕組みで作られていて、PHP だけを新しくすることもできませんでした。
そこで、新しいサーバーを用意してブログを引っ越すことにしました。
対応したこと
-
まずバックアップ
作業前に、サーバー全体のバックアップ(スナップショット)を取りました。何かあってもこの時点に戻せます。
-
応急処置と、被害がないかの確認
引っ越しが終わるまでの間、古いサーバーの設定を変えて、攻撃に使われる経路を狭めました。あわせて、不審なファイルやプログラムがないかを確認し、侵入された痕跡がないことを確かめました。
-
新しいサーバーを用意
Lightsail が提供している新しい WordPress のイメージで、サーバーを作りました。
実は、作ったばかりのサーバーに入っていた PHP も修正前のバージョンでした。OS のアップデートをかけて、修正版の PHP 8.2.35 にしてから次に進みました。 -
記事・画像・設定を引っ越し
データベースと画像などのファイルを新しいサーバーへ移しました。あわせて WordPress 本体とプラグインを最新版に更新しました。
-
切り替え
ブログのアドレスが指している固定 IP アドレスを、古いサーバーから新しいサーバーへ付け替えました。DNS の変更は不要で、ブログはほとんど止まりませんでした。
-
仕上げ
証明書(HTTPS)の自動更新や OS の自動セキュリティ更新を設定しました。使っていないプラグイン・テーマ・管理者アカウントも削除しました。古いサーバーは停止し、しばらく様子を見てから削除します。
対応前と対応後
| 項目 | 対応前 | 対応後 |
|---|---|---|
| PHP | 7.4(サポート終了・修正なし) | 8.2.35(修正済み) |
| OS | Debian 10(サポート終了) | Debian 12 |
| WordPress | 7.0 | 7.1.3 |
| セキュリティ更新 | 手動 | OS・WordPress・プラグインを自動更新 |
| HTTPS 証明書 | 旧サーバーの仕組みで更新 | 新サーバーで自動更新 |
- WordPress のサイトヘルスに出ていた「PHP の更新が必要です」という警告が消えました
- サイトヘルスの判定は「良好」になりました
- ブログのアドレスはそのままで、読者のみなさんの側で必要な操作はありません
やってみてわかったこと
「動いているから大丈夫」と放置していると、いざという時に「直す手段がない」状態になります。
作ったばかりのサーバーでも、中身が最新とは限りません。使い始める前にアップデートをかけるのが大事です。
新しいサーバーを裏で準備しておき、最後に IP を付け替えるだけにすると、止まる時間が短く、問題があってもすぐ戻せます。
次に同じような脆弱性が出たときに、修正が自動で入るようにしておきました。
おわりに
PHP の開発チームがこの脆弱性を事前告知したのが10月20日、修正版が公開されたのが10月21日(日本時間では21日の夜)でした。このブログは事前告知から2日後、修正版の公開から1日後の10月22日に、修正版の PHP で動く新しいサーバーへの切り替えまで終えられました。作業はすべて Claude Code に伴走してもらいながら進めました。状況の確認、コマンドの用意、結果の読み取りを一緒にやってもらえたので、落ち着いて進められました。
WordPress を自分で運用している方は、管理画面の「ツール」→「サイトヘルス」で PHP のバージョンを確認してみてください。
