2026年5月20日
2026年5月20日
Wordfenceのスキャンでマルウェアを検出・駆除する方法|スキャンの種類と結果の対処
Wordfence のスキャンは、WordPress 本体・プラグイン・テーマのファイルを公式の配布ファイルと照合し、改ざんされたファイル、既知のマルウェアのパターン、不審なコード、更新が必要なプラグインなどを一覧にします。この記事の画面の項目名は、2026年11月時点で WordPress.org で配布されている Wordfence 9.1.0 のプラグインのファイルで確認したものです。画面は英語の項目名で書いています。日本語で表示されている場合は表記が異なることがあります。
無料版と有料版の違い(スキャンに関係するところ)
- マルウェアのシグネチャー(検出パターン)とファイアウォールのルールは、無料版では有料版より30日遅れて届きます。新しいマルウェアは、無料版では見つからないことがあります。
- 無料版でもスキャンは自動で定期的に実行されます。実行の時刻を自分で決める「Manually schedule scans」は有料版の機能です。
- スパム送信元の IP の確認、サイトがブロックリストに載っていないかの確認など、一部の項目は有料版だけで実行されます。
スキャンを実行する
管理画面の「Wordfence → Scan」を開き、「Start New Scan」を押します。スキャンの進み具合が段階ごとに表示され、終わると下に結果が並びます。サイトの大きさやサーバーの性能によって、数分から数十分かかります。
スキャンの種類を選ぶ
「Wordfence → Scan」の画面にある「Scan Options and Scheduling」で、スキャンの種類(Scan Type)を選べます。
| 種類 | 内容 |
|---|---|
| Limited Scan | サーバーの負荷を抑えた簡易なスキャン。検出できる範囲は狭い |
| Standard Scan | 初期設定。WordPress 本体のファイルの照合、マルウェアのシグネチャー、ファイルの中身の不審なコード、投稿・コメント内の危険な URL などを確認する |
| High Sensitivity | Standard に加えて、テーマとプラグインのファイルを WordPress.org の配布版と照合し、WordPress の外のファイルや画像ファイルも実行ファイルとして調べる。誤検知が増えることがある |
| Custom Scan | 個々の項目を自分で選ぶ |
感染が疑われるときは、High Sensitivity で一度スキャンします。High Sensitivity で有効になる主な項目は次のとおりで、Custom Scan で個別に選ぶこともできます。
- Scan theme files against repository versions for changes(テーマを配布版と照合)
- Scan plugin files against repository versions for changes(プラグインを配布版と照合)
- Scan files outside your WordPress installation(WordPress の外のファイルも調べる)
- Scan images, binary, and other files as if they were executable(画像などに偽装した PHP を調べる)
スキャンでサーバーが重くなる場合は、「Use low resource scanning」をオンにすると、時間をかけて負荷を下げながら実行します。
結果の重要度と読み方
結果は重要度ごとに「Critical」「High」「Medium」「Low」に分かれます。プラグインのファイルで確認できた主な例は次のとおりです。
| 重要度 | 主な例 | 対応 |
|---|---|---|
| Critical | 改ざんされた・不審なファイル、Google のブロックリストに載っている、WordPress.org から削除されたプラグインを使っている | すぐに内容を確認して対処する |
| High | 脆弱性が知られているプラグイン、WordPress 本体の更新、本来無いはずのファイル、投稿の中の危険な URL、弱いパスワードの利用者、身に覚えのない管理者アカウント | 早めに対処する |
| Medium | プラグインやテーマの更新がある、長く更新されていないプラグイン | 計画的に更新・入れ替えを検討する |
| Low | コメントの中の不審な URL など | 内容を見て判断する |
各結果を開くと、ファイルのパスと理由が表示されます。WordPress 本体・プラグイン・テーマのファイルが配布版から変更されている場合は「View Differences」で差分を、その他のファイルなら「View File」で中身を確認できます。
結果ごとの対処
| 操作 | 使う場面 |
|---|---|
| Repair | WordPress 本体(または配布版と照合したプラグイン・テーマ)のファイルが変更されている場合に、配布版の内容に戻す |
| Delete File | 本来は無いはずのファイル(不審な PHP ファイルなど)を削除する |
| Ignore(Ignore Until File Changes / Always Ignore) | 自分で加えた変更など、問題でないとわかっているものを一覧から外す |
| Mark as Fixed | 自分で対処したものを解決済みにする |
まとめて処理する「Repair All Repairable Files」「Delete All Deletable Files」もありますが、削除したファイルは元に戻せません。実行する前にサイト全体(ファイルとデータベース)のバックアップを取り、どのファイルが対象になるかを一覧で確認してください。wp-config.php やテーマの functions.php のような、サイトの動作に必要なファイルに不審なコードが入っている場合は、ファイルを削除せず、不審な部分だけを取り除きます。
WP-CLI でファイルを照合する
サーバーで WP-CLI が使える場合は、Wordfence とは別の方法でも改ざんを確認できます。
# WordPress 本体のファイルを公式のチェックサムと照合する
wp core verify-checksums
# WordPress.org で配布されているプラグインを照合する(有料プラグインは対象外)
wp plugin verify-checksums --all
# 本体のファイルを上書きして入れ直す(wp-content は上書きしない)
wp core download --force --skip-content
wp core download --force は、ファイルを上書きするだけで、攻撃者が追加したファイルは消しません。照合の結果で「本来は無いファイル」と出たものは、内容を確認して削除します。テーマのチェックサムを照合するコマンドは WP-CLI にはないので、テーマは配布元から入れ直して比べます。
手作業で不審なファイルを探す
Wordfence の結果とあわせて、次のような検索で不審なファイルを探せます。結果に出たファイルが、すべてマルウェアとは限りません(正規のプラグインでも base64_decode を使うことがあります)。中身を見て判断します。
# uploads フォルダーの中の PHP ファイル(通常は画像などだけが入る)
find wp-content/uploads -type f \( -name '*.php' -o -name '*.phtml' \)
# よく使われる難読化の形を含む PHP ファイル
grep -rlE 'eval\s*\(\s*(base64_decode|gzinflate|str_rot13)' wp-content --include='*.php'
# 最近7日以内に変更された PHP ファイル
find . -type f -name '*.php' -mtime -7
感染が見つかったあとにすること
ファイルを直すだけでは、盗まれたパスワードやバックドアから再び侵入されることがあります。次の順に進めます。
- ホスティング会社の管理画面のパスワード、FTP・SFTP のパスワードを変える。
- データベースのユーザーのパスワードを変える(ホスティングの管理画面か MySQL で変更してから、
wp-config.phpのDB_PASSWORDを同じ値に書き換える)。 - WordPress のログイン用の鍵を作り直し、ログイン中のすべての利用者をログアウトさせる。
- 管理者のパスワードを作り直し、知らない管理者アカウントがあれば削除する。
# 3. 認証用の鍵とソルト(wp-config.php)を作り直す
wp config shuffle-salts
# 2. データベースのパスワードを変えたあとで、wp-config.php を書き換える
wp config set DB_PASSWORD '新しいデータベースのパスワード'
# 4. 管理者の一覧を確認し、パスワードを作り直す(変更の通知メールが届く)
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
wp user reset-password $(wp user list --role=administrator --format=ids)
wp config set DB_PASSWORD は wp-config.php を書き換えるだけで、データベース側のパスワードは変えません。先にデータベース側を変えてから実行してください。
その後、Wordfence のスキャンをもう一度実行して、結果に問題が残っていないことを確認します。対処の全体の流れは「WordPressのマルウェアを検出・削除する方法」でも説明しています。
Google の「危険なサイト」警告を解除する
Google がサイトを危険と判断すると、検索結果やブラウザーに警告が表示されます。解除は Google Search Console で依頼します。
- Search Console でサイトの所有権を確認する(まだの場合)。
- 「セキュリティと手動による対策」の「セキュリティの問題」を開き、検出された問題と例の URL を確認する。
- 一覧のすべての問題を、すべてのページで直す。
- 「審査をリクエスト」を押し、何が起きていて、何をどう直したかを書いて送る。
Google のヘルプでは、審査には数日から数週間かかるとされています。結果が出る前に、同じ依頼を出し直さないでください。
注意点
- スキャンの結果に出なかったからといって、感染が無いとは言い切れません。無料版では新しいマルウェアのシグネチャーが30日遅れて届くため、他の方法(WP-CLI の照合、ファイルの更新日時の確認)も組み合わせます。
- 共用サーバーで感染が見つかった場合は、同じアカウントの別のサイトも調べ、ホスティング会社にも連絡します。
- 復旧後は、使っていないプラグインとテーマを削除し、残したものを最新に保ちます。