本文へ移動
サイト改善

PHPの重大な脆弱性「php2shell」とは?管理サイトを実際に点検してわかったこと

2026年10月、PHPに重大な脆弱性「php2shell」が見つかりました。WordPressのサイトで何を確認すればいいのか、実際に管理サイトを点検した手順と、PHP以外に見つかった改善点をまとめました。

10月21日、PHPに重大な脆弱性が見つかったというニュースが一気に広がりました。レンタルサーバー各社が管理画面を止めたり緊急メンテナンスに入ったりして、ふだん使っているアプリまでメンテナンス中になっていました。

WordPressはPHPで動いています。SOLEIAも、管理を任されているサイトもWordPressなので、ひととおり点検してみることにしました。

PHPは、サーバー会社の対応ですでに修正版になっていました。ところが、ついでに管理画面を見ていくと、今回のニュースとは別のところに、直しておきたい点がいくつも見つかりました。点検した順番どおりに、どこを開いて何をしたかをまとめます。

php2shellとは? WordPressのサイトにも関係ある?

php2shellは、PHP本体で見つかった2件の脆弱性(CVE-2026-109618、CVE-2026-109619)の通称です。条件がそろうと、ログインしていない第三者が外からサーバー上で命令を実行できてしまうおそれがあり、PHPの開発元は深刻度を10点満点中9.2と評価しています。攻撃を試みる動きも、すでに観測されています。

WordPressやプラグインではなく、その土台のPHPの問題なので、WordPressを最新にしてもこの穴はふさがりません。修正版は、日本時間の10月21日夜に公開されました。

PHPの系列 修正版
8.5 8.5.12
8.4 8.4.27
8.3 8.3.36
8.2 8.2.35

共用のレンタルサーバーでは、PHP本体を入れ替えるのはサーバー会社です。サイトを持っている側にできるのは、修正版になったかを確かめることと、古いPHPのまま止まっていないかを見ることです。エックスサーバーも、公式サイトや管理画面を予防のために一時停止していました。

点検① まずPHPのバージョンを確かめる

PHPのバージョンは、WordPressの管理画面から見られます。ツール → サイトヘルス → 「情報」タブ → 「サーバー」 を開くと、「PHP バージョン」の欄に細かい番号まで出ています。

WordPressのサイトヘルス「サーバー」欄。PHP バージョンは 8.3.36
  • 上の表の修正版と同じか、それより新しい:修正済み
  • 8.2以上でも、番号が修正版より小さい:サーバー会社の対応待ち
  • 8.1以下:正式な修正版が出ないので、8.2以上への切り替えが必要

SOLEIAも、管理しているほかのサイトも、8.3.36になっていました。

ひとつ気をつけたいのが8.2の系列です。今回は修正版が出ましたが、8.2はPHPのサポート自体が2026年12月31日で終わります。年内に8.3以上へ上げる準備をしておくと安心です。切り替えると古いプラグインが動かなくなることもあるので、バックアップを取り、表示とフォームを確かめながら進めてください。

点検② サイトヘルスの「おすすめの改善」も見てみた

番号を確かめたついでに、同じサイトヘルスの「ステータス」タブも開いてみました。SOLEIAでは、4件のおすすめが出ていました。

WordPressのサイトヘルスに表示された4件のおすすめの改善。「サイトで HTTPS を使用していません」を枠で強調
  • 停止中のプラグインを削除してください
  • 停止中のテーマを削除してください
  • サイトで HTTPS を使用していません
  • ページキャッシュは検出されませんでしたが、サーバーのレスポンスは良好です

ページキャッシュは「応答は良好」と出ていたので見送り、残りの3つに手をつけました。

「HTTPSを使用していません」の原因は、アドレスの食い違いだった

SOLEIAは、ふだんから https で表示されています。それなのになぜ、と思いながら 設定 → 一般 を開くと、原因がわかりました。「WordPress アドレス」と「サイトアドレス」のうち、片方が http のままだったんです。管理しているほかのサイトでも、同じ食い違いが見つかりました。

WordPress アドレスはWordPress本体が置かれている場所で、管理画面のURLもここから作られます。サイトアドレスは、訪問者がサイトを開くときのURLです。表示に問題がなくても、食い違ったままだと、WordPressの中でサイトを http として扱う場面が残ります。

ただ、この警告が出たら https に書き換えればいい、というほど単純ではありません。変える前に、次のことを確かめました。

  • https で開いたときに、鍵のマークが出て警告なく表示されるか(SSL証明書が有効か)
  • 元に戻せるバックアップがあるか
  • Cloudflareなどの配信サービスを間に挟んでいないか

最後の構成の場合、サイトは https で表示されていても、WordPressからは http に見えて警告が出ることがあります。そのときは設定を変えないほうがいい場合もあるので、制作会社に作ってもらったサイトなら、一度相談してください。また、打ち間違えたり、https で開けない状態で保存したりすると、管理画面に入れなくなることがあります。

SOLEIAは2つのアドレスを https にそろえて保存し、そのあと次の4つを確かめました。

  • http のアドレスで開いても、https に自動で切り替わるか
  • ページの中に http のままの画像やファイルが混ざっていないか
  • ログインし直して、管理画面に入れるか
  • 主なページとお問い合わせフォームが、いつもどおり表示されるか

4つとも問題なく、サイトヘルスを開き直すと警告は消えていました。

そもそも https(SSL)が何を守っているのかは、1分半ほどの動画でも説明しています。

停止中のプラグインとテーマを整理した

プラグイン → インストール済みプラグイン で一覧の上の「停止中」を押すと、使っていないものだけが表示されます。SOLEIAでは、立ち上げのときに一度だけ使った作業用のプラグインや、使っていないフォントやスパム対策のプラグインが残っていました。

止めているプラグインも、ファイルはサーバーに残り、更新されないまま古くなっていきます。使う予定のないものは削除しました。削除しても、そのプラグインで作ったページや画像は基本的に残ります。

外観 → テーマ には、以前の版の子テーマが残っていました。ほかのサイトにも、前に使っていたテーマが残っていたので、あわせて削除しました。消すときに気をつけたのは、次の3つです。

  • いま使っている子テーマの「親テーマ」は消さない(消すとサイトが崩れます)
  • Twenty Twenty-Five のような標準テーマを1つ、予備に残す
  • 前のテーマに画像などを置いていた場合は、フォルダを手元に保存してから消す

整理したあとは、トップページとお問い合わせページを開いて、表示が変わっていないことを確かめました。

更新と自動更新は、サイトに合わせて決める

プラグインの一覧では、セキュリティ対策とお問い合わせフォームのプラグインに新しいバージョンが出ていたので、その場で更新しました。

いちばん大事なのは、セキュリティのための更新を放置しないことです。自動更新はそのための有効な方法ですが、更新のあとにレイアウトが崩れたり、フォームが送れなくなったりすることもあります。企業のサイトなら、バックアップ、相性の確認、更新後の動作確認までをだれが担うかを決めておきたいところです。特に、フォームや予約など大事な機能に関わるプラグインは慎重に扱います。

更新しないままにすると何が起きるのか、安全に更新する順番は、1分半ほどの動画でも説明しています。

自動にするか手動で管理するかは、サイトの作りや保守の体制によって変わります。私の管理サイトでは、プラグインが少なく動作を確かめやすいので、一部を自動更新にしました。その代わり、ときどきフォームを自分で送って、メールが届くかを確かめています。

自動更新をオンにしようとすると「リクエストを完了できませんでした」と出るプラグインもありました。更新の配り方の関係で、自動更新がうまく動かないものがあります。こうしたプラグインは手動で更新し、管理画面に入るたびに更新の表示が出ていないかを見るようにしました。

点検③ パスワードとユーザーを見直す

php2shellのうち1件は、サーバーのメモリの中身が漏れるおそれがあることが確認されています。開発元はパスワードの変更までは求めていませんが、念のため、サーバー会社の修正が済んだのを確かめてから、WordPressの管理者とサーバー会社のアカウントのパスワードを変えました。

あわせて、ユーザー の一覧に見覚えのない管理者がいないかも確かめました。更新を手伝ってもらう人を登録するときは「編集者」にしておくと、記事やページは更新できて、プラグインや設定には触れない状態にできます。

同じ順番で点検できるチェックリスト

  1. サーバー会社のお知らせで、PHPの対応状況を確認する
  2. サイトヘルスの「情報」タブで、PHPのバージョンを確かめる
  3. 「ステータス」タブのおすすめの改善を見る(HTTPSの警告は、構成とバックアップを確かめてから)
  4. 停止中のプラグインやテーマを整理する
  5. 更新を当てる。自動か手動かは、サイトの作りと保守の体制で決める
  6. 修正が済んでから、パスワードとユーザーを見直す
  7. 最後に、主なページとフォームの表示と送信を確かめる

制作会社に管理を任せている場合は、2と3の画面を見て、気になるところを聞いてみるだけでも十分です。

WordPressとAstro、セキュリティ面ではどう違う?

SOLEIAでは、これまでWordPressとAstroを2つの面から比べてきました。表示速度は同じ条件で測ると大きな差がなく、維持費と移行はどちらにも向き不向きがありました。3つ目として、セキュリティ面を見てみます。

セキュリティ対策は、脆弱性が見つかるたびに修正するだけではありません。そもそも攻撃対象となる仕組みを減らすことも、ひとつの方法です。

Astroでページをあらかじめ書き出しておく作り方なら、公開中のサイトではPHPもデータベースも動いていません。ログイン画面もプラグインもないので、php2shellのようなPHPの脆弱性の影響は受けません。

ただ、それで「Astroなら安全」というわけではありません。フォームや更新用の管理画面(CMS)は外部のサービスを組み合わせて作るので、そのサービスの脆弱性や設定ミスの影響は受けます。書き出しに使う道具にも、別の脆弱性は見つかります。守る場所が、自分のサーバーの中から、外部サービスの選び方や設定に移る、と考えると近いと思います。

WordPress Astro(書き出して配信する作り方)
PHPの脆弱性の影響 受ける(サーバー会社の修正と確認が必要) 公開中のサイトは受けない
日々の更新作業 本体・プラグイン・テーマ・PHPの更新確認 書き出しに使う道具と、外部サービスの更新確認
管理画面の守り サイトの中にある管理画面を守る 外部のCMSやサービスのアカウントを守る
外部サービスへの頼り方 少なめ 多め(フォームや更新の仕組みを外部に頼る)

お知らせやブログを担当者がよく更新するなら、WordPressの使いやすさは大きな強みです。会社案内のように更新が少ないサイトなら、仕組みを減らせるAstroの良さが生きてきます。どちらを選ぶかは、更新の頻度と、だれが更新するかで決めるのがいいと思います。

まとめ

PHPの修正はサーバー会社が済ませてくれていましたが、点検してみて、ふだん見過ごしていた小さな穴に気づけました。大きなニュースは、サイトを見直すいいきっかけになります。

日ごろの確認ポイントは、会社のホームページのセキュリティ対策7つのチェックリストにまとめています。

SOLEIA / 安田 由美

サイト分析・情報設計・デザイン・WordPress実装← サイト改善ノートに戻る