「WordPressもプラグインも全部最新にしてあるので、うちは大丈夫ですよね」
10月21日の夜、知り合いの会社の担当者からこう聞かれました。答えは、それだけでは足りない、です。今回のWordPressとPHPの脆弱性の関係は少しわかりにくいので、よく聞かれる質問に順に答えます。10月23日時点の情報です。
Q. なぜWordPressを更新しても直らないのですか
今回の欠陥が、WordPressではなく、その下で動いているPHPという土台の側にあるからです。
WordPressは、PHPというプログラミング言語で書かれたソフトです。家にたとえると、WordPressが家の中の間取りや家具で、PHPは基礎と柱にあたります。今回見つかったのは柱のひびなので、家具をいくら新しくしても直りません。
PHPの公式発表でも、修正はPHPの本体を8.5.12、8.4.27、8.3.36、8.2.35のいずれか以降に更新することとされています。WordPressの中で動くセキュリティプラグインも、修正の代わりにはなりません。PHPがWordPressのプログラムを動かし始める前の段階で攻撃が成立する場合があるからです。サイトの手前で通信を調べるWAF(Webサイトの前で怪しい通信を止める仕組み)は、ある程度の保護になりうると米国のCISAは書いていますが、これも更新までのつなぎです。
Q. 7月にもWordPressで似た名前の騒ぎがありましたよね
ありました。7月の「WP2Shell」は、WordPress本体の欠陥でした。こちらはWordPressの更新で直るもので、修正版は7.0.2などです。
今回の「PHP2Shell」は、名前は似ていますが別物です。WP2ShellはWordPressの更新、PHP2ShellはPHPの更新で直します。両方とも済ませておく必要があります。
Q. レンタルサーバーを使っている場合、自分でやることはありますか
PHPの本体を更新するのは、基本的にレンタルサーバーの会社です。大手の各社は、21日の夜から22日にかけて修正を適用したと告知しています。
それでも、確かめてほしいことが2つあります。
1つは、会社のお知らせで、自分が使っているサーバーの種類が修正の対象に入っているか。もう1つは、管理画面でサイトに割り当てているPHPのバージョンです。互換性のために古いPHP、たとえば7.4や8.1を選んだままにしている場合は要注意です。PHPの公式には古い系統の修正版がなく、古い系統にも独自に修正を当てた会社と、そうでない会社があります。確かめ方は別の記事にあります。
Q. PHPのバージョンを上げると、サイトが壊れませんか
同じ系統の中での更新、たとえば8.3.30から8.3.36への更新なら、壊れることはまれです。同じ系統の中の小さな番号の更新は、欠陥の修正が中心で、互換性を保つのが原則だからです。
心配なのは、8.1から8.3のように系統をまたいで上げる場合です。古いテーマやプラグインが新しいPHPに対応しておらず、画面が真っ白になることがあります。私が以前、7.4から8.1に上げたときは、更新が止まっていた古いプラグインが1つ原因で、管理画面に入れなくなりました。
系統(8.3のような最初の2つの数字)をまたぐ場合は、先にバックアップを取り、テスト用の環境で動作を確かめてから本番を上げてください。レンタルサーバーによっては、本番のコピーを作って試せる機能(ステージングなど)があります。ない場合は制作会社に相談してください。WordPressの公式サイトはPHP 8.3以上を推奨しています。
Q. 自分で管理するサーバーで動かしている場合は
PHPを修正版に更新し、PHP-FPMやApacheを再起動します。再起動しないと、古いPHPのプログラムが動き続けます。
LinuxのディストリビューションのPHPを使っているなら、ディストリビューションの更新で修正が配られます。PHPの公式発表によると、ディストリビューションには事前に修正が渡されていました。
すぐに更新できない場合の一時的な設定は、別の記事で解説しています。
Q. 更新した後に確かめることはありますか
更新前の時間帯に、すでに侵入されていなかったかの確認です。レンタルサーバーなら、まずWordPressのユーザー一覧に知らない管理者がいないか、サーバー会社の改ざん検知やウイルスチェックの機能で異常が出ていないかを見てください。サーバーを自分で管理している場合の確かめ方は、別の記事にまとめました。確かめ方は別の記事にまとめました。
制作会社にサイトを任せている場合は、PHPのバージョンと修正を当てた日時を、制作会社に確かめてもらってください。
冒頭の担当者の会社では、WordPressは最新でしたが、レンタルサーバーの管理画面でPHPが8.1のままになっていました。会社の告知を確かめて8.1にも修正が当たっていることはわかりましたが、これを機に8.3へ上げることにしました。WordPressとPHPは、別々に更新が必要なものです。今回の件を、PHPのバージョンを定期的に見直すきっかけにしてください。





