WordPressあれこれ

WP-CLIでWordPressコアファイルの破損・改ざんを確認する方法

WP-CLIでWordPressコアファイルの破損・改ざんを確認する方法

検証環境: WordPress 7.0 / WP-CLI 2.x 系(確認日: 2026-06)。出力例は環境ごとに異なります。

「サイトが改ざんされたかもしれない」「更新に失敗してファイルが壊れたかも」——そんなとき、まず役立つのがコアファイルの整合性チェックです。

この記事では、WP-CLIの wp core verify-checksums で「何が分かり、何が分からないか」を整理します。サイトのファイルは変更しません。

verify-checksums とは(何をする道具か)

この章で分かること: このコマンドの仕組みを知ると、結果を正しく読めます。

WordPress.orgは、各バージョンのコアファイルの「正しい状態」を表すチェックサム(ファイルの指紋のようなもの)を公開しています。verify-checksums は、それと現在のコアファイルを照合し、食い違いを報告します。

照合の考え方: 「公式の配布物」と「いま手元にあるコア」を突き合わせ、変化したファイル・足りないファイルを見つける。

使い方

この章で分かること: 実行コマンドと、出力の読み方です(読み取りのみ)。

wp core verify-checksums --locale=ja

日本語環境では --locale=ja を付けます。省略すると en_US のチェックサムと照合され、日本語版だけに含まれるファイルが偽陽性(誤検知)として報告されることがあります。

  • 問題が無ければ「Success: WordPress installation verifies against checksums.」のような成功メッセージが出ます。
  • 食い違いがあると、該当ファイルが Warning として報告されます(例: チェックサム不一致、本来存在しないファイル)。
  • これは報告のみで、ファイルの修復や削除はしません。

問題が無いときの出力例です。

$ wp core verify-checksums --locale=ja
Success: WordPress installation verifies against checksums.

食い違いがあるときは、ファイルごとに Warning が並び、最後に Error で終わります(出力例)。

$ wp core verify-checksums --locale=ja
Warning: File doesn't verify against checksum: wp-includes/version.php
Warning: File should not exist: wp-includes/about.php
Error: WordPress installation doesn't verify against checksums.
バージョンが正しく取れることが前提

照合には対象バージョンのチェックサム取得が必要です。ネットワークやバージョン情報の状態によっては取得できないこともあります。その場合はエラー内容を確認してください。

確認できる範囲・できない範囲

この章で分かること: ここを誤解すると「チェックしたから安全」と思い込む危険があります。

  • 確認できる: コア(wp-admin・wp-includes・ルートのコアファイル等)の変化・欠落。
  • 確認できない: wp-content 配下(テーマ・プラグイン・uploads)。ここはコアの照合対象外です。
  • つまり「コアは無事」でも、テーマやアップロード画像フォルダに不審ファイルが潜む可能性は残ります。
項目対象かどうか補足
wp-admin/ 以下のPHPファイル✅ 対象コアファイルの改ざん・欠落を検出
wp-includes/ 以下のファイル✅ 対象バージョン照合
wp-login.php, wp-cron.php など✅ 対象ルート直下のコアファイル
wp-config.php❌ 対象外サイト固有の設定ファイル
wp-content/ 以下全般❌ 対象外プラグイン・テーマ・メディア
.htaccess, robots.txt❌ 対象外サーバー設定ファイル

プラグイン・テーマ・uploadsは別の確認が必要

WordPress.orgで配布されているプラグインは wp plugin verify-checksums で照合できる場合がありますが、有料・独自のプラグインやテーマ、uploads配下は対象外です。プラグイン・テーマの状態確認は「WP-CLIでプラグイン・テーマの状態を安全に確認する方法」を、改ざん対策の全体像は「WordPressの改ざんマルウェア対策」を参照してください。

「公式に無いファイルが足された」場合は別の探し方が要る

verify-checksums が見るのは「公式の配布物との差分」です。裏を返すと、公式には存在しないファイルが新しく設置されたケース(独自PHPの埋め込みなど)は、コアの照合だけでは漏れることがあります。とくにアップロードディレクトリに置かれた実行可能ファイルは要注意です。

# wp-content/uploads 配下の .php を洗い出す(通常は存在しないはず)
find wp-content/uploads -name "*.php"

# wp-login.php より後に作られた wp-admin 内の .php を探す
find wp-admin -name "*.php" -newer wp-login.php
uploads配下の.phpはほぼ不正

画像用の wp-content/uploads/ に .php ファイルがあれば、ほぼ確実に不正ファイルです。発見しても即削除せず、まず保全(バックアップ・隔離)とログ確認を先に行ってください。
現場メモ:Successでも油断しない

改ざん対応で実際に多いのは、コアではなく wp-content/uploads に置かれた単発の .php(アップローダやバックドア)です。これは verify-checksums の照合対象外なので、結果が Success でも残ります。Success のときこそ uploads の find を併用するのが実務の鉄則です。

改ざんが疑われるときの初動

この章で分かること: あわてて触ると、原因究明も復旧も難しくなります。順番が大切です。

すぐに上書き・削除しない

改ざんが疑われるとき、いきなりコアの再インストールや不審ファイルの削除をすると、「治ったように見えて再発」したり、原因の痕跡が消えて調査できなくなることがあります。まずは現状の保全(バックアップ・隔離)とログの確認が先です。
  • 現状を保全する(バックアップを取り、できれば本番から隔離)。
  • アクセスログ・変更日時など、手がかりを確認する。
  • 影響範囲を見極めてから、復旧方針を決める(上書きはその後)。
優先度コマンド目的異常時の対処
★★★wp core verify-checksums --locale=jaコアファイルの改ざん確認wp core download --force で再インストール
★★★wp option get siteurl && wp option get homeURLリダイレクトハック確認wp option update で正しいURLに修正
★★★wp user list --role=administrator --format=csv不正管理者の確認wp user delete ID で削除
★★☆wp plugin verify-checksums --allプラグインの改ざん確認プラグイン再インストール
★★☆wp theme verify-checksums --allテーマの改ざん確認テーマ再インストール
★☆☆wp cron event list不審な定期処理確認wp cron event delete で削除

侵入後の追跡と復旧の考え方は「セキュリティ・フォレンジック ― 侵入後の追跡と復旧」で詳しく扱っています。

よくある質問(FAQ)

verify-checksums が成功したら安全と考えてよいですか?

いいえ。コアファイルに変化が無いことは分かりますが、wp-content配下(テーマ・プラグイン・uploads)は対象外です。安全の断定はできません。

Warningが出たら改ざんですか?

必ずしも改ざんとは限りません。手動でコアを編集した、更新が途中で失敗した、などでも食い違いは出ます。原因の切り分けが必要です。

不審ファイルを見つけたらすぐ消すべきですか?

すぐに消すのは避けてください。再発防止のためにも、保全とログ確認を先に行い、影響範囲を見極めてから対応します。

まとめ

verify-checksums は「コアの整合性を読む」便利な確認ですが、守備範囲には限界があります。結果を過信せず、疑わしいときは保全を優先しましょう。WP-CLI全体像は「WP-CLI鉄板コマンド完全ガイド」、プラグイン・テーマの確認は「プラグイン・テーマの状態確認」をどうぞ。