目次
「WordPressが重い…変なポップアップが!」もしかしてマルウェア感染?
「最近、自社サイトのアクセスが妙に重い」「訪問者から『変なポップアップが出た』『セキュリティ警告が表示された』と連絡があった」「サーバーの負荷が異常に高い気がする」――もしあなたがこのような状況に直面しているなら、WordPressサイトがマルウェアに感染している可能性を疑うべきです。
マルウェア感染は、サイトの信用失墜、SEO評価の低下、さらには顧客情報の漏洩といった深刻な事態につながりかねません。しかし、適切な手順で対処すれば、サイトを安全な状態に復旧させ、再発を防ぐことは可能です。
あなたのサイトは大丈夫?マルウェア感染の危険なサイン
WordPressサイトのマルウェア感染は、目に見える形で現れることもあれば、水面下で進行していることもあります。以下のような症状に気づいたら、すぐに詳細な調査を始める必要があります。
- サイトのアクセスが急に重くなった、表示速度が著しく低下した
- 訪問者から「変なポップアップが出る」「セキュリティ警告が表示された」という連絡があった
- Google検索結果に、サイト名とは関係のない不審なキーワードが表示されるようになった
- サイトが勝手に別のURLへリダイレクトされるようになった
- 身に覚えのない管理者アカウントがWordPressに追加されている
- サイトから大量のスパムメールが送信されている形跡がある
- サーバーの負荷が異常に高い状態が続いている
- サイトを開くと、画面全体に偽の「Security check」のようなオーバーレイが表示される(不正なJavaScript注入)
特に、最後の「偽のSecurity check」のような症状は、私の実体験でも確認された深刻な感染のサインです。このような症状が見られた場合、一刻も早い対応が求められます。
【症状別】WordPressマルウェア感染診断チャート
具体的な症状から、考えられるマルウェアの種類や被害の深刻度を推測してみましょう。
| 症状 | 考えられるマルウェアの種類・被害 | 深刻度 |
|---|---|---|
| サイトが勝手に別のサイトへ転送される(リダイレクト) | 不正なリダイレクトスクリプト、悪質な広告表示 | 高 |
| Google検索結果に不審なキーワードが表示される | SEOスパム、サイト改ざん | 高 |
| サイト訪問時にブラウザのセキュリティ警告が表示される | マルウェア検出、不正なコンテンツ配信 | 高 |
| サイトが異常に重い、サーバー負荷が高い | 不正なプロセス実行、DDoS攻撃の踏み台 | 中〜高 |
| 身に覚えのない管理者アカウントが増えている | バックドア、不正アクセス | 高 |
| サイトのコンテンツが書き換えられている、見慣れない広告が出る | サイト改ざん、情報操作、不正なJavaScript注入 | 高 |
| サイトからスパムメールが大量に送信されている | スパムボット、メールサーバー悪用 | 中〜高 |
| WordPressのログインができない、パスワードが変更された | 不正アクセス、アカウント乗っ取り | 高 |
| FTPやファイルマネージャーで不審なファイルが見つかる | Webシェル、バックドア、マルウェア本体 | 高 |
これらの症状は、WordPressがマルウェアに感染した時の危険なサインです。特に「高」と示された症状が見られる場合は、サイトが深刻な危機に瀕している可能性があります。
【実録】私のWordPressサイトが「全面侵害」された日:検出から封じ込めまで
ここでは、私が実際に経験したWordPressサイトのマルウェア感染と、その緊急対応の記録を共有します。これは単なる一部の改ざんではなく、サイト全体が攻撃者の意図通りに操作できる状態、つまり「全面侵害(Active Compromise)」まで至った深刻な事例です。
突然の異変…アクセスログから見えた「全面侵害」の兆候
ある日、私が管理するとある宿泊予約サイトで、訪問者から「サイトを開くと変な画面が出る」という連絡を受けました。すぐにサイトを確認したところ、サイトのコンテンツが表示される前に、画面全体を覆う偽の「Security check」画面がオーバーレイ表示されるという異常な事態が発生していました。
これは不正なJavaScriptがサイトに注入されている証拠です。アクセスログを精査すると、普段見慣れないリクエストや、特定のファイルへの不審なアクセスが急増していることに気づきました。この時点で、これは単なる軽微な改ざんではないと直感しました。
検出された脅威:潜伏する「76個のバックドア」と偽装プラグイン
詳細な調査の結果、以下のような複数のWebシェルやバックドアがサイト全体に散布されていることが判明しました。これらは攻撃者がサーバー上で任意のコマンドを実行できる状態を示す、極めて危険な兆候です。
- サイトのルートディレクトリにWSO webshellが設置:パスワード保護されたWebシェルが公開到達可能な状態で存在しており、攻撃者がいつでもサイトを操作できる「裏口」となっていました。
- 拡散型バックドア「connector_new.php」が76個も散布:正規プラグインの深い階層に、同名のバックドアファイルが大量に散布されていました。これは駆除の取りこぼしを狙う、非常に巧妙な手口です。
- 自己隠蔽する偽装プラグインが3個:`wp-content/plugins/`配下には、一見すると正規のプラグインに見える偽装プラグインが存在し、これらはWordPressの管理画面から自己を隠蔽する機能を持っていました。これらがフロントエンドに不正JSオーバーレイを注入していました。
- 不正な管理者アカウントが5件:身に覚えのない管理者アカウントが複数作成されており、攻撃者が自由にサイトを操作できる状態でした。
- WordPressコアファイルの改ざん:`wp-login.php`や`wp-includes/user.php`など、WordPressのログイン処理やユーザー管理に関わる重要なコアファイルが多数改ざんされていました。
- 全訪問者への不正JS注入:前述の偽「Security check」画面を配信する不正なJavaScriptが、サイトの全ページに注入されていました。このJSは、特定の外部サイト(`cloudflare-check.net`や特定のIPアドレス)へ通信を試みるものでした。

なぜ感染したのか?根本原因とリスク評価
これらの脅威が検出された後、根本的な原因を特定する作業に入りました。主な原因として推定されたのは以下の点です。
- WordPress 6.0.13とPHP 7.4のサポート切れ:使用していたWordPress本体とPHPのバージョンがすでにサポート期間を終えており、既知の脆弱性が多数存在していました。これが初期侵入の主要な経路となった可能性が高いです。特に、`wp-file-manager` 7.2(既知の重大なRCE脆弱性を持つ)のような脆弱なプラグインがインストールされていたことも、侵入を許した大きな要因と推測されます。
- ファイル権限の問題:Webサーバーの実行ユーザーが必要以上にサイトファイルに書き込み可能な状態だったため、脆弱性を悪用して任意ファイルが書き込まれ、Webシェル設置から水平展開へとつながったと考えられます。
この状況は、機密性、完全性、可用性のすべてにおいて「高」リスクと評価されました。データベースの認証情報や顧客データが窃取された可能性、サイト内容の任意改変、そしてSEO評価の毀損や検索圏外化のリスクが現実のものとなっていたのです。さらに、同一サーバーに同居する他のサイトへの横展開も懸念されました。
緊急対応!サイトを「封じ込め」るまでの具体的なステップ
この深刻な状況を受け、私はまず「封じ込め」を最優先で実施しました。一般的な手順では、Wordfenceのようなセキュリティプラグインを後入れしてスキャンすることが推奨されることもありますが、Webシェルで侵入路が開いたままでは、取りこぼしや再感染のリスクが高いと判断しました。
そのため、以下の手順でサイトの実行環境を停止し、悪性ファイルを隔離しました。
- 注入プラグインの無効化と隔離:不正なJavaScriptを配信していた偽装プラグイン3個を、WordPressの設定から無効化し、さらにそのディレクトリごとドキュメントルート外の隔離領域へ移動しました。
- 悪性ファイルの一斉隔離:サイトルートのWSO webshell、不正なタイムスタンプ名の投下バックドア9個、そして76個もの`connector_new.php`を含む、合計89件の悪性ファイルをドキュメントルート外の隔離ディレクトリへ移動し、実行できない状態にしました。この際、ファイルのSHA256ハッシュを記録し、証拠保全も行いました。
- 不正管理者アカウントの削除:身に覚えのない5件の管理者アカウントをデータベースから削除し、攻撃者がログインできないようにしました。
- 全ユーザーセッションの破棄:攻撃者が保持している可能性のあるセッションCookieを無効化するため、全ユーザーのセッションを強制的に破棄しました。
- キャッシュの全削除:サイト上に残っていた古いキャッシュをすべて削除し、不正なコンテンツが再配信されないようにしました。
これらの緊急対応により、フロントエンドの不正JSは消滅し、サイトはメンテナンス画面を表示する状態となり、ひとまず「全面侵害」の状態から脱することができました。しかし、これはあくまで「封じ込め」であり、根本的な駆除と再発防止にはさらなるステップが必要でした。
WordPressマルウェア駆除の具体的な方法:手動・プラグイン・専門サービスを徹底比較
マルウェア感染が確認された場合、どのように駆除を進めるべきでしょうか。ここでは、緊急時の対応から、手動での駆除、プラグインの利用、そして専門サービスへの依頼まで、それぞれの方法を比較検討します。
【緊急時】まずはこれ!サイトを安全にオフライン化する手順
マルウェア感染が判明したら、まず行うべきはサイトのオフライン化です。これにより、さらなる被害拡大や訪問者への影響を防ぎます。
- サイトのバックアップを取得する:感染した状態であっても、現状のファイルを全てバックアップしておきましょう。これは、後の原因究明や万が一の復旧作業で必要になる可能性があります。
- メンテナンスモードに切り替える:WordPressのプラグイン(例: WP Maintenance Mode)を利用するか、`wp-config.php`に`define(‘WP_DEBUG’, true);`の前に`define(‘WP_TEMP_MAINTENANCE’, true);`を追加してメンテナンスモードにすることで、訪問者にはメンテナンス画面が表示され、サイトへのアクセスを一時的に遮断できます。
- サーバー側でアクセス制限をかける:`.htaccess`ファイルでIPアドレス制限をかける、またはサーバーパネルからサイトを停止するなどの方法で、外部からのアクセスを完全に遮断することも有効です。
手動でマルウェアを駆除する手順(FTP/データベース操作)
手動での駆除は、専門知識が必要ですが、感染の全容を把握し、確実に除去するためには非常に有効な手段です。
- クリーンなバックアップの準備:もし感染前の確実にクリーンなバックアップがあれば、それを復元するのが最も確実です。なければ、現在の感染サイトをバックアップし、作業用として利用します。
- 感染箇所の特定:FTPクライアントやサーバーのファイルマネージャーを使用し、不審なファイルや改ざんされたファイルを探します。特に、私の実体験でも発見されたようなサイトルートのWebシェル(`wso.php`など)、偽装プラグイン、正規プラグインの深い階層に散布されたバックドア(`connector_new.php`など)、不正なタイムスタンプ名のファイル、改ざんされたWordPressコアファイル(`wp-login.php`、`wp-includes/user.php`など)などを重点的に確認します。`wp core verify-checksums`コマンドは、WordPressコアファイルの改ざんを検出するのに役立ちます。また、マルウェアチェックと駆除―WordPress(ワードプレス)の…でも言及されているように、データベースのダンプに対してもマルウェアチェックを行う必要があります。
- 悪性ファイルの削除・隔離:特定した悪性ファイルを削除するか、実行できない隔離ディレクトリへ移動します。削除前には、そのファイルが本当に不要なものか確認することが重要です。
- データベースのクリーンアップ:不正な管理者アカウントの削除、不審な投稿・コメントの削除、`wp_options`テーブル内の不審なエントリの削除などを行います。
- WordPressコアのクリーン再構築:WordPress本体を最新バージョンに更新し、公式ファイルで上書きすることで、改ざんされたコアファイルを排除します。すべてのプラグインも公式から最新版を再取得して入れ替えることが推奨されます。
- 認証情報の変更:すべてのWordPressユーザーのパスワードを再発行し、`wp-config.php`のSALT/秘密鍵を再生成、データベースのパスワードも変更します。SSH鍵や関連APIキーも見直しましょう。
手動駆除は非常に手間がかかり、専門知識がないと難しい作業です。不安な場合は、無料ツールと手動対応のすべて WordPressマルウェア感染対策ガイドなどを参考にしながら慎重に進めてください。
無料のマルウェア対策プラグインでスキャン・駆除
手軽にサイトをスキャンできる無料のセキュリティプラグインも存在します。
- Theme Authenticity Checker (TAC):テーマ内の不審なコードを検出します。
- Anti-Malware Security and Brute-Force Firewall:マルウェアのスキャンと駆除、ブルートフォース攻撃対策を行います。
ただし、私の実体験のようにWebシェルで侵入路が開いた状態では、後入れのスキャンツールでは取りこぼしや再感染のリスクが高いため、まずは封じ込めを優先すべきです。無料プラグインは、あくまで軽微な感染の早期発見や、予防策としての定期スキャンに限定して利用するのが賢明でしょう。
有料セキュリティプラグイン・ツールで徹底駆除&予防
より高度な検出能力と駆除機能、そして予防策を求めるなら、有料のセキュリティプラグインやツールが有力な選択肢となります。
- Wordfence Security (Premium):リアルタイムのスキャン、Webアプリケーションファイアウォール(WAF)、ブルートフォース攻撃対策など、包括的なセキュリティ機能を提供します。
- Sucuri Security (Premium):マルウェアスキャンと駆除、WAF、DDoS攻撃対策、SEOスパム対策など、広範な保護が特徴です。専門家による駆除サポートも含まれるプランもあります。
これらの有料ツールは、手動駆除の困難さを補完し、将来的な再感染リスクを低減するための強力な味方となります。

【最終手段?】専門の駆除サービスに依頼すべきケースと費用感
私の実体験のような「全面侵害」のケースや、手動での駆除が困難な場合、あるいは感染範囲が広範で自信がない場合は、迷わず専門の駆除サービスに依頼することを強く推奨します。
専門サービスは、以下のようなメリットがあります。
- 確実な駆除:高度な知識とツールで、見つけにくいバックドアや隠蔽されたマルウェアも徹底的に駆除します。
- 原因究明:初期侵入経路を特定し、再発防止策を具体的に提案してくれます。
- 迅速な対応:緊急時に迅速にサイトを復旧させ、ビジネスへの影響を最小限に抑えます。
- 証拠保全:フォレンジック調査の観点から、証拠となるファイルを適切に保全してくれます。
費用は感染の深刻度やサイト規模によりますが、数万円から数十万円程度が一般的です。例えば、サーバー上のマルウェア駆除と不要なサイトの削除のようなサービス提供元は「100万件以上のマルウェアデータや、数万件の攻撃パターンの分析」を行っていると主張しており、その専門性は非常に高いと言えるでしょう。サイトの信用失墜やSEO評価への悪影響、ビジネス機会の損失を考慮すれば、専門サービスへの投資は決して高くありません。
駆除後の最終確認とSEOへの影響、そして再発防止策
マルウェアを駆除し、サイトがクリーンな状態に戻ったとしても、それで終わりではありません。最終確認と、二度と感染しないための対策が不可欠です。
サイト復旧後の最終確認リスト
- サイトの動作確認:すべてのページが正しく表示されるか、機能が正常に動作するかを確認します。特に、ログイン機能やフォームなどが正常に機能するかを重点的にチェックしましょう。
- Google Search Consoleの確認と報告:Google Search Consoleに登録している場合、セキュリティの問題が解決されたことをGoogleに報告します。サイトがマルウェアに感染すると、Googleから警告が表示されたり、検索結果から除外されたりすることがあります。適切な報告を行うことで、サイトの評価回復を早めることができます。
- SEOへの影響チェック:検索順位やインデックス状況に変化がないか監視します。一時的な順位低下は避けられないかもしれませんが、適切な対応と再発防止策を講じれば回復は可能です。

二度と感染しないために!WordPressセキュリティ強化の鉄則
私の実体験から得られた教訓を含め、再発防止のためのセキュリティ強化策は以下の通りです。
- WordPress本体・プラグイン・テーマの最新化:今回、WordPress 6.0.13やPHP 7.4のサポート切れが根本原因の一つでした。常に最新バージョンに保ち、既知の脆弱性を放置しないことが最も重要です。自動更新を有効にすることも検討しましょう。
- PHPバージョンの最新化:WordPress本体と同様に、PHPも最新のサポートされているバージョンに更新します。
- 強力なパスワード設定と二段階認証:すべてのユーザーアカウントで、複雑なパスワードを設定し、可能であれば二段階認証(2FA)を導入します。
- ファイル権限の適切な設定:Webサーバーの実行ユーザーが必要以上にファイルに書き込みできないよう、ファイルやディレクトリのパーミッションを適切に設定します。
- WAF(Web Application Firewall)の導入:外部からの不正なアクセスや攻撃をブロックするWAFを導入することで、サイトを多層的に保護します。
- 信頼できるセキュリティプラグインの導入:Wordfence SecurityやSucuri Securityなどの有料セキュリティプラグインを導入し、定期的なスキャンと監視を行います。
- 定期的なバックアップ:万が一の事態に備え、サイト全体のバックアップを定期的に取得し、安全な場所に保管しておきます。
- 不要なプラグイン・テーマの削除:使用していないプラグインやテーマは、脆弱性の温床となる可能性があるため、削除しておきましょう。
- アクセスログの監視:不審なアクセスがないか、定期的にサーバーのアクセスログを確認する習慣をつけましょう。
- SALT/秘密鍵の更新:`wp-config.php`に記述されているSALT/秘密鍵は、WordPressの認証セキュリティを強化する重要な要素です。定期的に更新することで、既存のセッションを無効化し、不正アクセスのリスクを低減できます。
これらの対策を講じることで、WordPressセキュリティ対策 -脆弱性とマルウェア攻撃で述べられているような脆弱性からの攻撃リスクを大幅に低減できます。

まとめ:WordPressマルウェア感染は早期発見・早期対応が命
WordPressサイトのマルウェア感染は、サイトの信用失墜、SEO評価の低下、さらにはビジネス機会の損失につながる深刻な問題です。しかし、この記事で解説したように、適切な知識と手順を踏めば、感染から復旧、そして再発防止まで対応することは可能です。
特に、私の実体験で明らかになったように、Webシェルや大量のバックドアが存在する「全面侵害」のケースでは、早期発見と迅速な封じ込め、そして専門的な知識に基づいた徹底的な駆除が不可欠です。
もしあなたのサイトがマルウェア感染の疑いがあるなら、まずは本記事の診断チャートで症状を確認し、緊急の封じ込め措置を検討してください。手動での駆除が難しいと感じる場合や、より確実な対策を求める場合は、有料のセキュリティプラグイン導入や専門の駆除サービスへの依頼も視野に入れるべきでしょう。
何よりも重要なのは、「もしかして?」と感じたときにすぐに行動を起こすこと。そして、日頃からのセキュリティ対策を怠らないことです。安全で健全なWordPressサイト運営のために、今日からできる対策を始めていきましょう。

コメント