Wordfenceで「WordPressのコアファイルが変更されています」と出た話|改ざんかどうかの確認方法(飯田市 ホームページ制作会社)

WordPressでサイトを管理していると、セキュリティプラグイン「Wordfence」から突然、ちょっと怖い警告が出ることがあります。

今回表示されたのは、こんな内容でした。

WordPress のコアファイルを変更しました ファイル:wp-content/plugins/hello.php 重要度:高

さらに、

このWordPressコアファイルは修正されており、本バージョンで配布されているオリジナルのファイルとは異なります。

との表示です。「高」と書かれていると、真っ先に「もしかしてサイトが改ざんされた?」と不安になります。今回は実際にファイルの差分まで確認してみました。

確認した手順

手順1:Wordfenceの「ファイルの差分を表示」を確認する

Wordfenceには、公式ファイルと現在サーバー上にあるファイルを比較する機能があります。

今回問題になっていたのは、

wp-content/plugins/hello.php

というファイルです。これはWordPressに長年付属している「Hello Dolly」というプラグインのファイルです。

差分を確認すると、主な変更点は次のようなものでした。

  • Text Domain: hello-dolly という記述がない
  • コメントの Don't load directly.Do not load directly. になっている
  • exit;die(); になっている

一見するとコードが変更されているので怖く感じますが、内容を確認すると、少なくとも今回表示された部分には怪しいコードはありませんでした。

特に exit;die(); については、PHP公式マニュアルでも「die()はexit()のエイリアス(別名)」と説明されており、動作としては同じものです(出典は記事末尾)。つまり、ここが変更されているからといって、それだけで不正アクセスやマルウェアとは判断できません。

手順2:「変更されている」=「改ざんされた」とは限らないことを踏まえる

Wordfenceの警告で注意したいのは、「公式ファイルと違う」ということと、「攻撃者に改ざんされた」ということは、必ずしも同じではないという点です。

差分が出る理由としては、次のようなものが考えられます。

  • WordPress本体のアップデート
  • プラグインのバージョン違い
  • 古いファイルが残っている
  • 過去のファイル構成との違い
  • 制作者が意図的に変更した

今回の hello.php についても、WordPressやHello Dolly側のファイル構成・記述の変更によって、古いファイルとの差分をWordfenceが検出している可能性が高いと考えています。

手順3:それでも中身は必ず確認する

今回は結果的に大きな問題ではなさそうでしたが、Wordfenceで「高」の警告が出たときに、内容を確認せず「無視」を押すのはおすすめしません。

  1. Wordfenceの「詳細」を開く
  2. 「ファイルの差分を表示」を確認する
  3. 覚えのないPHPコードが追加されていないか確認する
  4. 他にも「高」「重大」の警告が出ていないか確認する

という流れでチェックしたほうが安心です。

特に、

  • 意味不明な長い文字列
  • base64_decode
  • eval
  • 見覚えのない外部URLへのアクセス
  • 不自然に難読化されたPHP
  • 知らない管理者ユーザー
  • 覚えのないPHPファイル

などが見つかった場合は、今回とは話が変わってきます。その場合は、単純にファイルを削除するだけではなく、サイト全体を確認したほうがいいと思います。

手順4:使っていないなら、Hello Dollyごと削除でもよい

今回問題になった「Hello Dolly」は、WordPressの動作に必須のプラグインではありません。サイトで使用していないのであれば、管理画面の「プラグイン」から削除しても通常は問題ありません。不要なプラグインを置いておかないことも、WordPressのセキュリティ対策のひとつです。

今回は、Hello Dollyを利用していないことを確認したうえで削除し、その後もう一度Wordfenceでスキャンする、という対応でよさそうだと判断しました。

真因

確認した範囲では、hello.php の差分は典型的な不正コードではなく、WordPressやHello Dollyのバージョン・ファイル構成の違いによるものである可能性が高いと考えています。exit;die(); の違いについては、PHP公式マニュアルの記載からも、動作上の差はないと確認できました。ただし、これは今回確認した1ファイルについての判断であり、「Wordfenceのコアファイル警告は基本的に無視してよい」という意味ではありません。

運用の教訓

  • Wordfenceで「重要度:高」と出ても、まずは「ファイルの差分を表示」で中身を確認する
  • 「公式ファイルと違う」=「改ざんされた」ではない。バージョン違いや構成変更でも差分は出る
  • base64_decodeeval、見覚えのない外部URL、難読化されたコードなどが見つかった場合は、話が変わるので慎重に対応する
  • 使っていないプラグインは、警告のきっかけがあってもなくても、早めに削除しておくとよい
  • 警告そのものは無視せず、確認するきっかけとして活用する
Home
サービス
制作実績
お客様の声
デザイナー紹介
問合せ