エンジニア初心者がPHP/Laravelを学ぶ

【PHP脆弱性】php2shell騒ぎでConoHa WINGのWordPressを見たら、PHP 7.4のまま放置されてた話

php2shell対応の結果。PHP 7.4.33から8.3へ

2026年10月21日の夜、Xのタイムラインが「PHPに重大な脆弱性」「今夜中に対応を」で埋まった。ゲームの緊急メンテのお知らせまで流れてきて、正直ちょっとしたお祭り状態だった。

俺は最初「ConoHa WINGの共用サーバーだし、サーバー会社がなんとかしてくれるでしょ」と思っていた。正直「どうせ大企業のサーバーの話でしょ」くらいに思ってた。

で、念のため自分のブログを見てみたら、PHPが7.4のままだった。2022年にサポートが終わったやつだ。

ということで今回は、php2shell騒ぎをきっかけに、放置していたWordPressブログを総点検した記録を書く。同じように「共用サーバーだけど、自分も何かやらないといけないの?」と思った人の参考になればうれしい。

どうも、スニーキーです。

まずは結果を見てほしい

対応前と対応後のバージョン比較

WordPress本体は6.0.2から7.1.3へ、PHPは7.4.33から8.3へ、テーマのAFFINGERは2022年の版から最終版へ上げた。最後にWordPressの「サイトヘルス」は「良好」になった。

ただ、途中でPHPを上げたらサーバーのフォルダの場所が丸見えになる警告が出て、かなり焦った。その話も含めて、順番に書いていく。

php2shellって何?

php2shellの修正版の一覧

3行でまとめるとこう。

  • PHP本体に、外からサーバー上でプログラムを動かされる穴が2つ見つかった(CVE-2026-109618 / CVE-2026-109619、どちらもCVSS 9.2)
  • 修正版は 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35。8.1以前に正式な修正版は出ていない
  • PHP公式いわく「完全な回避策はなく、更新だけが安全な選択肢」

(参照:https://www.php.net/archive/2026.php#2026-10-21-5)

ちなみに7.4・8.0・8.1向けにも修正は公開されているけど、自分でPHPをビルドする人向けの最小限のものらしい。レンタルサーバーで使っている人が当てにできるものではないと思う。

共用サーバーなら何もしなくていい?

共用サーバーでの役割分担

結論から言うと、今回のConoHa WINGに限っては、何もしなくても大丈夫だった。

ConoHaは10月22日20時45分に、提供しているすべてのPHPバージョンにセキュリティパッチを当て終えたと発表した。対象には7.4.33も入っていて、「お客様ご自身でPHPバージョンの変更等をしていただく必要はございません」と書いてある。(参照:https://www.conoha.jp/wing/news/?ap=2015054909)

ただ、俺がこれを知ったのは、全部の作業が終わった後だった笑 それに、ConoHa WINGではどのバージョンのPHPを使うかは自分で選ぶ。7.4は2022年にサポートが終わったバージョンで、次に何か見つかったときも、サーバー会社が同じように当ててくれる保証はない。対応のしかたもサーバー会社によって違う。

つまり「共用サーバーだから何もしなくていい」は今回たまたま正解だったけど、古いPHPのままでいい理由にはならないってこと。

自分のPHPのバージョンを確認する

サイトヘルスでPHPのバージョンを確認(再現図)

確認はWordPressの管理画面だけでできる。

「ツール」→「サイトヘルス」→「情報」タブ→「サーバー」を開くと、「PHP バージョン」が書いてある。俺のは 7.4.33 だった。これはさすがにヤバいと思った。4年前にブログを作って放置した過去の俺を、ちょっと説教したい笑

この画面のいいところは、サーバーの管理画面に入れなくても見られること。実際、この日はそっちに入れなかった。

ConoHaの管理画面に入れない

ConoHaの管理画面に出たエラー(再現図)

ConoHa WINGは、10月21日19時から22日10時まで緊急メンテナンスをしていた。お知らせの作業内容は「システムの保守作業」とだけ書いてあった。(参照:https://www.conoha.jp/wing/news/?ap=2015054897)

メンテナンスが明けても「サイト管理」を開くと、上のエラーが出て先に進めない。数時間おいてログインし直したら直っていた。Xでも同じように入れない人が結構いたので、たぶんみんな同時にアクセスしてたんだと思う。

いきなりPHPを上げてはいけない理由

WordPressとPHPを上げる順番

ここで「じゃあPHPを8.3にすればいいじゃん」となるけど、ちょっと待ってほしい。

WordPress公式の対応表を見ると、WordPress 6.0はPHP 8.2に対応していない。逆にWordPress 7.1はPHP 7.4でも動く。(参照:https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versions/)

つまり古いWordPressのままPHPだけ上げると、サイトが壊れる可能性がある。なので順番は「バックアップ確認 → WordPress本体 → プラグイン・テーマ → PHP」にした。

バックアップとWAFを確認

ConoHaの自動バックアップ一覧

ConoHa WINGの「サーバー管理」→「自動バックアップ」に、直近4日分のバックアップがあった。壊れてもここから戻せる。

WAFがブロックした記録(攻撃元IPは伏せています)

ついでにWAF(怪しいアクセスを止める仕組み)の記録も見たら、騒ぎの翌朝5時34分と、その日の夜20時に、phpinfo.php やそのバックアップファイルを探しに来たアクセスを止めていた。PHPのバージョンを調べようとするボットらしい。ちゃんと仕事してて、ちょっと感動した笑

WordPress本体とプラグインを更新

WordPress 7.1.3に更新

プラグインをいったん全部止めてから、WordPressを6.0.2から7.1.3に一気に上げた。WordPress公式の文書にも「バックアップがあれば、古い版から最新版まで一度に上げられる」とある。(参照:https://developer.wordpress.org/advanced-administration/upgrade/upgrading/)

プラグインの一覧。全部最新で自動更新ON

そのあと、古かったプラグイン2つ(Enlighter 4.5.0→4.7.0、EWWW Image Optimizer 6.9.0→8.9.0)を更新して、1つずつ有効に戻した。1つ戻すたびに、トップページと記事ページが表示されるか確認した。

コードの色分けも元どおり

ちなみにコードの色分けプラグインを戻した直後、色が付いていなくて「壊れた?」と焦った。ただのキャッシュ(古いページの一時保存)だった。読み込み直したら普通に出た。

PHPを8.3にしたら、警告でパスが丸見えに

PHP 8.3にした直後に出た警告(再現図)

ConoHaでドメインごとのPHPを8.3に切り替えた。そしたら、全ページの一番上にWarningが3行出た。

原因は、古いAFFINGER(2022年の版)のコードだ。PHP 7.4では黙っていた書き方に、PHP 8から警告が出るようになったらしい。しかもログインしていない読者にも見えていて、サーバーのフォルダの場所まで表示されていた。見た瞬間、普通に血の気が引いた。セキュリティのために上げたのに、逆に中身をさらしてたら意味がない笑

実行中のPHPは8.3.35

さらにサイトヘルスを見たら、動いていたのは 8.3.35。修正版の8.3.36じゃない!とまた焦った。

でもこれは、ConoHaが番号を変えずにパッチを当てる方式だったからだ。お知らせにも「サイトヘルス」画面では修正前と同じ番号が表示される場合がある、と書いてある。サイトヘルスの番号だけ見て「まだ危ない」と決めつけないほうがいい。

display_errors = Off で警告を隠す

user.iniにdisplay_errors = Offを追加

PHP公式のマニュアルには、display_errors(エラーを画面に出す設定)は「本番環境では決して使ってはいけない」と書いてある。(参照:https://www.php.net/manual/en/errorfunc.configuration.php)

なので、ConoHaの「サイト設定」→「応用設定」→「PHP設定」→「user.ini編集」に、この1行を足した↓

display_errors = Off

これで警告は画面から消えた。PHPを7.4に戻す案も考えたけど、7.4はもうサポートが切れている。なので8.3のまま隠す方を選んだ。

根本対策:テーマを最終版に

AFFINGERを20260520に更新

警告を隠すだけじゃ気持ち悪いので、AFFINGERも更新した。AFFINGER6はもう開発が終わっていて、購入者ページで最終版(20260520)が配られていた。変更履歴に「PHP8.2への対応」が入っている。

ダウンロードしたzipは、入れる前に中身をざっと確認した。怪しいコードがないかと、警告の原因になっていた変数がちゃんと用意されているかを見た。

ついでにやったこと

サイトヘルスは「良好」
  • 使っていないテーマを削除(サイトヘルスに「停止中のテーマを削除してください」と出ていたため)
  • プラグインの自動更新をON
  • コメント欄のスパムが2万5千件たまっていて、通知メールも同じくらい来ていたので、メール通知をOFFにしてコメント欄を閉じた

最終的にサイトヘルスは「良好」、致命的な問題は0件になった。

まとめ:共用サーバーの人がやること3つ

共用サーバーの人がやること3つ
  • サイトヘルスでPHPのバージョンを見る
  • 8.2未満なら「WordPress本体 → プラグイン → PHP」の順で上げる
  • サーバー会社のお知らせで、修正の適用が終わったか確認する(番号が変わらないこともある)

今回はConoHaがちゃんと守ってくれた。でも、放置していたWordPressとPHPを上げるいいきっかけになったと思う。「共用サーバーだから大丈夫」と思っていた俺みたいな人ほど、一回だけでいいので確認してみてほしい。

誰かの助けになれば嬉しい。次は放置していた2段階認証とSearch Consoleをやりたい。

-エンジニア初心者がPHP/Laravelを学ぶ