WordPressサイトがマルウェアに感染したり、第三者によって不正改ざんされたりする被害は、企業のWebサイト運用において非常に深刻なリスクです。検索結果に不審な日本語スパムが表示されたり、アクセスしたユーザーが怪しい外部サイトへリダイレクトされたりした場合、即座に適切な復旧対応を行わなければ、検索エンジンのペナルティやブランド毀損、個人情報漏洩などの二次被害へと拡大します。
結論として、WordPressのマルウェア感染から安全に復旧するためには、「①サイトの一時非公開・二次被害防止」「②被害範囲の正確な特定と不審コード・ファイルの除去」「③データベースのクリーンアップ」「④すべての認証情報(パスワード・APIキー)の更新」「⑤バックアップとWAF等の再発防止策の実装」という手順を正確に踏むことが不可欠です。本記事では、自社サイトが攻撃を受けた際の具体的な確認手順から、安全な駆除・復旧方法、再発を防ぐセキュリティ対策までをプロの視点で網羅的に解説します。
WordPressサイトがマルウェア感染した際の主な症状と確認方法
マルウェア感染やWebサイトの改ざんは、一目で気づくものから管理者すら長期間気づかない潜在的なものまで多岐にわたります。異常を感じた場合は、まず自社サイトで以下のような症状が発生していないか確認してください。
1. リダイレクトハック(不審な外部サイトへ強制転送される)
サイトにアクセスした際、自動的に海外のギャンブルサイトや不正なソフトウェアのダウンロードページ、偽の警告画面等へ転送される現象です。スマートフォンからのアクセス時のみ発動するようスクリプトが組まれているケースや、Googleなどの検索エンジン経由のアクセス(HTTPリファラがGoogle)の場合のみ発動する巧妙な仕組みが多いため、PCの直接アクセスだけでは判明しないことがあります。
2. 検索結果のタイトルや説明文の改ざん(SEOスパム・SEOハック)
Googleなどの検索結果において、自社のサイト名やページタイトルの代わりに、ブランド品や医薬品、違法コンテンツに関する不自然な日本語・外国語のテキストが表示される症状です。これは「SEOスパム」と呼ばれ、サイト内に大量のスパムページや隠しリンクが自動生成されることで発生します。
3. 不審なファイルや管理権限のないユーザーの追加
WordPressの管理画面にログインした際、身に覚えのない管理者アカウントが勝手に追加されているケースがあります。また、サーバー内のディレクトリに「index.php」や「.htaccess」に酷似した名称の不審なファイル(例: wp-login-code.php、info.phpなど)が作成されたり、テーマやプラグインのCoreファイル(wp-config.phpやfunctions.php)に暗号化されたPHPコード(eval(base64_decode(…))など)が埋め込まれたりします。
4. サーバー会社からの警告メール・アクセス制限
感染したサイトがスパムメールの送信台車(オープンリレー)として悪用されたり、他サイトへの攻撃拠点として大量のトラフィックを発生させたりした場合、利用しているレンタルサーバー会社から「不正アクセス検知によるアカウントの一時凍結・アクセス制限」の連絡が届きます。
マルウェア感染が発生する主な原因
WordPressサイトが攻撃を受ける原因の90%以上は、システムや拡張機能の管理不足および認証情報の甘さに起因します。原因を特定し正しく理解することが、今後の再発防止につながります。
古い本体・プラグイン・テーマの脆弱性の放置
WordPressはオープンソースソフトウェアであり、脆弱性(セキュリティ上の欠陥)が発見されると世界中で情報が共有されます。本体プログラム(Core)をはじめ、導入しているプラグインやテーマを長期間アップデートせずに放置していると、公知の脆弱性を突いた自動攻撃ボットの標的となります。
安全性の低いプラグイン・野良テーマの使用
公式サイト(WordPress.org)以外からダウンロードした未検証のテーマやプラグイン、あるいは有料テーマの海賊版(ヌル化プラグイン・テーマ)には、最初からバックドア(裏口)やマルウェアが仕込まれているケースが多発しています。信頼できる開発元以外からの入手は厳禁です。詳細はWordPressプラグインの選び方とセキュリティリスク回避でも解説しています。
脆弱なログインパスワードと管理画面の未対策
「admin」というユーザー名や「123456」「password」といった推測しやすい単純なパスワードを使用している場合、総当たり攻撃(ブルートフォースアタック)や辞書攻撃によって短時間で突破されます。また、ログインURL(/wp-admin/ や /wp-login.php)がデフォルトのまま放置されていると、ターゲットとして容易に狙われます。
サーバーアカウントやFTP情報の漏洩
Web制作担当者や運用者のPCがウイルスに感染し、FTPクライアントに保存されていた接続情報やサーバー管理画面のログイン情報が外部に流出することで、サーバー内のファイルが直接書き換えられる事例も存在します。
マルウェア感染時の緊急対応・復旧手順(5つのステップ)
マルウェアに感染したと判明した、または疑いがある場合、迅速かつ論理的な順序で復旧作業を進める必要があります。対応手順を誤ると、バックアップを汚染したり、復旧後に即座に再感染したりする恐れがあります。
STEP 1:サイトの一時非公開(アクセス制限・503エラー化)
被害の拡大および訪問者への悪影響(ウイルスの二次感染やフィッシング詐欺被害)を防ぐため、サイトを一時的にアクセス制限します。サーバーの.htaccessファイルの設定やレンタルサーバーのWebアクセス制限機能を使い、特定のIPアドレス(作業者のIP)のみアクセスを許可し、一般ユーザーには「503 Service Unavailable」を返す設定に変更します。
STEP 2:現状の全バックアップの取得(ログ・ファイル・DB)
復旧作業を行う前に、現在のサーバー上のすべてのファイル(WordPress構成ファイル、画像、テーマ、プラグイン)およびMySQLデータベース(.sql)をローカル環境へバックアップします。これは原因解析やファイル比較を行うために必要なプロセスです。安全なバックアップ方法についてはWordPressサイトのバックアップ手順と復元方法をご参照ください。
STEP 3:感染箇所の特定と不審コード・ファイルのクリーンアップ
マルウェアの駆除には、大きく分けて「手動による不審ファイルの削除・差分比較」と「クリーンな新規環境へのデータ移行」の2つのアプローチがあります。
- コアファイルの差し替え:WordPress公式サイトから同一バージョンのWordPress本体をダウンロードし、「wp-content」フォルダおよび「wp-config.php」を除くすべてのファイルを上書き・差し替えます。
- プラグイン・テーマの全再インストール:wp-content/pluginsおよびwp-content/themes内の既存ファイルを削除し、公式サイトや正規購入元から再ダウンロードしたクリーンなファイルに差し替えます。自社オリジナルのテーマの場合は、過去の安全なバックアップとの差分(Git等の管理ツールやDiffツール)を確認し、不正コードを抽出・除去します。
- uploadsディレクトリの精査:画像等を格納する「wp-content/uploads/」内には、基本的にPHPファイルが存在してはなりません。uploads内にある「.php」「.php5」「.phtml」などの実行ファイルはマルウェアである可能性が高いため、削除します。
- データベース(DB)の除菌:wp_optionsテーブル(siteurlやhomeの値)、wp_postsテーブル(投稿本文内の不正スクリプトやスパムリンク)、wp_usersテーブル(不正な管理者アカウント)を確認・清掃します。
STEP 4:全パスワードの変更とセキュリティキー(SALT)の更新
ファイルのクリーンアップが終わっても、攻撃者にログイン情報が保持されていては再侵入されます。以下の認証情報をすべて強力な文字列(16文字以上のランダム文字列)に変更します。
- WordPressの管理者ユーザー(すべてのユーザーのパスワード変更)
- サーバー(cPanel/DirectAdmin/レンタルサーバー管理画面)のパスワード
- FTP/SFTP/SSHアカウントのパスワード
- データベース(MySQL)接続パスワード
また、「wp-config.php」内にある認証用ユニークキー(AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY等)をGoogle/WordPress公式の秘密鍵生成サービス等を利用して刷新します。これにより、保存されているすべてのセッションクッキーが無効化され、攻撃者のログイン状態を強制終了できます。
STEP 5:動作確認およびGoogleへの再審査リクエスト
サイトの安全性が確認できたらアクセス制限を解除します。Google Safe Browsingやウイルス対策ソフトによって「危険なサイト」として警告が出ている場合は、Google Search Consoleから「セキュリティ問題」の項目を開き、対処内容を記載した上で「再審査リクエスト」を送信します。
自社対応と専門会社への外注の比較と判断基準
WordPressのマルウェア駆除は、Webマーケティング担当者や社内のIT担当者のみで完結させることが難しい場合が多くあります。以下に自社で対応する場合と専門業者に外注する場合の比較をまとめました。
| 比較項目 | 自社で対応する場合 | 専門会社(Web制作・保守運用会社)に外注 |
|---|---|---|
| コスト | 社内人件費のみ(初期費用は発生しない) | 作業調査費用・復旧費用が発生 |
| 復旧の確実性 | 専門知識がない場合、バックドアを見落とし再発するリスクが高い | コード解析・データベース解析を行い、根絶と再発防止まで対応 |
| 対応スピード | 調査や手順の確認に時間がかかり、障害期間が長引きやすい | ノウハウに基づき、最短数時間〜数日で迅速に緊急対応 |
| 二次リスク | 操作ミスによりデータベースの破損やサイトの完全停止が起こるリスク | 事前検証環境の構築やバックアップ管理のもと安全に作業 |
自社内にWordPressの内部構造、PHPコード解析、SSH/FTP操作、データベース(SQL)の直接操作に精通したエンジニアがいない場合は、不完全な駆除によって被害を繰り返す恐れがあるため、プロのセキュリティ・保守会社に相談することを推奨します。自社サイトの継続的な保守管理についてはホームページの保守運用もあわせてご確認ください。
二度と改ざんされないための再発防止策とセキュリティ強化
復旧作業が完了した後は、二度と不正アクセスやマルウェア感染を許さない堅牢な運用体制を構築することが重要です。
1. 本体・プラグイン・テーマの定期的なアップデート
セキュリティパッチが発行されたら、速やかに適用するルールを定めます。マイナーアップデートは自動更新を有効にし、メジャーアップデートや主要プラグインの更新は検証環境で動作確認を行った上で定期的に実施します。
2. 管理画面のログイン保護(二段階認証・ログインURL変更)
ログイン画面への攻撃を防ぐため、以下の対策を講じます。
- ログインURLの変更(/wp-admin/ から予測不可能な文字列へ変更)
- 二段階認証(2FA:Google Authenticator等のアプリ連携)の導入
- 一定回数以上ログインに失敗したIPアドレスを自動ブロック(ログイン試行制限)
- 管理画面へのアクセスIP制限(社内固定IPからの接続のみに限定)
詳しい実装手順はWordPress管理画面のセキュリティ対策完全ガイドで詳しく解説しています。
3. サーバーレベルでのセキュリティ強化(WAFの導入)
WAF(Web Application Firewall)を導入することで、SQLインジェクションやクロスサイトスクリプティング(XSS)、パラメータ改ざんなどのWebアプリケーション層への攻撃をリアルタイムで検知・遮断できます。主要なレンタルサーバー(エックスサーバー、さくらのレンタルサーバ、ConoHa WINGなど)では標準機能として提供されているため、必ず有効化してください。
4. ディレクトリ・ファイルのパーミッション最適化
サーバー上のファイルやフォルダに対する適切なアクセス権限(パーミッション)を設定します。標準的な推奨値は以下の通りです。
- フォルダ(ディレクトリ):755 または 705
- 通常のファイル:644 または 604
- wp-config.php(重要設定ファイル):600 または 400(サーバー仕様に応じた最も厳しい設定)
よくある質問(FAQ)
Q1. バックアップデータもマルウェアに感染している場合はどうすればよいですか?
過去のバックアップデータにもすでに不審なコードが紛れ込んでいる場合、そのバックアップをそのまま連動復元するとマルウェアも復活してしまいます。この場合は、最も古いバックアップファイルを複数検証して感染していない時点のものを特定するか、データベースの純粋なコンテンツデータ(投稿本文・固定ページ文章)のみを取り出し、新規に構築したクリーンなWordPress環境へ流し込む手法(コンテンツ再移植)を実施します。
Q2. Googleから「攻撃されているサイト」と警告が出た場合、解除までどのくらいかかりますか?
Google Search Consoleから再審査リクエストを送信後、問題が正しく解決されていると判断されれば、通常数時間〜数日(概ね24〜72時間程度)で赤い警告画面や検索結果の「このサイトは第三者によってハックされている可能性があります」というメッセージが解除されます。ただし、駆除の漏れ(バックドアの残存)があると再審査が不発に終わり、解除が遅れるため確実な対処が必要です。
Q3. セキュリティプラグイン(SiteGuardやWordfence等)を入れればマルウェア対策は完璧ですか?
セキュリティプラグインは非常に有効な防御策ですが、それだけで100%防げるわけではありません。サーバー自体の脆弱性、FTPパスワードの漏洩、あるいはプラグイン自体の未知の脆弱性(ゼロデイ攻撃)に対しては防ぎきれない場合があります。「アップデートの徹底」「堅牢なパスワード運用」「サーバー側WAFの併用」「定期的なバックアップ」といった運用面でのセキュリティ意識を組み合わせることが不可欠です。
Q4. サーバー会社からアクセス制限(アカウント凍結)された場合の初期対応は?
まずサーバー会社からの通知メールに記載されている「検知されたファイルパス」を確認します。その後、サーバー会社の指示に従い、管理者のみがアクセスできる作業用IPアドレスの設定やSSH/FTP経由での調査申請を行い、制限解除に向けた清掃作業のスケジュールと手順を提出して一時的に作業用アクセスを許可してもらいます。
まとめ
WordPressサイトのマルウェア感染や改ざんは、放置すればするほど検索エンジンの評価低下、顧客情報の不法流出、企業としての信用失墜といった甚大な被害をもたらします。
被害が発生した際は、焦らず「サイトの隔離」「影響の特定」「クリーンなファイル・DBへの取り換え」「認証情報の全面刷新」を順序立てて行うことが確実な復旧への最短ルートです。また、復旧後も定期的なアップデートやログイン保護、WAFの利用といった「防御の自動化・日常化」を怠らないことが、企業のWebサイトを安全に運用し続ける鍵となります。
自社での復旧作業に不安がある場合や、再発を防ぐための根本的なセキュリティ診断・保守運用体制の見直しをご検討の際は、専門的なノウハウを持つプロのWeb制作・保守会社へお気軽にご相談ください。
CONTACT
Web制作・SEO・AIOについてお気軽にご相談ください
ホームページ制作・リニューアル、WordPress、SEO・AIO対策、 ECサイト、Web集客、保守・セキュリティなど、 Webに関するご相談を承っています。 「何から相談すればよいかわからない」という段階でもお気軽にお問い合わせください。
