事件・速報

PHP重大脆弱性、WordPressの​サイトを​一晩​止めた​全手順

2026年10月22日 / 執筆: 株式会社LOG 代表取締役 矢嶋 拓弥
PHP重大脆弱性、WordPressのサイトを一晩止めた全手順
ヒント: この記事の結論

レンタルサーバーなら、PHP本体の修正はサーバー会社が行います。利用者がやることは「止めるかどうかの判断」と「戻せる準備」です。迷ったら、ファイルとデータベースのバックアップを取り、PHPだけを止めて、外から止まったことを確かめる。同じサーバーにある使っていないサイトも、まとめて止めてください。

2026年10月21日の夜、「今夜中に対応してください」という異例の呼びかけが国から出されました。対象は、世界中のWebサイトで使われているプログラミング言語「PHP」です。WordPressもPHPで動いています。

大手サービスが相次いで緊急メンテナンスに入るなか、私たち運営元も自社で管理しているWebサイトを一晩、一時停止しました。この記事では、そのとき実際にやったことを順番どおりに記録します。

何が起きたか(公表の内容)

PHPの開発チームが重大な脆弱性2件を公表し、日本時間10月21日23時に修正版を公開しました。

✎ Ex.公表された内容(php.net より)
項目内容
脆弱性CVE-2026-109618 / CVE-2026-109619
深刻度CVSS v4.0 9.2(Critical)×2件
種類認証不要のリモートコード実行(外からサーバーに命令を実行させられる)
影響Webリクエストを処理するPHP全般(PHP-FPM・Apacheのmod_php・LiteSpeedなど)
修正版8.5.12 / 8.4.27 / 8.3.36 / 8.2.35
修正版なし8.1以下(公式の更新は終了)

注意したいのは次の2点です。

  • WordPressなどのアプリが動く手前で攻撃が成立するため、WordPressのセキュリティプラグインでは防げません
  • 修正版の公開前に、悪用方法がネット上に出回ったとの情報がありました

国家サイバー統括室も、修正パッチの適用が難しい場合は、Webサイトを一時的に止めることもリスクを下げる有効策の一つだとしています。

乗っ取られていたら、何が起きていたか

「会社案内のサイトだから、書き換えられても大した被害はない」と考えがちですが、実際には被害はサイトの中だけでは収まりません。PHPはサーバーアカウントの権限で動くため、そのアカウントで触れるものすべてが対象になります。

✎ Ex.起こり得る被害
狙われるもの被害の例
同じサーバー内の他のサイト1つのサイトから入られると、同じアカウントにある全サイトのファイルを書き換えられる
データベース設定ファイルにパスワードがあるため、お問い合わせの履歴(氏名・会社名・メール・電話)や会員情報を抜き取られる
メールサーバーに保存されたメールを読まれる。自社ドメインから詐欺メールを大量に送られる
検索結果と信用改ざん、詐欺サイトへの転送、ブラウザの「危険なサイト」警告。自社のメールが迷惑メール扱いされる

問い合わせ情報が漏れれば、問い合わせをくれた人への連絡や、当局への報告が必要になることもあります。漏れた連絡先は、やがて詐欺メールや不正ログインに使われる「名簿」として出回ります。

いちばん危なかったのは「使っていないサイト」

サーバーを棚卸ししてみると、昔作ってそのままのWordPressや、転送のためだけに残したサイトが複数ありました。更新されていない放置サイトほど狙われやすく、そこから同じアカウントの全サイトに手が届きます。止めるなら全部。そして、使っていないサイトは普段から消しておく。今回いちばんの学びでした。

作成者 矢嶋

一晩でやったこと(順番どおり)

当日の流れ
① 状況の確認
サーバー会社の告知を見る
② バックアップ
ファイル+データベース
③ サイトの棚卸し
PHPを使うサイトを洗い出す
④ PHPを止める
.htaccess に追記
⑤ 外から確認
403と503を見る

1. サーバー会社の状況を確認する所要 5分

レンタルサーバーの場合、PHP本体の修正はサーバー会社が行います。利用者が自分で修正版を入れる必要はありません。

ただ当日は、サーバー会社が予防措置として管理画面を止めていて、自社サイトのPHPのバージョンも、対策がもう効いているかも確認できませんでした。確認できないこと自体がリスクだと判断し、自分たちで止めることにしました。

2. ファイルとデータベースを両方バックアップする所要 30分

止める前に、まず「戻せる状態」をつくります。

✎ Ex.取ったもの
対象取り方
wp-config.php・.htaccessFTPでダウンロード
wp-content(テーマ・プラグイン・画像)FTPでダウンロード
データベース(記事・ページ・設定)WordPressの管理画面から、バックアッププラグインで出力
各サイトの元の .htaccessFTPでダウンロード(戻すときに使う)
注意: ファイルだけでは戻せません

記事やページの本文はデータベースの中にあります。FTPで取れるのはファイルだけなので、データベースは別に取ってください。

3. サーバー内のサイトを全部洗い出す所要 15分

public_html の中に .php ファイルがあるサイト(WordPressなど)が対象です。HTMLだけで作られたページは、今回の攻撃の対象外なので対応しませんでした。

メールの保存場所や、Webから届かないフォルダ(cronのスクリプト置き場など)も対象外です。外からのリクエストで動くPHPだけが今回の入口になります。

4. .htaccess でPHPを止め、メンテ画面を出す所要 各3分

各サイトの .htaccess(サーバーの動きを決める設定ファイル)の先頭に、次の内容を足しました。元の設定はその下にそのまま残すので、戻すときは足した部分を消すだけです。

# BEGIN Emergency Maintenance
DirectoryIndex index.html
ErrorDocument 503 /index.html

<IfModule mod_authz_core.c>
    <FilesMatch "(?i)\.(php[0-9]?|phtml|phar)$">
        Require all denied
    </FilesMatch>
</IfModule>

<IfModule mod_headers.c>
    Header always set Retry-After "3600" "expr=%{REQUEST_STATUS} == 503"
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^index\.html$ - [END]
    RewriteRule ^ - [R=503,END]
</IfModule>
# END Emergency Maintenance

やっていることは2つです。

  • PHPファイルへのアクセスをすべて拒否する(403)。PHPが動かなければ、今回の攻撃は成立しません
  • それ以外はメンテナンス画面へ(503)。検索エンジンにも「一時的な停止」と伝わるので、検索順位への影響を抑えられます

あわせて、同じ場所にメンテナンス告知の index.html を置きます。転送だけしているサイトは、PHPを拒否する部分だけを足して、転送は生かしました。

実際に表示したメンテナンス画面。止めている理由・再開の見込み・急ぎの連絡先の3点だけを載せた
実際に表示したメンテナンス画面。止めている理由・再開の見込み・急ぎの連絡先の3点だけを載せた

告知文は「なぜ止めているか」「いつ戻るか(未定なら未定と書く)」「急ぎの連絡先」の3点に絞りました。問い合わせ窓口がメンテ画面から消えると、取引先が連絡手段に困るためです。

注意: 上書きの前に必ず退避

元の .htaccess は必ずダウンロードして保管してください。もともと index.html があるサイトでは、上書きで元のページが消えます。

5. 外から本当に止まったか確かめる所要 5分

設定して終わりにせず、外からアクセスして確かめます。

✎ Ex.確認のしかた
アクセス先期待する結果
トップページメンテナンス画面(503)
https://自社ドメイン/wp-login.php403(アクセス拒否)=PHPが止まっている
サブドメインやサブフォルダの .php403(親の設定が効いている)

一部のページで以前の表示が残ることがあります。これはサーバーのキャッシュ(保存済みの静的なページ)が返っているだけで、PHPは動いていません。URLの末尾に ?test=1 などを付けると、メンテ画面に変わったことを確かめられます。

元に戻すときの注意

サーバー会社から修正の適用完了の告知が出たら、元の .htaccess を戻し、足した index.html を消します。その前に、次の3つを確かめてください。

PHPのバージョンを確認する所要 5分

修正版が出ているのは 8.2〜8.5 です。8.1以下には公式の修正版がありません。サーバーの管理画面で 8.3 などに切り替えてください。なお 8.2 は2026年12月31日でサポートが終わります。

入り込まれていないか確認する所要 15分

止めるまでの間に攻撃を受けていた場合、裏口(バックドア)が残っていることがあります。最近書き換えた覚えのないPHPファイルや、画像フォルダ(uploads)に紛れ込んだPHPファイルがないか確認してください。

WordPress本体とプラグインを更新する所要 30分

今回の件とは別に、古いままのWordPressやプラグインも侵入口になります。更新の前にもう一度データベースのバックアップを取ってから、まとめて更新しましょう。

まとめ

PHPの緊急事態で、WordPressのサイトを持つ人がやること
  • サーバー会社の告知で、修正の状況を確認した
  • ファイルとデータベースの両方をバックアップした
  • 同じサーバーにあるPHPのサイトを全部洗い出した
  • 元の .htaccess を退避してから、PHPを止める設定を足した
  • 外から、トップが503・wp-login.php が403になることを確かめた
  • 戻す前に、PHPのバージョンと不審なファイルを確認した
  • 使っていないサイトの片付けを予定に入れた

参考・出典

矢嶋 拓弥
この記事を書いた人
矢嶋 拓弥株式会社LOG 代表取締役

AI・DXの導入支援と研修を手がけ、DX支援350社・AI研修/顧問80件。AI研修先ではセキュリティの導入支援もあわせて担当し、現場で「専門家でなくても読める形にしてほしい」という声を受けて本サービスを立ち上げた。

プロフィールと書いた記事の一覧 →
あなたのメールアドレス、漏れていないか10秒でチェックできます
無料でチェックする
結果はその場で表示されます(メール登録不要)