WordPressのマルウェアを完全に除去するには?不正コード削除からDB修復までを解説

WordPressのマルウェアを完全に除去するには?不正コード削除からDB修復までを解説

「不審なファイルを削除したのに、数日後にまた同じ症状が出た」「マルウェア除去ツールをかけたと思ったら、別の場所から再び感染が広がった」「どこまで削除すれば本当にきれいになったと言えるのかわからない」——こうした経験をされている方は少なくありません。

マルウェアの除去は、見つかったファイルをただ削除すればよいというものではありません。ファイル・データベース・権限設定という複数のレイヤーに及ぶ汚染をすべて取り除き、かつ除去後の再感染を防ぐ環境を同時に整えなければ、完全な除去とは言えません。

この記事では、WordPressセキュリティの視点から、マルウェア除去の正しいプロセスを5つの概念に沿って解説します。「削除して終わり」ではなく「完全に清潔な状態に戻す」ための全体像を理解していただくことが目的です。


不正コード削除とファイル復元——「消す」と「戻す」を同時に行う理由

不正コード削除とは、攻撃者がサーバー上のファイルに埋め込んだ悪意あるコードを、正規のファイルを傷つけずに除去する作業のことです。一見シンプルに聞こえますが、この作業には高い精度が求められます。

まず、削除の対象となる不正コードには2種類あります。ひとつは、攻撃者が新たに設置した独立した不正ファイル(バックドアファイル・スパム送信スクリプト・偽装PHPファイルなど)です。これらはファイルごと削除することが基本です。もうひとつは、正規のWordPressファイルの中に追記・埋め込まれた不正コードです。このケースではファイルごと削除してしまうとWordPress自体が動作しなくなるため、ファイルの中から不正な部分だけを正確に取り除く必要があります。

しかし、正規ファイルへの混入コードを「手作業で一部削除する」という方法は、削除漏れが起きやすく、また正規のコードを誤って消してしまうリスクも伴います。そのため専門的な対応では、不正コードが混入した正規ファイルは編集・修正ではなく、公式配布パッケージから取得したクリーンなファイルへの完全置き換えを行います。これがファイル復元です。

ファイル復元とは、改ざんされたファイルを、公式が配布する正規バージョンのファイルで上書きすることで、完全にクリーンな状態に戻す作業のことです。WordPressのコアファイル・テーマファイル・プラグインファイルのいずれについても、公式の配布物と完全に一致する状態に戻すことが除去完了の基準となります。

この「削除」と「復元」を組み合わせることで、不正コードの除去と正規機能の回復を同時に達成します。どちらか一方だけでは不完全です。

また、復元の際に注意すべき点として、テーマのfunctions.phpやカスタマイズが加えられたファイルは、公式のデフォルト状態に戻すと正規のカスタマイズ内容も失われることがあります。そのため、カスタマイズ内容の保護と不正コードの除去を両立させるには、ファイルの差分を精密に判断する専門的な作業が必要です。

▶ 専門家に依頼すると:全ファイルの公式バージョンとのハッシュ照合・差分検出、不正コード混入ファイルの特定、クリーンファイルへの完全置き換え、カスタマイズ内容の保護と不正コード除去の両立を行います。


DB修復——データベースの汚染を根絶する作業

データベースの汚染を根絶する作業

DB修復とは、マルウェア感染によってWordPressのデータベースに書き込まれた不正なデータを検出・削除し、正常な状態に回復させる作業のことです。

ファイルのクリーンアップが完了しても、データベースの汚染が残っている限りサイトは完全に回復しません。以下のような汚染がデータベース内に残存していると、クリーンアップ済みのファイルを通じて再び不正な動作が引き起こされます。

まず、wp_postsテーブル(投稿データ)への不正HTMLコード・外部リンク・JavaScriptの埋め込みが挙げられます。これらが残っていると、ページを表示するたびに訪問者のブラウザに不正スクリプトが送り込まれ続けます。

次に、wp_optionsテーブル(サイト設定値)への改ざんです。サイトURLの書き換えや自動実行スクリプトの登録が残っていると、サイト全体の動作が攻撃者の意図した方向に誘導され続けます。

さらに、wp_usersテーブル・wp_usermetaテーブルへの不正ユーザーの残存です。不正ユーザーのレコードがデータベースに残っている限り、攻撃者はそのアカウントでいつでも管理画面にログインできます。

DB修復の作業では、これらのテーブルを対象に、不正なレコード・フィールド値・埋め込みコードを検出して除去します。正規データと不正データの判別には、パターンマッチングによる自動検出と、手動による内容確認の組み合わせが必要です。また、不正データを削除する際にはサイトの正規コンテンツ(記事・設定・ユーザー情報)を誤って削除しないよう、作業前のデータベースの完全バックアップが必須です。

加えて、セキュリティキーとソルトの再生成もDB修復のプロセスに含まれます。セキュリティキーとは、WordPressのセッション(ログイン状態)を管理するための暗号鍵のことで、これを再生成することで感染中に発行されたすべてのセッションを無効化し、不正なログイン状態を強制的に終了させることができます。

▶ 専門家に依頼すると:全データベーステーブルの不正データ検出・除去、正規コンテンツの保護と不正レコードの選択的削除、セキュリティキーとソルトの再生成、データベース整合性の最終確認を行います。


権限修正と再感染防止——除去後の「環境」を整える

マルウェアのコードとデータを除去しただけでは、完全な対応とは言えません。除去後にすべきことが、権限修正と再感染防止の施策です。この2つを行うことで初めて、「クリーンアップ完了」と呼べる状態になります。

権限修正とは、感染中に攻撃者によって変更されたファイルパーミッション(ファイルへのアクセス権限設定)とWordPressユーザーのロール設定を、セキュリティ上の適切な状態に修正する作業のことです。

ファイルパーミッションについては、攻撃者が書き込みを容易にするために緩めた設定を、本来のセキュアな値に戻します。一般的に、PHPファイルは644(所有者のみ読み書き可・他は読み取りのみ)、ディレクトリは755(所有者のみ書き込み可)が基本です。wp-config.phpはさらに制限を強め、400または440(所有者のみ読み取り可)に設定することが推奨されます。パーミッションが不適切なままだと、マルウェアコードを除去しても再び書き込まれるリスクが残ります。

ユーザー権限については、感染中に作成・変更された不正ユーザーや不審な権限昇格の痕跡をすべて修正し、最小権限の原則(そのユーザーが業務上必要とする最低限の権限のみを付与する原則)に基づいたロール設定に整理します。

再感染防止とは、同じ手口での再侵入を構造的に防ぐ設定と仕組みを導入することです。主な対策として以下のものがあります。

まず、WordPressのコア・テーマ・プラグインをすべて最新バージョンに更新し、既知の脆弱性を塞ぎます。次に、使用していないプラグイン・テーマをすべて削除します。インストールされているだけで攻撃対象になるためです。管理画面へのログインに二段階認証を導入し、総当たり攻撃による突破を防ぎます。ログイン試行回数の制限を設定し、総当たり攻撃そのものを無力化します。Webアプリケーションファイアウォール(WAF)を導入し、不正なリクエストをサーバーに到達する前にブロックします。また、ファイルの変更を検知する整合性監視ツールを導入し、今後の改ざんをリアルタイムで検出できる体制を整えます。

これらの再感染防止策は、除去作業が終わったその日に設定することが重要です。除去が完了しても防止策が整っていない状態では、同じ脆弱性を狙った自動スキャンツールが即座に再侵入を試みるリスクがあります。

▶ 専門家に依頼すると:全ファイル・ディレクトリのパーミッション適正化、ユーザー権限の最小化再設定、再感染防止のための包括的なセキュリティ強化設定の実施、継続的な監視体制の構築提案を行います。


この記事のまとめ

WordPressのマルウェアを完全に除去するためには、以下の3つのプロセスを確実に実施することが必要です。

  1. 不正コード削除とファイル復元:ファイル内の不正コードを除去し、改ざんされたファイルを公式版で完全に置き換える
  2. DB修復:データベースに書き込まれた不正データ・スパム・不正ユーザーを根絶し、セキュリティキーを再生成する
  3. 権限修正と再感染防止:パーミッションとユーザー権限を適正化し、同じ手口での再侵入を構造的に防ぐ

これらのプロセスは、順番通りにすべてを完了させることで初めて「完全除去」と呼べます。途中で省略したり、一部だけ対応したりすると、残った汚染が起点となって短期間で再感染します。実際に「除去したはずなのに1週間後に再び感染した」という事例の多くは、この3つのうちどれかが不完全だったことが原因です。

また、これらの作業は技術的な精度だけでなく、作業の順序と判断の正確さが求められます。誤った順序での作業、不十分な差分確認、設定ミスは、復旧をさらに困難にします。

マルウェアを一度で確実に除去し、二度と同じ被害を繰り返さないためには、ファイル解析・データベース修復・セキュリティ設計の三つを包括的に扱えるWordPressセキュリティの専門家への依頼が、最も確実で最も早い解決策です。「今度こそ完全に終わらせたい」という方は、専門家への相談を検討してください。


マルウェア除去 語彙辞典

マルウェア除去 語彙辞典

本辞典は、マルウェア感染によりサイトが停止してしまった方が、特定した汚染範囲から「悪意あるプログラムや改ざんコードを完全に駆除・消去する」(マルウェア除去)ための必須キーワード集です。


■ 1. コアファイルのクリーン再インストール(Clean Reinstallation)

改ざんされた恐れのあるWordPress本体のファイル(wp-includesやwp-adminフォルダーなど)をすべて削除し、公式サイトからダウンロードした「新品の正規ファイル」に丸ごと置き換える作業。

■ 2. プラグイン・テーマの初期化(Resetting Extensions)

既存のプラグインやテーマのフォルダーを一度サーバーから削除し、公式ディレクトリや開発元から入手した「未汚染の最新バージョン」を再インストールして不審なコードを根絶すること。

■ 3. 不正コードの削り出し(Code Stripping)

wp-config.phpや.htaccessなど、削除できない重要ファイルの中に埋め込まれたマルウェアの断片(PHPやJavaScriptのコード)だけを手動で正確に切り取って削除する作業。

■ 4. シグネチャ(Signature)

マルウェア特有の「プログラムの文字列」や「特徴的なパターン」のこと。セキュリティツールはこのシグネチャを元に、ファイル内からマルウェアを自動で見つけ出して排除します。

■ 5. 誤検知(False Positive)

正常なプラグインのプログラムコードを、セキュリティツールが「マルウェア(不審なファイル)」と間違えて判定してしまうこと。除去の際は、正規のコードまで消してしまわないよう注意が必要です。

■ 6. 隔離(Quarantine)

見つかった不審なファイルをすぐに削除せず、一時的に実行不可能な安全なフォルダーへ移動させること。万が一、そのファイルがサイト動作に必要なもの(誤検知)だった場合の予備措置です。

■ 7. uploadsフォルダーのPHP一掃(Purging PHP from Uploads)

通常は画像しか入らない「uploads」フォルダー内を検索し、攻撃者が仕込んだ不正なPHPファイルをすべて強制削除すること。画像の安全性を保ったままマルウェアだけを排除できます。

■ 8. データベースクレンジング(Database Cleansing)

wp_options(設定)やwp_posts(投稿記事)などのテーブル内に潜り込んだ、不正なリダイレクト用スクリプトやスパムリンク(SEOスパム)を、SQL文やツールを使って綺麗に掃除する作業。

■ 9. 有害サイト再審査リクエスト(Request Review)

マルウェア除去が完了した後、Googleなどの検索エンジンやセキュリティ会社に対して「サイト内の脅威はすべて去ったので、警告画面やブロックを解除してほしい」と申請する手続き。

■ 10. クリーンバックアップ(Clean Backup)

マルウェアを完全に除去し、正常な動作と安全性が確認された「無菌状態」のWebサイトデータを、将来の再発に備えて新しく保存し直したバックアップデータ。


お問い合わせはこちら

サービスに関するご相談・お見積りなど、お気軽にお問い合わせください。