PHP2Shellへの対応

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 だけを新しくすることもできませんでした。

そこで、新しいサーバーを用意してブログを引っ越すことにしました。

対応したこと

  1. まずバックアップ

    作業前に、サーバー全体のバックアップ(スナップショット)を取りました。何かあってもこの時点に戻せます。

  2. 応急処置と、被害がないかの確認

    引っ越しが終わるまでの間、古いサーバーの設定を変えて、攻撃に使われる経路を狭めました。あわせて、不審なファイルやプログラムがないかを確認し、侵入された痕跡がないことを確かめました。

  3. 新しいサーバーを用意

    Lightsail が提供している新しい WordPress のイメージで、サーバーを作りました。

    実は、作ったばかりのサーバーに入っていた PHP も修正前のバージョンでした。OS のアップデートをかけて、修正版の PHP 8.2.35 にしてから次に進みました。
  4. 記事・画像・設定を引っ越し

    データベースと画像などのファイルを新しいサーバーへ移しました。あわせて WordPress 本体とプラグインを最新版に更新しました。

  5. 切り替え

    ブログのアドレスが指している固定 IP アドレスを、古いサーバーから新しいサーバーへ付け替えました。DNS の変更は不要で、ブログはほとんど止まりませんでした。

  6. 仕上げ

    証明書(HTTPS)の自動更新や OS の自動セキュリティ更新を設定しました。使っていないプラグイン・テーマ・管理者アカウントも削除しました。古いサーバーは停止し、しばらく様子を見てから削除します。

対応前と対応後

項目対応前対応後
PHP7.4(サポート終了・修正なし)8.2.35(修正済み)
OSDebian 10(サポート終了)Debian 12
WordPress7.07.1.3
セキュリティ更新手動OS・WordPress・プラグインを自動更新
HTTPS 証明書旧サーバーの仕組みで更新新サーバーで自動更新
結果
  • WordPress のサイトヘルスに出ていた「PHP の更新が必要です」という警告が消えました
  • サイトヘルスの判定は「良好」になりました
  • ブログのアドレスはそのままで、読者のみなさんの側で必要な操作はありません

やってみてわかったこと

サポート切れの PHP には修正が来ない

「動いているから大丈夫」と放置していると、いざという時に「直す手段がない」状態になります。

新しいサーバーも、まずは更新

作ったばかりのサーバーでも、中身が最新とは限りません。使い始める前にアップデートをかけるのが大事です。

固定 IP の付け替えで、安全に切り替え

新しいサーバーを裏で準備しておき、最後に IP を付け替えるだけにすると、止まる時間が短く、問題があってもすぐ戻せます。

自動更新を仕込んでおく

次に同じような脆弱性が出たときに、修正が自動で入るようにしておきました。

おわりに

PHP の開発チームがこの脆弱性を事前告知したのが10月20日、修正版が公開されたのが10月21日(日本時間では21日の夜)でした。このブログは事前告知から2日後、修正版の公開から1日後の10月22日に、修正版の PHP で動く新しいサーバーへの切り替えまで終えられました。作業はすべて Claude Code に伴走してもらいながら進めました。状況の確認、コマンドの用意、結果の読み取りを一緒にやってもらえたので、落ち着いて進められました。

WordPress を自分で運用している方は、管理画面の「ツール」→「サイトヘルス」で PHP のバージョンを確認してみてください。

参考

タイトルとURLをコピーしました