DDDefense DeskWordPress 緊急対応
技術資料緊急度:高

消しても再発する改ざん、部分的な駆除で足りるか作り直しが必要か

検出されたファイルを消しても改ざんが戻るときは、入口や再び置くための仕組みが残っていることを疑います。新しく入り直された可能性も残ります。正しい状態と比べられる範囲がどこまでかを手がかりに、部分的な駆除で見込みが立つか、作り直しへ寄せるかを判断できます。

公開日 2026.07.18更新日 2026.10.22読了目安 9分著者 DD Defense Desk

消しただけでは戻る理由

検査ソフトが挙げるファイルの多くは、侵入された結果として置かれたか、書き足されたものです。入口は、それとは別にあることがあります。更新していないプラグインの欠陥や、盗まれた管理画面・FTP(ファイル転送の仕組み)の認証情報がそれにあたります。検出されたファイル自体が、その後の出入りに使われている場合もあります。その場合は消せば出入り口は1つ減りますが、入口が別にあれば、挙げられたものを消すだけでは入口が残ります。

入口のほかに、再び置くための仕組みがファイルの外に残ることもあります。セキュリティ企業のSucuriが2026年9月に報告したマルウェア(外部サイト)は、drop-in(WordPressが決まった場面で読み込む追加のファイル)やテーマ、偽のプラグインなどのファイルに加えて、データベースの設定の行とサーバーのメモリ上の領域(共有メモリ。ファイルを消しても残る)にも写しを置いていました。Sucuriは概要で、写しは少なくとも8か所にあり、それぞれが残りを作り直せるため、止めるためにここだけを外せばよいという1か所は無いと書いています。共有メモリの写しも消すのが基本の手順で、共用サーバーで別のアカウントの所有になっている場合は、そのアカウントかサーバー会社にしか消せないが、読み出すファイルを取り除けば害は無くなるとしています。目に付いたファイルを消しても、次にページが表示されたときに、データベースの行などに残った写しから元に戻ります。置き直しに使われる部品には、すべてのページの前に別のファイルを読み込ませる設定(.user.ini や .htaccess に書く auto_prepend_file)も含まれていました。WordPressに登録された定期実行(決まった時刻に動く処理)も、置き直しを起こしていました。

管理画面の一覧に出ない形で残る仕組みもあります。セキュリティ企業のPatchstackは2026年10月の報告(外部サイト)で、問い合わせフォームの送信内容や通販の注文の情報にスクリプトを仕込む攻撃の試行を観測し、攻撃者が使うプログラムを解析しています。管理者が管理画面でその内容を開くとスクリプトが動き、ユーザー一覧に出ない管理者アカウントと、最も古い管理者としてログインできる隠しURLを作る仕組みでした。入口になったプラグインを削除しても、攻撃者が入れたプラグインを消しても、どちらも残ります。Patchstackは、管理者の権限を持つ利用者をデータベースから一覧として取り出し、ユーザー一覧の表示と比べるよう案内しています。

作業の仕方によっても、改ざんが残ることがあります。WordPress公式のドキュメント(2026年7月更新)は、管理画面からの再インストールを使わないよう案内しています。その機能は既存のファイルの上書きにとどまることが多く、改ざんで新しく置かれたファイルは残りやすいためです。当方は、新しく置かれたファイルを残さないため、上から上書きせず、フォルダを消してから置き直しています。

消しても戻るときに先に要るのは、何が残っているかの見分けです。Sucuriの事例では、消すたびに数秒で戻っていました。Sucuriは、もう一度検査して戻ってくるものがあれば、残った仕組みか、開いたままの入口のどちらかがあるとしています。消す作業を繰り返すより、次の節の見分けに進んでください。

正しい状態と比べられる範囲、比べられない範囲

WordPress公式のドキュメントは、公式の配布物と同じ版で置き換えてよい範囲としてWordPress本体の2つのフォルダ(wp-admin と wp-includes)を挙げ、テーマとプラグインが入るフォルダ(wp-content)については、より慎重に見て入れ替えるよう案内しています。設定ファイル(.htaccess)が設置先の直下だけでなく複数の階層に置かれることがある点にも触れています。

同じドキュメントは、駆除の手順が症状や作業者の習熟など複数の条件で決まることと、全部を消してやり直せる場合もあるものの多くの場合はできないことに触れ、代わりに一部を入れ直す進め方を案内しています。ただし、どこまでを入れ直しで済ませられるかの線は、ドキュメントからは決まりません。

そこで当方は、その範囲を「本来どうあるべきか」と比べられるかどうかを、進め方を決めるときの材料にしています。これは公式の案内から導いた線ではなく、対応の実務で使っている整理です。下の表のうち、本体の2つのフォルダを同じ版で置き換えてよいことはWordPress公式の案内に、常に読み込まれるプラグインや設定の行の話はSucuriとPatchstackの報告によります。確かめ方は当方の進め方です。比べるものがあれば違いを見つけて戻せますが、無ければ、中身を1つずつ読んで確かめるしかなく、確かめきれない部分が残ります。

範囲比べる相手になり得るもの確かめ方
WordPress本体(wp-admin・wp-includes)公式の配布物と同じ版同じ版で置き換えられる(フォルダを消してから置き直す)
設置先の直下にある本体のファイルと、設定ファイル(wp-config.php)公式の配布物と同じ版。wp-config.php は自社の設定を含むため、汚染前の控えか設定した本人の記録本体のファイルは同じ版の配布物と比べる。wp-config.php は、記述を1行ずつ確かめる
公式ディレクトリのプラグイン・テーマ公式の配布物(稼働中と同じ版)手を入れていなければ、同じ版の配布物と中身を比べられる。公式の案内は同じ版で置き直すとしており、入口になった欠陥は、そのあと直った版へ更新して塞ぐ
自作・有料配布のテーマとプラグイン制作元の控え、バージョン管理の記録どちらも無ければ、個別に中身を確かめるしかない
常に読み込まれるプラグイン(must-use プラグイン。管理画面から止められない)と、wp-content 直下の追加ファイル汚染前の控え無ければ、置いた覚えのないものと、覚えのあるファイルに書き足された部分を確かめる。更新日時は偽装されることがあるため、中身で見る
画像などのアップロード先元の素材、汚染前の控え無ければ、画像などの素材ではない種類のファイル(PHPや圧縮ファイルなど)が無いかを中身で確かめる。更新日時は偽装されることがあるため、決め手にしない
サーバーの設定ファイル(.htaccess、.user.ini、php.ini)汚染前の控え、設定した本人の記録無ければ、記述を1つずつ確かめる。すべてのページの前に別のファイルを読み込ませる指定(auto_prepend_file)が無いかを見る。複数の階層を見る
データベースの中身汚染前の書き出し無ければ、投稿、設定、利用者、WordPressに登録された定期実行、トリガー(書き込みのたびに動く処理)を個別に確かめる(利用者はデータベースから一覧に出す)

部分的な駆除で見込みが立つ材料

次がそろっているほど、置き換えと除去で戻せる見込みが立ちます。前の3つは進め方を選ぶ前に分かることで、4つ目は駆除と並行して確かめることです。ただし、これは合格の条件ではありません。ファイルがすべて公式の配布物と一致していても、データベースと利用者アカウントを確かめていなければ足りません。

  • 侵入の時期が絞れている:いつ以降が汚染された状態かが分かる。どの控えが汚染前かを決められる。
  • 比べる相手の無い範囲が小さい:上の表で、比べる相手(公式の配布物か、汚染前の控え)の無い範囲が小さく、検査ソフトの結果からも、その範囲に変更の疑いが出ていない(検査をすり抜ける作りもあるため、疑いが出ないことは変更が無い裏付けにはならない。更新日時も偽装されることがあり、決め手にしない)。比べる相手の無い範囲は確かめきれないため、小さいほど見込みが立つ。配布物や控えそのものが作られた時点で汚染されていた場合は、比べても違いが出ないため、この材料にならない。
  • 手を入れた範囲についても、比べる相手がある:バージョン管理の記録や、制作元が持つ配布前の控えなど。
  • 入口が特定でき、塞げている:欠陥のあるプラグインを更新した、漏れた認証情報を変えた、といった形で確定している。

進め方を分ける材料にはならない作業が2つあります。1つは、接続に使う認証情報の入れ替えです。管理画面、FTP、サーバーパネル、データベースを個別に変え、SSH(サーバーへ遠隔で接続する仕組み)の鍵など、ほかにサーバーへ書き込める経路があれば含めます。WordPressの認証用の鍵(ログインの状態を確かめる値)も入れ替えます。1つでも残すと、そこから再び入られるおそれがあります。WordPress公式のドキュメントは、作業に使う端末で動く不正なプログラムがFTPや管理画面のログイン情報を盗む例を挙げて端末の検査を勧め、駆除が済んだあとにパスワードを変え直すよう書いています。どちらの進め方でも行います。もう1つは、一覧に出ない管理者やログインの裏口の確認です。部分的な駆除では必ず行い、作り直しでもデータベースを持ち越すなら行います。一覧から隠すだけの作りなら、前に挙げたPatchstackの案内で見つけられます。ログインの裏口は、管理者の一覧を比べても見つからないことがあります。Patchstackが解析した隠しURLは、既存の最も古い管理者としてログインさせる仕組みでした。データベースの設定の行と常に読み込まれるプラグインの組み合わせで動き、設定の行を消しても、プラグインが残っていれば新しい隠しURLが出されうる作りでした。裏口の作り方は攻撃ごとに違います。

作り直しへ寄せる材料

ここでいう作り直しは、別の環境で、WordPressとテーマとプラグインを最新の版にしてサイトを組み直し、確かめてから本番へ移すことです。データベースの中身を持ち越すなら、投稿、設定、利用者、WordPressに登録された定期実行、トリガーを確かめる作業は、作り直しでも残ります。

次が当てはまるほど、部分的な駆除では終わらない見込みが強くなります。1つ当てはまれば自動的に作り直し、という線ではありません。当てはまる数と、確かめられない範囲の広さで判断してください。

  • 侵入の時期が絞れない:どの控えが汚染前かを決められない。戻した先がすでに汚染されている可能性が残る。
  • 比べる相手の無い範囲に、変更の疑いがある:自作テーマやアップロード先など。正しい状態が分からないため、消してよいかを判断できない。作り直しでも、その範囲は元の素材から組み直すか、使うのをやめるかを決めることになる。
  • ファイルの外まで消しても、再び改ざんされる:Sucuriは、戻ってきたものを駆除が終わっていないしるしとして扱い、ファイルの外の写しへ戻って消すよう案内している。戻る原因には、残った仕組みと、開いたままの入口の両方を挙げている。当方は、それでも戻り、どちらが残っているかを特定できないなら、確かめられない範囲が広いと見る。ただし、入口が開いたままなら作り直しても同じ入口から戻るため、入口を塞ぐことが前提になる。

サーバーの定期実行の設定や同じ契約内の別サイトなど、WordPressの外まで及んでいる場合は、駆除でも作り直しでも、WordPressの中だけを直しても、再び改ざんされることがあります。どちらに進む場合も、サーバーの側の確認とあわせて進めます。

どちらとも決められないとき

記録が残っていなければ、侵入の時期も入口も確定できません。公式のドキュメントは、技術的な知識や必要な情報が足りないために、サイトの所有者が原因を分析するのは非常に難しい場合が多いとしています。

この場合は、経路が確定しないまま安全な状態へ戻す進め方になります。比べる相手を用意できない範囲が広いほど、作り直しに寄ります。逆に、その範囲が限られていて、ほかの方法で確かめられるなら、経路が分からなくても部分的な対応で収まることがあります。ただし入口が分からないまま同じ版で置き直すと、入口になった欠陥も一緒に戻ります。当方はこの場合、本体・テーマ・プラグインをすべて修正済みの最新の版へ更新し、使っていないものを削除し、認証情報を入れ替えたうえで、再び書き換えられないかを見続けます。

どちらに進む場合でも、作業を始める前に現状の複製を取ってください。汚染された状態のままでも構いません。公式のドキュメントも、清掃に入る前に現状の複製を取ることを勧めています。作業の途中で大きな失敗が起きても、汚染された状態の複製を見返せるようにするためです。

経路が特定できないまま復旧を進める条件を確認する →

参考情報(外部サイト)

本文で参照した外部の公開情報です。

相談の前に用意するもの

検出されたファイルの一覧だけでは、どちらへ進むかは決まりません。相談するときは、次の3つを一緒に伝えてください。どの範囲に手を入れているか(自作のテーマ、有料配布のプラグイン、独自の改修)、いつからの控えが残っているか、そして最初に異常に気づいた日時です。

3つ目は、侵入がそれより前だったことを示すため、どの控えまでさかのぼるかを決める手がかりになります。3つが分かれば、どの範囲を控えから戻せるかの見当が早く付きます。

あなたのサイトが知らない間に加害者になる偽CAPTCHAの手口

改ざんが閲覧者への配信につながっていないかを確認する →

← コラム一覧へ戻る

緊急対応を依頼する