セキュリティ企業のPatchstackは2026年10月6日、WordPressプラグインの保存型XSS(クロスサイトスクリプティング)を悪用し、管理者のブラウザ上で不正なスクリプトを実行させる攻撃キャンペーンを報告しました。対象として挙げられたのは「WPC Product Bundles for WooCommerce」と「Ninja Forms」で、攻撃が成功すると、ユーザー一覧に表示されない隠し管理者アカウントなど、複数の侵入経路が残されます。Patchstackは、脆弱なプラグインや偽プラグインを削除しても、残された侵入経路の一部は閉じないとしています。更新だけでは、すでに侵入された痕跡の確認にはなりません。
この記事では、Patchstackの報告をもとに、攻撃の仕組みと、サイト運営者が確認すべき点を整理します。ここで挙げる検出方法は、自分が管理するサイトを調べるためのものです。
ニュースの概要
Patchstackの記事によると、攻撃者は脆弱なプラグインに不正なデータを保存させ、管理者がWooCommerceの注文データやNinja Formsの送信内容を管理画面で表示したときに、1つのJavaScriptを実行させます。このスクリプトは管理者のログイン状態を使って、不正なプラグインのインストールや管理者アカウントの作成を行います。ペイロード(攻撃用のスクリプト)が最初に観測されたのは、WPC Product Bundlesでは2026年10月4日、Ninja Formsでは10月5日とされています。
Patchstackは、今回報告した2件の脆弱性は確認できた件数であり、上限ではないとしています。攻撃者は、管理者に届く保存型XSSを集めて、同じ侵入後の仕組みを使い回していると説明されています。
何が変わるのか
対象のプラグインと修正版
- WPC Product Bundles for WooCommerce:CVE-2026-93836、認証なしの保存型XSS(8.6.6まで)。修正版は8.6.7。有効インストール数は3万以上。
- Ninja Forms:CVE-2026-94504、旧式の管理画面の送信内容エディターにおける認証なしの保存型XSS(3.15.3まで)。修正版は3.15.4。有効インストール数は50万以上。
Patchstackの記事では、2件ともCVSSは7.1、公開は2026年9月22日とされています。Ninja Formsの公式ページのチェンジログによると、3.15.4は2026年9月21日のリリースで、管理画面の送信内容の編集画面での出力エスケープが強化されました。公式ページが示す現在の安定版は3.15.5です。
攻撃の流れ
Patchstackの説明では、攻撃は次の順に進みます。
- 保存された不正データが、管理者が該当の画面を開いたときに管理画面で実行される。
- スクリプトが攻撃者のサーバーに接続し、そのサイトでどの段階が済んでいるかを確認する。
- 管理者のセッションを使い、WordPress標準のインストーラーで偽のプラグインをアップロードする。
- 管理者アカウントを作成する。
- 永続化のためのスクリプトを実行し、結果を攻撃者に送る。
このスクリプトはCookieを盗みません。管理者のブラウザから同一オリジンのリクエストを送り、WordPressが管理操作に必要とするnonce(確認用の値)を画面から取り出して使います。そのため、HttpOnly属性のCookieでは、この攻撃は防げないと説明されています。
偽プラグインと隠し管理者
偽のプラグインは「WP Smart Thumbnails」(バージョン1.2.4、作者名「MediaPress Labs」)を名乗り、スラッグはwp-smart-thumbnailsだとされています。中には、認証なしで使えるファイル管理機能が含まれ、任意のファイルの書き込みができると報告されています。
永続化のスクリプトは、無害な単語に見えるユーザー名(supportやbackupなど)の管理者を作り、MU-Plugin(wp-content/mu-plugins/に置くプラグイン)で、ユーザー一覧や件数の表示からそのアカウントを隠します。MU-Pluginは管理画面から無効化できず、プラグイン一覧にも出ません。さらに、特殊なURLからログインできる仕組みも作られ、そのURLは「最も古い管理者」としてログインする、と説明されています。
Patchstackは、1回のXSS実行で次の4つの侵入経路が残り得るとまとめています。
- 見えている管理者アカウント(攻撃者が作成)
- 隠し管理者アカウント
- 最も古い管理者としてログインできるURL
- 認証なしで使えるファイル管理機能
Patchstackは、脆弱なプラグインや偽プラグインを削除しても、隠し管理者や特殊なログインURLの経路は残るとしています。MU-Pluginとオプションの削除が必要です。
読者への影響
WPC Product Bundles for WooCommerce、またはNinja Formsを使っているサイトが対象です。特に、古いバージョンのまま、管理者がWooCommerceの注文データやNinja Formsの送信内容を表示した可能性があるサイトは注意が必要です。Patchstackは、XSSが管理者のブラウザで実行された可能性のあるサイトを、侵害された可能性があるものとして扱うよう勧めています。
最新版に更新済みでも、更新の前に攻撃を受けていれば、侵入の痕跡が残るおそれがあります。なお、Patchstackは、同社の観測では悪用の件数は限定的としています。
確認すること
- WPC Product Bundlesを8.6.7以降、Ninja Formsを3.15.4以降(現在の安定版は3.15.5)に更新する。
- データベース上の管理者を全員取り出し、管理画面のユーザー一覧と見比べる。数が合わなければ、隠しアカウントがある可能性があります。メールが「@wordpress.org」のアカウントや、運用作業のような名前のアカウントも確認します。
wp-content/mu-plugins/の中に、class-wp-token-validate.phpやclass-wp-query-で始まるファイルがないか確認する。更新日時は偽装されるため、ファイルの内容で探します。wp-content/plugins/wp-smart-thumbnails/がないか、特にemer-run.phpがないか確認する。- オプション
fz_emer_done_v1とfz_emer_login_tokensがないか確認する。 - アクセスログで、
imgcdn1.com、/fz/x.js、/fz/c.phpや、wp-login.phpへの_wplogin付きのリクエストがないか確認する。 - 疑わしい痕跡があれば、不正なアカウントとプラグインを削除し、MU-Pluginと上記2つのオプションも削除する。管理者のパスワードと認証用のソルトを変更し、最も古い管理者のパスワードも漏えいした前提で扱う。
- そのうえで、ファイルとデータベースに、ほかの変更がないかを確認する。
プラグインの重大な脆弱性への備えについては、Bricksforgeに深刻な脆弱性、CVSS10.0で悪用も確認の記事も参考になります。
筆者の見解
私見では、今回の件で最も重く見るべきなのは、CVSS 7.1という数値よりも、「管理者が画面を開いた時点で、管理者の権限そのものが使われる」という構造だと考えます。注文やフォームの送信内容を日常的に開くサイトほど、実行の条件がそろいやすく、外部から入力を受け付けるプラグインの更新を後回しにしにくい理由になります。判断の基準としては、「脆弱な版で運用していた期間に、管理者が該当の画面を開いたか」を軸にし、該当するなら、更新の有無にかかわらず侵害を前提に調べるのが妥当だと考えます。見落としやすいのは、管理画面のユーザー一覧やプラグイン一覧が、今回の手口で偽装される対象だという点です。確認はデータベースとファイルの中身を直接見るやり方に寄せ、画面上の表示だけで「異常なし」と判断しないことが重要だと考えます。
出典(一次情報)
- Patchstack:Four ways back in: the WordPress XSS campaign that hides its own admin account(2026年10月6日)
- WordPress.org:Ninja Forms(チェンジログ 3.15.4)
2026年10月13日時点の情報です。

コメント