本文へ移動
情シスのミカタ
ニュース約9分で読めます

WordPressに「見えない管理者」を作る攻撃 Ninja FormsとWPC Product Bundlesの悪用と確認手順

Patchstackが2026年10月6日、WordPressのプラグイン2種の保存型XSSを使い、管理画面に出ない管理者アカウントと裏口を残す攻撃を公表しました。対象はNinja FormsとWPC Product Bundles for WooCommerceです。攻撃の流れ、残る4つの入口、侵入の跡の確かめ方を、PatchstackとNVD、WordPress.orgの変更履歴をもとにまとめます。

公開 情シスのミカタ編集部AIにより執筆チェック済み
文字
WordPressに「見えない管理者」を作る攻撃 Ninja FormsとWPC Product Bundlesの悪用と確認手順

この記事のまとめ

  • Patchstackは10月4日と5日に、WPC Product Bundles for WooCommerce(CVE-2026-93836)とNinja Forms(CVE-2026-94504)の保存型XSSを使う攻撃を観測しました。どちらも同じ不正なJavaScriptを読み込ませます。
  • 管理者が注文やフォームの送信データを開くと、不正なプラグインが入り、管理者アカウントが作られます。1回の成功で、入口が4つ残ります。
  • 隠された管理者は、管理画面のユーザー一覧にも件数にも出ません。データベースの管理者の一覧と、mu-pluginsのフォルダを直接確かめます。
  • プラグインの更新だけでは、すでに入った仕掛けは消えません。WPC Product Bundlesは8.7.4、Ninja Formsは3.15.5へ上げたうえで、侵入の跡を確かめます。
こんな方に#30代#40代#50代実務

セキュリティ会社のPatchstackは2026年10月6日、WordPressの2つのプラグインの脆弱性を使い、管理画面の一覧に出てこない管理者アカウントを作る攻撃を観測したと公表しました。対象は、フォーム作成の「Ninja Forms」(有効インストール50万以上)と、WooCommerceでセット商品を作る「WPC Product Bundles for WooCommerce」(同3万以上)です。

プラグインを更新しても、すでに作られたアカウントや裏口は残ります。この2つを使っているサイトは、更新とあわせて、侵入の跡がないかを確かめます。Ninja Formsの脆弱性と更新の手順は、Ninja FormsのXSS脆弱性CVE-2026-94504が悪用、3.15.5へ更新に書きました。この記事では、Patchstackの分析で分かった攻撃の中身と、確かめ方をまとめます。

公式の資料で確かめられたこと

項目 内容 出どころ
公表 2026年10月6日。10月4日にWPC Product Bundlesへの攻撃、翌5日にNinja Formsへの攻撃を観測。どちらも同じ不正なJavaScriptを読み込ませる Patchstack
脆弱性(1) CVE-2026-93836。WPC Product Bundles for WooCommerce 8.6.6以前の保存型のクロスサイトスクリプティング(XSS)。ログインしていない攻撃者が送り込める NVD、Patchstack
脆弱性(2) CVE-2026-94504。Ninja Forms 3.15.3以前の保存型XSS NVD、Patchstack
深刻度 どちらもCVSS 7.2(NVDに載っている、登録元Wordfenceの値) NVD
修正版 WPC Product Bundlesは8.6.7、Ninja Formsは3.15.4 Patchstack、WordPress.orgの変更履歴
最新版(10月12日確認) WPC Product Bundlesは8.7.4(10月7日)、Ninja Formsは3.15.5(9月28日) WordPress.org
攻撃の量 Patchstackの観測では、まだ限られている。ただし、確認できた2件が上限ではないとしている Patchstack

2つの脆弱性がNVDに載ったのは、どちらも9月22日です。Patchstackは、攻撃に使われたドメインが10月1日に登録されたと書いています。最初の攻撃の観測は10月4日です。

攻撃の流れ: 管理者が画面を開くと動く

保存型XSSは、攻撃者が送った内容がサイトに保存され、だれかがその画面を開いたときに、ブラウザーの中で動く脆弱性です。Patchstackによると、今回は次の場所に仕込まれました。

  • WPC Product Bundles: 注文の数量の欄。WooCommerceの注文のデータとして保存される
  • Ninja Forms: フォームの入力欄。送信データとして保存される

攻撃者はログインしません。注文や問い合わせを送るだけです。管理者が、受注や問い合わせを確かめるいつもの作業でその画面を開くと、不正なJavaScriptが動きます。

Patchstackの分析では、このJavaScriptは管理者のCookieを盗みません。管理者がログインしている画面の中で、管理者の代わりに操作を行います。そのため、CookieにHttpOnlyを付けていても防げないと説明しています。動きは次の順です。

  1. 攻撃者のサーバーに接続し、そのサイトでどこまで済んでいるかを確かめる
  2. WordPressのプラグインのアップロードの機能を使い、不正なプラグインを入れる
  3. 新しい管理者アカウントを作る
  4. 不正なプラグインの中のファイルを呼び出し、隠すための仕掛けを入れる
  5. 結果を攻撃者のサーバーに報告する

1回の成功で、入口が4つ残る

Patchstackは、XSSが1回動くと、サイトに戻る入口が4つ残ると整理しています。

Patchstackの記事の一部(英語)。保存型XSSが1回成功すると、攻撃者にはサイトへ戻る独立した4つの入口が残り、WordPressの管理画面から見えるのは1つだけと書かれている。4つは、見える管理者、must-useプラグインで隠された管理者、いちばん古い管理者として認証されるログインURL、認証のないファイル管理。脆弱なプラグインや不正なプラグインを消しても、後ろの3つは閉じないとある
Patchstackの記事。XSSが1回動くと残る4つの入口の説明出典: Patchstack「Four ways back in: the WordPress XSS campaign that hides its own admin account」(引用)
入口 中身 管理画面から見えるか
管理者アカウント WordPressのユーザーの新規追加の画面を使って作る 見える
隠された管理者アカウント 名前は「support」「updater」「maintenance」「backup」など、ありふれた約50語から選ぶ。メールアドレスは @wordpress.org 見えない
裏口のログインURL wp-login.phpに特別なパラメーターを付けたURL。開いた人は、そのサイトでいちばん古い管理者としてログインした状態になる 見えない
認証のないファイル管理 不正なプラグインのファイルに直接アクセスすると使える。ファイルの一覧、アップロード、削除、書き換えができ、パスワードは要らない 見えない(不正なプラグインは「WP Smart Thumbnails」の名前で入る)

隠された管理者と裏口のログインURLは、「must-useプラグイン」で動きます。Patchstackは、wp-content/mu-pluginsに置いたファイルは、すべてのアクセスで読み込まれ、管理画面からは無効にできず、プラグインの通常の一覧にも並ばないと説明しています。仕掛けはここにファイルを置き、隠したアカウントを、ユーザーの一覧と、管理者で絞り込んだ一覧と、一覧の上の件数から外します。

脆弱なプラグインを消しても、不正なプラグインを消しても、後ろの3つは残ると、Patchstackは書いています。

もう1つ、探しにくくする工夫があります。仕掛けは、置いたファイルの更新日時を、WordPressのフォルダの中でいちばん古い日時に書き換えます。「最近変わったファイル」を探す方法では、出てきません。

侵入されていないかの確かめ方

Patchstackが挙げている確認の場所は、次の5つです。

確かめる場所 見るもの
プラグインのフォルダ wp-content/plugins/wp-smart-thumbnails/ があるか。表示名は「WP Smart Thumbnails」1.2.4、作者は「MediaPress Labs」
must-useプラグインのフォルダ wp-content/mu-plugins/ に、class-wp-token-validate.php と、class-wp-query-(英数字8桁).php があるか
データベースの管理者 管理者をデータベースから直接出し、管理画面のユーザー一覧と比べる。データベースにだけ居るアカウントは、隠されている
データベースのオプション wp_optionsに、fz_emer_done_v1 と fz_emer_login_tokens があるか。後者があれば、裏口のログインURLが生きている
Webサーバーのログ imgcdn1[.]com、/fz/x.js、/fz/c.php の文字。wp-login.phpへの「_wplogin」付きのアクセス。wp-smart-thumbnails.phpへの直接のアクセス

管理者をデータベースから出すSQLは、Patchstackの記事に載っています。

SELECT u.user_login, u.user_email, u.user_registered
FROM wp_users u
JOIN wp_usermeta m ON m.user_id = u.ID
WHERE m.meta_key = 'wp_capabilities'
  AND m.meta_value LIKE '%administrator%';

テーブルの接頭辞を「wp_」から変えているサイトは、テーブル名と「wp_capabilities」の「wp_」を、自分のサイトの接頭辞に読み替えます(編集部の補足)。

Patchstackは、攻撃の送信元のIPアドレスを5件載せていますが、うち4件はTorの出口で、IPアドレスを止めるだけでは長く効かないとしています。また、これらの指標は観測した攻撃のもので、2つの脆弱性の悪用のすべてを表すものではないと断っています。

見つかったとき

Patchstackは、管理者のブラウザーでXSSが動いたサイトは、侵害された可能性があるものとして扱うよう書いています。挙げている手順は次のとおりです。

  • 身に覚えのないアカウントとプラグインを消す
  • mu-pluginsに置かれたファイルを消す
  • 2つのオプション(fz_emer_done_v1、fz_emer_login_tokens)を消す。オプションだけ消しても、must-useプラグインが残っていると、新しいトークンが発行されうる
  • 管理者の認証情報と、WordPressの認証用のキー(ソルト)を替える
  • ファイルとデータベースに、ほかの書き換えがないかを調べる
  • いちばん古い管理者のパスワードは、盗まれていなくても、漏れたものとして替える

サイトの保守を制作会社やサーバーの会社に任せている場合は、Patchstackの記事のURLを添えて、この確認を依頼します。

WPC Product Bundlesは8.7.4まで上げる

WordPress.orgのWPC Product Bundles for WooCommerceの変更履歴(英語)。8.7.4から8.6.7までが並び、8.7.3にはリクエスト・カートのセッション・注文の項目のデータから来るバンドルのIDを無害化して保存型XSSを防ぐセキュリティの修正、8.6.7にはWordfenceのlhking氏から報告された脆弱性の修正と書かれている
WPC Product Bundlesの変更履歴。8.6.7と8.7.3に修正の記載出典: WordPress.org「WPC Product Bundles for WooCommerce」変更履歴(引用)

WordPress.orgの変更履歴では、8.6.7に「Wordfenceのlhking氏から報告された脆弱性を修正」とあります。Patchstackは、この8.6.7がCVE-2026-93836の修正だと書いています。

変更履歴には、8.7.3にもセキュリティの修正があります。リクエスト、カートのセッション、注文の項目のデータから来るセット商品のIDを無害化して組み立て直し、保存型XSSを防ぐ、という内容です。この修正がどのCVEに当たるかは、変更履歴に書かれていません。10月12日時点の最新版は8.7.4なので、そこまで上げます。

Ninja Formsも、3.15.4のあとの3.15.5で別のXSSを修正しています。こちらも最新の3.15.5まで上げます。

書かれていないこと

  • 侵入に成功したサイトの数と、日本のサイトの被害。Patchstackが書いているのは、攻撃の試みを観測したことと、取り出したプログラムの分析です
  • 攻撃者がだれか
  • 対象のプラグインが、この2つで終わるかどうか。Patchstackは、ほかに確認できたら記事を更新するとしています
  • 2つのプラグインの開発元による注意喚起。Patchstackは、開発元の情報は変更履歴だけだと記載しています

影響する会社・しない会社

  • 影響する: WooCommerceのECサイトで、WPC Product Bundles for WooCommerceを8.6.6以前のまま使っている会社です。
  • 影響する: Ninja Forms 3.15.3以前で、問い合わせや採用のフォームを動かしている会社です。
  • 確認が要る: 2つのプラグインをすでに更新した会社です。攻撃が観測された10月4日以降に、古い版のまま管理者が注文や送信データを開いていた場合は、仕掛けが残っているおそれがあります。
  • 影響しない: WordPressを使っていない会社と、WordPressでもこの2つのプラグインを入れていない会社は、今回の2件の対象ではありません。
  • 保守を外に任せている会社: 自社で作業はしなくても、保守の会社に版の確認と侵入の跡の確認を依頼します。

情シスが今日やること

  1. 自社と関連会社のWordPressのサイトを洗い出し、管理画面のプラグインの一覧で、2つのプラグインの有無と版を確かめる。
  2. 入っていれば、WPC Product Bundlesは8.7.4へ、Ninja Formsは3.15.5へ更新する。
  3. 「侵入されていないかの確かめ方」の5つの場所を確かめる。データベースやサーバーのファイルを自社で見られないときは、保守の会社に依頼する。
  4. 跡が見つかったら、「見つかったとき」の手順を保守の会社と進め、社内の事故対応の手順に沿って報告する。
  5. 注文や問い合わせの確認に、管理者の権限のアカウントを使っているかを確かめる。今回の仕掛けは、画面を開いた人の権限で動きます。確認の作業を権限の低いアカウントに分けられないかを検討する(Patchstackの記事にある対策ではなく、編集部の補足です)。

よくある質問

Qプラグインを更新すれば、もう安全ですか?

A更新で、新しく送り込まれることは防げます。ただしPatchstackは、脆弱なプラグインや不正なプラグインを消しても、隠された管理者、裏口のログインURL、認証のないファイル管理の3つは残ると書いています。更新とあわせて、侵入の跡を確かめます。

Q管理画面のユーザー一覧に不審なアカウントが無ければ、大丈夫ですか?

Aそれだけでは分かりません。Patchstackの分析では、仕掛けが、隠したアカウントをユーザーの一覧と、一覧の上の件数から外します。データベースから管理者を直接出して、管理画面の一覧と比べます。

Q更新日時の新しいファイルを探せば、見つかりますか?

A見つからないことがあります。Patchstackによると、仕掛けは、置いたファイルの更新日時を、WordPressのフォルダでいちばん古い日時に書き換えます。日時ではなく、ファイルの名前と中身で探します。

Qどちらのプラグインも使っていません。関係ありますか?

A今回の2件の脆弱性の対象ではありません。ただしPatchstackは、確認できたのが2件というだけで、管理者の画面でJavaScriptを動かせる保存型XSSなら、ほかのプラグインでも同じ仕掛けが使われうるとしています。プラグインの更新を続けてください。

出典・参考

チェック済み。この記事は監修者によってチェックされました。(2026年10月12日)

執筆

情シスのミカタ編集部AIにより執筆

書いた AI: AI記者(解説)

法令・官公庁の発表・企業の公式発表などの一次情報を調べて、情シス向けの解説・比較・テンプレの記事を書きます。数字と日付は出典と照らして確かめ、記事の最後に出典を載せています。使っているAI: Anthropic Claude。

監修

佐々木 航株式会社Game

代表取締役。工学部出身で、21歳で起業してからシステム会社の経営一筋で8期目。アプリの受託開発から始め、いまはAIを使ったシステムソリューションを手がけています。150社以上の企業とのプロジェクトで培った開発と情報システムの現場の経験と声を形にし、激動の時代を乗り越えたいと考えています。

メモ: 掲載時に自動で(しばらくの間)

記事は AI が一次情報を調べて書き、機械の検査を通してから公開しています。人が見ているもの・見ていないものはAI の使い方に書いています。まちがいに気づいたら訂正・ご指摘からお知らせください。直したら、記事の最後に何を直したかを書きます。

役に立ったら、いいねと共有をお願いします