WordPressのCode Snippets・WPCodeに不審なコードが登録された時の調査

WordPressのコードスニペットに潜む不審な処理を調査するイメージ

WordPressのCode SnippetsやWPCodeを開いたら、作成した覚えのないスニペットが有効になっていて、
すぐ削除すべきか迷っていませんか?

コードスニペット系プラグインは、テーマファイルを編集せずPHPやJavaScriptを実行できる便利な仕組みです。
しかし管理者アカウントを奪われると、攻撃者にも同じ便利さを与えてしまいます。

不審なコードをその場で開き、動作確認のため保存したり、すぐ削除したりするのは危険です。
まず実行を止め、コード、設定、作成時刻、ログを保全してから、登録経路と被害範囲を追います。

よこやま良平

WordPressの復旧を多数手がけてきたよこやま良平です。わたしの現場経験をもとに、Code Snippets・WPCodeの不審なコードを安全に停止し、侵入口を残さず調査する順番を解説します。

この記事でわかること
  • Code SnippetsとWPCodeで確認する場所の違い
  • 不審なスニペットを削除前に保全する方法
  • 危険なコードと正規カスタマイズを分ける判断軸
  • 実行を抑えながら登録者・侵入経路を追う順番
  • 除去後に再登録と取り残しを防ぐ確認項目

結論から言うと、最初に行うのは削除ではなく、公開被害の制限、実行停止、証拠保全です。
その後にプラグイン固有の保存場所を確認し、管理者操作・ログ・周辺の改ざんを時系列で照合します。

不審な1件だけを消しても、盗まれた管理者、Application Password、別のバックドアが残れば再登録されます。
この記事では、初心者でも作業目的を見失わないよう、止める、残す、判定する、追う、復旧する順に説明します。

目次

【無料プレゼント】
WordPress緊急チェック50

「自分のサイトは今、安全なのか?」
自信を持って答えられますか?

WordPress緊急チェック50

こんなお悩みはありませんか?

  • ある朝、サイトを開いたら真っ白画面になっていた
  • 管理画面にログインできなくなって手が止まった
  • 身に覚えのない記事やページが勝手に増えていた
  • プラグインを更新したらサイト全体が崩れてしまった
  • 以前バックアップを取ったか自分でも覚えていない

累計1,000件以上のWordPressトラブル対応の経験から、「壊れる前に備える」ためのチェックリストを1冊にまとめました。
ログイン・本体・バックアップ・サーバー・運用の5分野を、50項目で「危険度・確認方法・対処法」まで解説しています。

セキュリティプラグイン・WordPressの教科書も含めた3大特典を、
今なら無料で受け取れます。

今すぐ無料ダウンロードする →

※登録後すぐにメールで特典をお届けします

Code Snippets・WPCodeの不審なコードは削除前に実行を止める

不審なスニペットを見つけた時は、内容を直接編集する前に、訪問者への被害と新しい実行を抑えてください。
有効なPHPスニペットは、ページ表示や管理画面操作をきっかけに繰り返し動く可能性があります。

外部サイトへの転送、偽ログイン画面、不審な管理者追加、迷惑メール送信が進行中なら、
サーバー、CDN、WAF、Basic認証などWordPressより手前で公開を一時制限します。

疑わしい画面で保存・更新を繰り返さない

Code SnippetsやWPCodeの編集画面で「保存」「有効化」「自動挿入」を押すと、
コードが実行対象になったり、更新時刻や改訂情報が変わったりする場合があります。

コードの全体を確認したい時も、まず一覧画面、ステータス、実行場所、優先度、更新日時を画像で残します。
本番画面でテスト実行せず、必要なら保全したコピーを隔離環境で静的に読みます。

プラグイン全停止と対象1件の停止を分けて考える

被害が進行中で対象を特定できているなら、管理画面からそのスニペットだけを無効化する方が、
正規カスタマイズへの影響を小さくできることがあります。操作前後の時刻と担当者を記録してください。

対象が複数、管理画面が改ざん、停止操作が戻る場合は、プラグイン単位の停止やWordPress外の制限を検討します。
ただし決済、会員制御、計測、メール通知など正規処理も止まるため、業務影響を先に確認します。

最初の対応順
  1. 症状、対象URL、発見時刻、ログイン状態を記録する
  2. 進行中の転送・送信・不正登録はWordPress外で制限する
  3. 一覧画面と対象スニペットの設定を変更前に保存する
  4. 対象を特定できればその1件の実行を止める
  5. 再有効化や再登録が起きないかログを取りながら監視する

見覚えのないプラグイン自体も追加されている場合は、表示名だけで削除せず、
配布元、フォルダ、導入履歴、関連ファイル、管理者ログを同じ基準で確認してください。

Code Snippets・WPCodeの保存場所を区別して証拠保全する

Code SnippetsとWPCodeは、どちらも管理画面でコードを扱えますが、データの持ち方は同じではありません。
プラグイン名を確定し、実際のテーブル接頭辞とサイト構成を確認してから保全範囲を決めます。

Code Snippetsは専用テーブルと一覧設定を確認する

Code Snippetsの現行配布物では、通常はWordPressの接頭辞を使った専用のsnippetsテーブルで、
コード、名称、説明、scope、priority、active、更新情報などを管理します。

一般的な環境でテーブル名はwp_snippetsに見えますが、接頭辞はサイトごとに異なります。
マルチサイトではネットワーク側の保存先も関係するため、固定名を決め打ちしないでください。

SELECT id, name, scope, priority, active, modified
FROM <prefix>_snippets
ORDER BY modified DESC;

読み取り結果を保存するだけにし、調査初期にUPDATEやDELETEを実行しません。
プラグインのエクスポート機能を使う場合も、不審コードを別サイトへインポートしないよう隔離保管します。

WPCodeはwpcode投稿タイプと関連メタ情報を確認する

WPCodeの現行配布物では、スニペットをwpcodeというカスタム投稿タイプとして扱います。
タイトルやコード本体だけでなく、有効状態、自動挿入場所、条件、優先度などの関連情報も確認対象です。

SELECT ID, post_title, post_status, post_modified_gmt
FROM <prefix>_posts
WHERE post_type = 'wpcode'
ORDER BY post_modified_gmt DESC;

wp_postsだけを見て完了せず、対象IDに関連するpostmeta、変更履歴、プラグインのエクスポートも保全します。
実装は版で変わり得るため、稼働中プラグインの版と同じ配布物を確認してください。

画面のエクスポートとDB原本を別々に残す

プラグインのエクスポートは、設定やコードを人が確認しやすい形で残すのに役立ちます。
ただし、作成・更新に関する全情報や関連メタ、削除済み項目まで含むとは限りません。

そのため、画面から取得したエクスポートと、変更前のデータベース全体または関連行の原本を分けて保管します。
取得日時、対象サイト、プラグイン版、ファイルのSHA-256を作業記録へ残してください。

エクスポートした不審なコードを検証サイトへそのまま読み込むと、隔離先でも実行されるおそれがあります。
表示確認はテキストとして行い、実行環境へのインポートはしません。

削除前に一組で残すもの
  • プラグイン名・版・有効状態とWordPress版
  • スニペット名・ID・コード全文・種類・実行場所
  • active状態・priority・条件・自動挿入設定
  • 作成者が分かる監査ログ・管理者操作・更新時刻
  • 関連DB行のエクスポートとデータベース全体の保全
  • 発見時の画面画像・症状・URL・確認端末

データベース内コードの事例と、ファイルスキャンだけで判断できない理由は、次の記事も参考になります。

Code SnippetsとWPCodeの保存場所を分けて確認するデータベース調査のイメージ

Code Snippets・WPCodeのコードを危険度と役割で判定する

不審なコードは、関数名が難しい、文字列が長いという印象だけで判定しません。
誰が登録し、どの条件で、何を読み書きし、外部とどう通信するかを分解して評価します。

由来・目的・実行範囲が説明できるかを確認する

正規スニペットなら、依頼票、Git、制作会社の記録、コメント、導入日などから目的を説明できるはずです。
名前が「テスト」「最適化」「SEO」のように曖昧でも、それだけで不正とは断定しません。

反対に、担当者が誰も知らず、深夜に追加され、全ページまたは管理画面でも実行され、
外部通信やユーザー操作を行うなら危険度が上がります。複数の根拠を重ねて判断してください。

難読化は手段であり、最終動作まで静的に追う

base64_decode、gzinflate、文字列分割、可変関数、evalなどは注意信号です。
ただし単語検索だけで自動削除せず、復号後に何をするかを本番外で静的に確認します。

コードをブラウザーや本番PHPで実行して復号するのは避けます。
不明なURL、Cookie、POST値、User-Agent、外部応答が実行条件になっていないかも読み取ります。

権限・転送・ファイル・永続化の動作を優先して探す

管理者ユーザーやApplication Passwordの追加、ログイン回避、外部転送、SEOスパム挿入、
uploadsへのPHP生成、テーマ・コアの書き換え、Cron登録があれば重大度は高いと判断します。

スニペット自体に短いローダーしかなくても、外部URLやDB値から第二段階のコードを取得する場合があります。
参照先、生成先、フック名、実行時刻を記録し、連鎖の終点まで追ってください。

感染を強く疑う組み合わせ
  • 作成者や業務目的を確認できない
  • 全ページ・管理画面・ログイン前に自動実行される
  • 外部入力や外部応答をPHPとして実行する
  • 未知の管理者・セッション・API資格情報を作る
  • 外部転送・スパム・ファイル生成・メール送信を行う
  • 無効化後に同じ内容が自動で再登録される

データベースのoptionsに不正な転送設定もある場合は、スニペットとDB設定のどちらが起点かを分けて調べます。

Code Snippets・WPCodeの登録者と侵入経路を時系列で追う

不審スニペットを止めた後は、誰がどの経路から登録したかを追います。
登録経路を閉じなければ、コードを削除しても同じ管理者やバックドアから再投入されるためです。

更新時刻の前後で管理者・Web・WAFログを照合する

スニペットの作成・更新時刻をJSTやUTCのどちらかへ統一し、前後30分から確認します。
管理者ログイン、対象プラグイン画面へのアクセス、POST、admin-ajax.php、REST API、WAF検知を並べます。

HTTP 200だけでは成功操作と断定できません。対象IDの変化、DB更新、ファイル生成、症状の開始が、
同じ時刻のリクエストと一致するかを確認してください。プロキシ利用時は接続元の解釈にも注意します。

管理者ユーザーとセッションを作成時点のまま保全する

見覚えのない管理者、権限変更、メールアドレス変更、パスワード再設定、Application Passwordを確認します。
即削除する前に、ユーザーID、登録日時、メール、権限、所有コンテンツ、最終利用情報を保存します。

被害拡大中はセッション失効と権限停止を優先し、削除は所有コンテンツと証拠を整理してから行います。
正規管理者の端末やメールが侵害されている可能性もあるため、安全な端末から変更してください。

別の永続化元と同居サイトまで確認する

スニペットの再登録元は、盗まれた管理者だけとは限りません。mu-plugins、テーマ、通常プラグイン、
wp-config.php、サーバーCron、WP-Cron、外部管理サービス、同居サイトも調べます。

一定間隔で戻るならCron系、特定URLへのアクセス直後ならWebシェルや脆弱な処理、
管理画面操作直後なら侵害セッションや拡張機能を優先して確認します。

WP-Cronに不審な処理がある場合は、イベントだけを消さず、登録元のPHPコードと再作成条件を確認してください。

時系列で並べる記録
  • スニペットの作成・更新・有効化・無効化時刻
  • 管理者ログイン・権限変更・Application Password利用
  • 対象画面へのPOST・Ajax・REST・XML-RPCアクセス
  • DB更新・ファイル生成・Cron登録・外部通信
  • 転送・迷惑メール・スパムなど症状の開始時刻
  • FTP・SFTP・SSH・サーバーパネルと同居サイトの変更
不審なコードスニペットの登録時刻と侵入経路を追跡するイメージ

Code Snippets・WPCodeの不審なコードを安全に除去する

除去は、証拠保全、実行停止、侵入口の封鎖が終わってから行います。
削除の速さより、戻せる状態と再投入されない状態を作ることが重要です。

無効化したまま業務機能とエラーを確認する

対象スニペットを無効化した後、公開画面、管理画面、フォーム、決済、会員機能、メール、Cronを確認します。
PHPエラーが出た場合も、慌てて再有効化せず、依存していた正規処理を特定します。

不審コードの中に正規カスタマイズが混ぜられている場合は、悪性部分だけを本番で編集しません。
必要な正規機能を仕様から作り直し、レビューとテストを経て別の新規スニペットとして戻します。

管理画面削除とDB直接削除を使い分ける

管理画面が信頼でき、対象を一意に特定できるなら、保全後にプラグイン標準の削除を使います。
関連データやキャッシュを製品の処理に沿って整理でき、誤った行を消す危険を減らせます。

管理画面へ入れない、保存操作で不審コードが走る、停止が戻る場合は、DB原本を複製してから専門環境で対応します。
テーブル全削除やプラグイン再インストールだけでは、侵害ログや別の永続化元を失うため避けてください。

コード以外の感染範囲と認証情報を同時に復旧する

管理者、Application Password、APIキー、FTP・SFTP、DB、サーバーパネル、メールの認証を見直します。
漏えいが疑われるものは、安全な端末からセッション失効と再発行を行います。

コア、テーマ、プラグイン、mu-plugins、uploads、cache、.htaccess、wp-config.php、DBを横断して、
同じドメイン、文字列、ハッシュ、更新時刻、フック名がないか確認します。

除去完了の条件
  • 不審スニペットの原本と関連ログを保全した
  • 実行を停止し正規機能への影響を確認した
  • 登録したアカウント・脆弱性・バックドアを特定して閉じた
  • 関連ファイル・DB・Cron・同居サイトを調査した
  • 必要な認証情報とセッションを安全に失効した
  • 削除後のDB・画面・ログで対象が消えたことを確認した

WordPress全体の駆除、正規ファイル復元、認証変更、公開再開の順番は、次の記事と組み合わせてください。

Code Snippets・WPCodeの除去後は再登録と再感染を監視する

不審スニペットが一覧から消えただけでは、復旧完了とは言えません。
キャッシュ、別テーブル、別サイト、盗まれた認証経路から再登録されないことを時間を分けて確認します。

直後・24時間後・72時間後・一週間後に同じ条件で確認する

対象プラグインの一覧、DB件数、更新時刻、管理者、Cron、ファイルハッシュを同じ方法で再確認します。
確認方法を変えると差分が増えるため、絶対パス、SQL条件、タイムゾーンを作業メモへ固定してください。

PCとスマホ、ログイン済みと未ログイン、直接アクセスと検索経由も確認します。
特定条件だけで転送やスパムを出すコードは、管理者の確認時に正常に見えることがあります。

コード追加と管理者操作を継続監査する

コードスニペットの新規作成、有効化、権限変更、プラグイン導入を監査できる状態にします。
正規担当者は個人別アカウントを使い、共有管理者を減らし、二要素認証と最小権限を適用します。

WAFやセキュリティプラグインは再発検知の助けになりますが、単独で完全駆除を証明するものではありません。
ファイル、DB、認証、ログ、外部挙動を組み合わせて判断します。

公開再開の判断基準
  • 不審コードと参照先・生成先が除去されている
  • 正規カスタマイズと主要業務機能が正常に動く
  • 管理者・認証情報・セッションの見直しが完了している
  • PC・スマホ・検索経由で不審挙動が再現しない
  • 監視期間中に未知のスニペットやCronが増えていない
  • バックアップと復旧手順を安全な場所へ更新した

駆除後に確認する設定、ユーザー、検索結果、バックアップ、監視項目は、次のチェックリストも活用してください。

Code Snippets・WPCodeの不審なコードでよくある質問

Code SnippetsやWPCodeに覚えのないコードがあれば感染ですか?

覚えがないだけでは断定できません。制作会社や過去の担当者が追加した正規コードもあります。作成者、目的、導入記録、実行範囲、外部通信、権限操作、更新時刻、ログを確認し、複数の根拠で判断してください。

不審なスニペットはすぐ削除してよいですか?

進行中の被害は先に止めますが、削除前にコード全文、ID、状態、実行場所、DB行、画面、ログを保全します。先に消すと登録経路と再発原因を追えず、正規機能も壊すおそれがあります。

プラグインを削除すれば保存されたコードも消えますか?

製品や設定、版によって残るデータが異なるため、削除だけで安全とは言えません。DB上の対象、関連メタ、キャッシュ、生成ファイル、別のローダーを確認し、侵入経路と認証情報も復旧してください。

管理画面へ入れない場合はどう調べますか?

WordPress外でアクセスを制限し、DBとファイルの原本を保全します。稼働プラグインの保存方式を同版の配布物で確認し、読み取り専用の抽出から始めます。範囲や業務影響を判断できない時は、変更を増やさず専門家へ相談してください。

Code Snippets・WPCodeの不審なコードは停止・保全・追跡・除去・監視で対処する

Code SnippetsやWPCodeに不審なコードを見つけたら、その場で削除や保存を繰り返さないでください。
まず公開被害を制限し、対象の実行を止め、一覧設定、コード全文、DB、ログを同じ時点で保全します。

次に、Code Snippetsの専用テーブルとWPCodeのwpcode投稿タイプという違いを踏まえ、
由来、役割、実行範囲、外部通信、権限操作、ファイル生成、Cron登録を確認します。

作成・更新時刻を管理者、Web、WAF、DB、ファイル、Cronの記録と照合し、登録者と侵入経路を閉じます。
その後に標準手順で除去し、正規機能を戻して、一週間まで再登録や不審挙動がないか監視してください。

Code Snippets・WPCodeの不審なコードを自分で判断できない時は

WordPress修復マルウェア駆除トラブル専門「クイックレスキュー」

不審なスニペットの保存場所、実行条件、登録者、侵入経路、影響範囲を判断できない場合は、
クイックレスキューが証拠保全、感染調査、安全な除去、再発防止まで対応します。

こんなお悩みはありませんか?
  • 覚えのないCode Snippets・WPCodeのコードが有効になっている
  • 無効化しても同じスニペットが再び登録される
  • コードが難読化され危険な動作を判断できない
  • DBを直接触ってサイトや証拠を壊すのが不安
  • 管理者・ファイル・Cronまでまとめて調査してほしい

初期費用・調査費用0円。復旧できない場合やマルウェアを駆除できない場合は全額返金保証、
作業後90日間の再感染・動作保証があります。

この記事を書いた専門家

こんにちは!20年以上ITエンジニアとして活動してきた
よこやま良平です。

Wordpress復旧やサイト修復、オンライン講座では
776件以上のレビューを頂いており

「すぐに復旧してくれる!」
「当日行ってくれて助かった!」など

評価は4.9/5.0と非常に高く好評です。

またWordPress、SEO、Officeなど30冊以上の書籍を出版しており、
売上ランキング1位を連続で獲得致しました。

その他これまでに3000以上のサービス・システム・サイトを作成。

多くの方の「できない」や「悩み」を解決してきました。
その観点からわかりやすく解説しています。

目次