再発防止2026年2月更新

駆除しても再感染する理由
根本対策

「マルウェアを駆除したのに、1週間後にまた感染していた」——私たちへの相談で最も多いパターンの一つです。

再感染の原因は、多くの場合「駆除が不完全だった」のではなく「侵入口を塞いでいなかった」ことにあります。 この記事では、復旧現場で繰り返し目にする再感染パターンと、それぞれの根本的な対策を解説します。

再感染は「駆除の失敗」ではない

マルウェア本体を完璧に除去しても、侵入経路が残っていれば同じことが起きます。 駆除と防御は別の作業です。

1

バックドアが「見えない場所」に残っている

マルウェアの「本体」——つまり目に見える症状を引き起こしているコード——は比較的見つけやすいものです。 問題は、攻撃者が本体とは別の場所に仕込んでいるバックドアです。

よく見落とされるバックドアの隠し場所

wp-content/uploads/ 内のPHPファイル

uploadsディレクトリは画像ファイルが入る場所ですが、ここに.phpファイルが存在すること自体が異常です。wp-content/uploads/2024/03/cache.phpのように、 一見それらしいファイル名で隠されていることが多いです。

データベースのwp_optionsテーブル

ファイルだけ見ていても見つからないパターンです。wp_optionsテーブルに 不正なPHPコードがbase64_decodeでエンコードされて保存されており、 テーマのfunctions.phpから読み込まれて実行される仕組みです。

wp-cronに登録された不正タスク

WordPressの定期実行機能(wp-cron)に、外部からマルウェアをダウンロードするタスクが仕込まれているケース。 ファイルを全て駆除しても、cronが動くたびに再生成されます。

バックドア検出のためのコマンド例
# uploadsディレクトリ内のPHPファイルを検索
find wp-content/uploads/ -name "*.php" -type f

# 不審な関数を含むファイルを検索
grep -rl "eval(" wp-content/ --include="*.php"
grep -rl "base64_decode" wp-content/ --include="*.php"
grep -rl "str_rot13" wp-content/ --include="*.php"

# wp-cronの登録内容を確認(WP-CLIが使える場合)
wp cron event list
2

侵入の原因になったプラグインがそのまま

マルウェアを駆除しても、そもそもどこから侵入されたのかを特定して塞がなければ意味がありません。 WordPressへの侵入経路の大半は、脆弱性のあるプラグインかテーマです。

侵入経路の特定方法

  1. 1
    アクセスログを確認する

    サーバーのアクセスログで、感染推定日時の前後に不審なPOSTリクエストがないか確認します。特にプラグインのAjaxエンドポイントへのアクセスが手がかりになります。

  2. 2
    プラグインの脆弱性情報を照合する

    WPScan Vulnerability Database(wpscan.com)で、インストール済みプラグインの既知の脆弱性を確認します。

  3. 3
    使っていないプラグインを全て削除する

    「無効化」では不十分です。無効化されたプラグインのPHPファイルは依然としてサーバー上に存在し、直接アクセスで脆弱性を突かれます。

3

認証情報が漏洩したまま

マルウェアに感染した時点で、攻撃者はあなたのサイトの認証情報を入手している可能性が高いです。 駆除後にパスワードを変更しなければ、攻撃者は正面玄関から堂々と再侵入できます。

変更が必要な認証情報(見落としがちなものを含む)

WordPress管理画面の全ユーザー

管理者だけでなく、編集者・投稿者のパスワードも変更

FTP/SFTPアカウント

FTPクライアントに保存されたパスワードも更新

サーバーパネル(cPanel等)

ここを取られると全てが無意味

データベースパスワード

変更後、wp-config.phpのDB_PASSWORDも書き換え

wp-config.phpの認証キー・ソルト

WordPress.orgのジェネレーターで再生成。全ユーザーが強制ログアウトされる

メールアカウント

パスワードリセットメールの宛先になるため重要

4

同一サーバー上の別サイトから横展開

共有サーバーで複数のWordPressサイトを運用している場合、1つのサイトを駆除しても、隣のサイトから再感染するケースがあります。 特にファイルパーミッションが緩い環境では、サイト間でファイルの読み書きが可能なことがあります。

対策

  • 同一サーバー上の全てのサイトを同時にスキャン・駆除する
  • 各サイトのファイルパーミッションを適正化する(ディレクトリ755、ファイル644、wp-config.php 400)
  • 使っていないサイトは削除するか、別サーバーに移す
  • サーバーのPHP設定でopen_basedirを有効にし、サイト間のファイルアクセスを制限する
5

復元したバックアップ自体が汚染済み

「感染前のバックアップに戻せば大丈夫」と考えるのは自然ですが、バックドアの設置は、目に見える症状が出る数週間〜数ヶ月前に行われていることが大半です。 つまり、「感染前」に見えるバックアップにも、すでにバックドアが含まれている可能性があります。

バックアップ復元で再感染するメカニズム

攻撃者がバックドアを設置(この時点では目に見える症状なし)
数週間後、バックドア経由でマルウェア本体を投入(ここで症状が出る)
管理者が「症状が出る前のバックアップ」に復元(①のバックドアは含まれたまま)
攻撃者が残存バックドアから再度侵入 → 再感染

正しいバックアップの使い方

バックアップから復元する場合は、復元後に必ずセキュリティスキャンを実施してください。 また、復元するのはデータベース(記事データ)のみにとどめ、 WordPressコアファイルとプラグインは公式から新規ダウンロードしたものを使うのが最も安全です。

再感染しない「防御の設計」とは

個別の対策をバラバラに実施するのではなく、多層防御(Defense in Depth)の考え方で セキュリティを設計することが重要です。1つの層が破られても、次の層で食い止める仕組みを作ります。

第1層:侵入の防止

  • WordPress本体・プラグイン・テーマを常に最新に保つ(自動更新の有効化)
  • 使っていないプラグイン・テーマは「削除」する(無効化ではなく完全削除)
  • WAF(Web Application Firewall)を有効にする
  • 管理画面のログインURLを変更し、二要素認証を導入する

第2層:異常の早期検知

  • ファイル変更検知(Wordfenceのファイル整合性チェック等)を有効にする
  • Google Search Consoleの「セキュリティの問題」を定期確認する
  • サイトの死活監視を設定する(UptimeRobot等)

第3層:被害からの復旧準備

  • 定期的な自動バックアップを外部ストレージに保存する
  • バックアップからの復元手順を事前にテストしておく
  • 緊急時の連絡先(サーバー会社・セキュリティ業者)をまとめておく

お困りですか?専門家に無料で相談できます

マルウェア感染の疑いがある場合、早期対応が被害を最小限に抑えます。 まずはLINEで無料相談をご利用ください。

再感染を繰り返していませんか?

マルウェア駆除だけでなく、再感染しないための防御設計まで対応します。
まずは無料で現状を診断させてください。

※ LINEで簡単にご相談いただけます

マルウェアの不安を 今すぐ解消しませんか?

リバースハックはWordPress専門のセキュリティチームです。 マルウェア駆除から再発防止まで、ワンストップでサポートします。 まずはお気軽にご相談ください。

最短即日対応
緊急時も迅速に対応
再感染30日保証
駆除後の安心サポート
相談無料
LINEで気軽に相談OK

※ 相談は無料です。お見積もりだけでもお気軽にどうぞ。

この記事をシェア