Apache系Webサーバーの前に堅牢なデジタルゲートが立ち、管理者の端末だけが青い許可光線を通過し、他のアクセスは赤い遮断バリアと403を象徴する停止表示で拒否されている様子。背後には薄暗く保護されたWebサイトとPHPサーバー、手前には鍵のかかったネットワーク接続、IPアドレスを示唆する抽象的な数字列。WordPressのメンテナンス画面ではなく、PHPが起動する前のサーバー段階でアクセスを止めるという概念を視覚化する。緊張感のあるサイバーセキュリティ、技術解説記事向けの洗練されたエディトリアルイラスト、ダークネイビーとブルーを基調に警告色の赤をアクセント、清潔な構図、リアル寄りの3D表現、横長、文字・ロゴ・ブランド名・判読可能なコードは入れない。

メンテナンスモードでは PHP の脆弱性「php2shell」は防げません ― .htaccess で自分以外のアクセスを拒否する方法


PHP に深刻な脆弱性(通称「php2shell」、CVE-2026-109618/CVE-2026-109619)が報告されています。修正版は 2026年10月21日(水)23時(日本時間)に公開予定と告知されています。

修正版が適用されるまでの間、「サイトを一時的に止めておきたい」と考え、当社の記事「WordPressのメンテナンス画面を表示する方法について解説」をご覧いただいている方が増えています。ありがとうございます。

ただし、プラグインを使ったメンテナンスモードでは、今回の脆弱性を防ぐことはできません。 この記事では、その理由と、「最悪サイトが表示されなくても構わないので、とにかく公開を止めたい」という場合の方法をご紹介します。

なぜメンテナンスモードでは防げないのか

メンテナンスモードのプラグインは、WordPress の仕組みの中で動いています。サイトにアクセスがあると、次の順番で処理が進みます。

  1. サーバー(Apache など)がアクセスを受け付ける
  2. PHP が起動する
  3. WordPress が読み込まれる
  4. プラグインが「メンテナンス中」の画面を表示する

今回の脆弱性は、PHP 本体(セッション関連の機能)にあると見られています。つまり、上の 2. の時点で攻撃が成立してしまう 可能性があります。メンテナンス画面は 4. で表示されるため、見た目はサイトが止まっていても、裏側では PHP が動いており、攻撃を受け付けてしまいます。

WordPress 標準のメンテナンスモード(.maintenance ファイル)も、PHP で処理されるため同じです。

PHP が動く前にアクセスを止めるには

PHP が起動する前、つまりサーバーの段階でアクセスを拒否する必要があります。レンタルサーバーで手軽にできる方法が、.htaccess を使って、自分の IP アドレス以外からのアクセスをすべて拒否する 方法です。

この方法では、自分以外の人にはサイトが一切表示されなくなります(「403 Forbidden」というエラー画面になります)。その代わり、PHP が起動する前にアクセスを止められます。

使えるサーバー

.htaccess は Apache 系のサーバー(LiteSpeed を含む)で使える仕組みです。エックスサーバー、さくらのレンタルサーバ、ロリポップ!など、多くの国内レンタルサーバーで利用できます。

nginx のみで動作しているサーバーでは .htaccess は使えません。その場合は、サーバー会社やお使いの保守会社にご相談ください。

手順1:自分の IP アドレスを確認する

「IPアドレス 確認」で検索すると、今使っているネットワークの IP アドレスを表示してくれるサイトが見つかります。表示された IP アドレスを控えておいてください。

IPv4(例:203.0.113.10)と IPv6(例:2001:db8::1)の両方が表示される場合は、両方控えておくと確実です。

手順2:.htaccess の先頭に追記する

FTP やサーバーのファイルマネージャーで、WordPress をインストールしたディレクトリにある .htaccess を開きます。ファイルの先頭 に、次の内容を追記します。

# --- php2shell 暫定対策:自分のIP以外を拒否 ここから ---
<IfModule mod_authz_core.c>
  Require ip 203.0.113.10
  # IPv6 も使っている場合は次の行も(先頭の # を外して書き換え)
  # Require ip 2001:db8::1
</IfModule>
<IfModule !mod_authz_core.c>
  Order deny,allow
  Deny from all
  Allow from 203.0.113.10
</IfModule>
# --- php2shell 暫定対策:自分のIP以外を拒否 ここまで ---

203.0.113.10 の部分は、手順1 で控えた自分の IP アドレスに書き換えてください。事務所と自宅など、複数の場所から作業する場合は、Require ip の行を IP アドレスごとに追加します。

元から書かれている # BEGIN WordPress 〜 # END WordPress の部分は、消さずにそのまま残してください。

手順3:表示を確認する

  • 自分のパソコンからは、これまでどおりサイトや管理画面が表示されること
  • スマートフォンのモバイル回線(Wi-Fi を切った状態)など、別のネットワークからは「403 Forbidden」になること

の2点を確認してください。

注意点

  • IP アドレスが変わると、自分も締め出されます。 一般的なインターネット回線では、ルーターの再起動などで IP アドレスが変わることがあります。その場合は、FTP やファイルマネージャーで .htaccess を開き、IP アドレスを書き換えてください。
  • Cloudflare などの CDN を経由しているサイトでは、この方法はそのまま使えません。 サーバーからはすべて CDN の IP アドレスに見えるため、自分も含めて全員が拒否されてしまいます。CDN 側の設定で対応してください。
  • お問い合わせフォームや決済、外部サービスとの連携もすべて止まります。 業務への影響をご確認のうえで実施してください。
  • これはあくまで一時的な措置です。 PHP の修正版が適用されたことを確認したら、追記した部分を削除して元に戻してください。

サイトを止められない場合は

サイトを止めずに対策したい場合は、PHP の設定で session.upload_progress.enabled を無効(0)にする緩和策が、セキュリティ企業から案内されています。サーバーのコントロールパネルや .user.ini で PHP の設定を変更できる場合は、こちらもご検討ください。

いずれの場合も、根本的な対策は PHP の修正版の適用 です。レンタルサーバーでは、多くの場合サーバー会社が順次適用します。お使いのサーバー会社からのお知らせもあわせてご確認ください。

対応に不安がある場合は

「.htaccess を触るのが不安」「自分のサイトがどのサーバーで動いているかわからない」といった場合は、Webの相談所にお気軽にご相談ください。

→ お問い合わせ

参考:PHPの重大な脆弱性「php2shell」(CVE-2026-109618、CVE-2026-109619)の概要と対応指針 – GMO Flatt Security Blog


トップへ戻る