WordPress向けフォーム作成プラグイン「Ninja Forms」の保存型クロスサイトスクリプティング(Stored XSS)脆弱性「CVE-2026-94504」が、実際のサイバー攻撃で悪用されています。
WordPressセキュリティ企業Patchstackは2026年10月6日、Ninja Formsと「WPC Product Bundles for WooCommerce」の2つのプラグインに存在する保存型XSSを悪用し、同一のJavaScriptを実行させる攻撃キャンペーンを確認したと公表しました。
Ninja Formsを狙った攻撃は10月5日に観測されています。攻撃者は、フォームから悪意あるデータを保存し、WordPress管理者が管理画面でその投稿内容を確認した際にJavaScriptを実行させます。
その後、管理者のログイン済みセッションを悪用して、不正なWordPressプラグインのインストール、管理者アカウントの作成、管理画面から見えにくい管理者アカウントの作成などを行い、継続的なアクセス手段を確保します。
CVE-2026-94504はNinja Forms 3.15.3以前に影響し、3.15.4で修正されています。WordPress.orgでは9月28日に3.15.5も公開されているため、利用企業は最新版への更新と、すでに侵害されていないかの確認が必要です。
Ninja Forms CVE-2026-94504のサマリー
- 対象はWordPress向けフォーム作成プラグイン「Ninja Forms」
- 脆弱性はCVE-2026-94504
- 種別は保存型クロスサイトスクリプティング(Stored XSS)
- CWEはCWE-79
- CVSS v3.1は7.2(High)
- Ninja Forms 3.15.3以前が影響
- 修正版は3.15.4
- WordPress.orgでは3.15.5が公開済み
- Patchstackが2026年10月5日にNinja Formsを狙った実悪用を観測
- 攻撃者自身のWordPressアカウントは不要
- 悪意あるフォーム送信を管理者が閲覧すると、管理画面の権限でJavaScriptが実行される
- 攻撃後、不正プラグインや複数の管理者アクセス手段が設置される
- 同じ攻撃基盤がWPC Product Bundles for WooCommerceのCVE-2026-93836でも使用されている
- パッチ適用だけでは、すでに設置されたバックドアや不正アカウントは削除されない
| 項目 | 内容 |
|---|---|
| 製品 | Ninja Forms |
| CVE | CVE-2026-94504 |
| 脆弱性 | 保存型クロスサイトスクリプティング(Stored XSS) |
| CWE | CWE-79 |
| CVSS v3.1 | 7.2(High) |
| 影響バージョン | 3.15.3以前 |
| 修正版 | 3.15.4 |
| 最新版 | 3.15.5(2026年9月28日公開) |
| 悪用確認 | あり |
| Ninja Formsへの攻撃観測 | 2026年10月5日 |
| 主な攻撃後の動作 | 不正プラグイン設置、管理者アカウント作成、永続化 |
| 有効インストール | 50万件超 |
CVE-2026-94504とは
CVE-2026-94504は、Ninja Formsのフォーム送信データをWordPress管理画面で表示する処理に起因する保存型XSSです。
CVEの公開情報によると、Ninja Forms 3.15.3以前では、リッチテキストではないテキストエリアへ送信された値が保存され、従来型の管理画面で安全なHTMLエンコードを行わずに表示される場合があります。
攻撃者は認証なしでフォームへ悪意あるデータを送信できます。
保存されたデータをWordPress管理者が管理画面から確認すると、攻撃者が埋め込んだスクリプトがWordPressの管理画面と同じオリジンで実行されます。
この脆弱性は2026年9月22日にCVEとして公表され、WordfenceがCNAとしてCVSS v3.1を7.2(High)と評価しています。
Ninja Formsは9月21日に公開した3.15.4で、管理画面の投稿編集画面における出力エスケープを強化しています。
攻撃者のアカウントは不要、管理者がフォーム送信内容を閲覧すると発火
今回の攻撃では、「攻撃者が管理者アカウントへログインしてXSSを実行する」という仕組みではありません。
攻撃者は認証されていない状態から、Ninja Formsの通常のフォーム送信機能を使って悪意ある入力を保存できます。
その後、
- 攻撃者が悪意ある値をフォームから送信
- Ninja Formsが送信内容を保存
- WordPress管理者が管理画面で該当の送信内容を閲覧
- 保存されていたJavaScriptが管理画面上で実行
- 管理者のログイン済みセッションを使って後続処理を実行
という流れで攻撃が成立します。
つまり、攻撃者側の認証は不要ですが、攻撃を最後まで成立させるには、権限を持つWordPress利用者が悪意ある送信内容を管理画面で開くことが条件になります。
フォームから届いた問い合わせを管理者が日常的に確認しているサイトでは、通常業務そのものがトリガーになる可能性があります。
Patchstackが10月5日にNinja Formsへの実悪用を確認
Patchstackは10月4日、まずWPC Product Bundles for WooCommerceのCVE-2026-93836を悪用する攻撃を観測しました。
翌10月5日には、同一の攻撃用JavaScriptがNinja FormsのCVE-2026-94504を通じて配信されていることを確認しています。
2つのプラグイン自体に関連はありませんが、攻撃者はどちらの保存型XSSからも同じ後続ペイロードを実行しています。
Patchstackによると、悪意あるJavaScriptは「imgcdn1[.]com」から読み込まれていました。
同ドメインは2026年10月1日に登録され、数日後には今回の攻撃で使用されています。
管理者セッションを悪用して不正プラグインをインストール
保存型XSSが管理画面上で実行されると、JavaScriptはWordPress管理者のログイン済みセッションを利用します。
攻撃者はブラウザから認証Cookieを直接読み取る必要はなく、管理者としてログイン済みのブラウザにWordPressの管理操作を実行させます。
Patchstackの分析では、その後「WP Smart Thumbnails」を装う不正なWordPressプラグインがインストールされます。
確認された名称は、
- プラグイン名:WP Smart Thumbnails
- 作者名:MediaPress Labs
- プラグインスラッグ:wp-smart-thumbnails
です。
正規のNinja FormsやWordPress公式機能とは関係ありません。
不正管理者やバックドアなど複数のアクセス手段を作成
Patchstackが取得・解析した攻撃コードでは、侵害後に複数の永続化手段が作成されます。
確認された動作には、
- 通常の管理者アカウントを新規作成
- WordPressのユーザー一覧から見えにくくする別の管理者アカウントを作成
- 攻撃者が再ログインするためのアクセス手段を追加
- 認証なしで利用できるファイル管理機能を設置
などがあります。
このため、管理画面の「ユーザー」一覧を確認して不審なアカウントが見当たらなかったとしても、侵害されていないとは判断できません。
また、攻撃の入口となったNinja Formsを更新しても、すでに追加された管理者アカウントや不正プラグイン、永続化用ファイルは自動的には削除されません。
対策はNinja Forms 3.15.4以降、可能なら最新版3.15.5へ更新
Ninja Formsは3.15.4でCVE-2026-94504に関係する管理画面の出力処理を修正しました。
さらに9月28日には3.15.5が公開されています。
現在3.15.3以前を利用している場合は、少なくとも3.15.4以降、可能であれば最新の3.15.5へ更新します。
WordPressプラグインは、サイトごとに導入状況や更新タイミングが異なります。
企業で複数のWordPressサイトを管理している場合は、各サイトについて、
- Ninja Formsが導入されているか
- 有効化されているか
- 現在のバージョン
- 更新が停止しているサイトがないか
を棚卸しする必要があります。
実際の攻撃で悪用されている脆弱性は、CVSSだけでなく悪用状況とインターネット公開状況を組み合わせて優先順位を決める脆弱性管理が有効です。
3.15.4以降へ更新済みでも侵害確認が必要なケース
今回の攻撃では、修正版へ更新することで新たなXSSの悪用を防ぐことはできますが、更新前に攻撃が成功していた場合は別途対応が必要です。
特に、脆弱なバージョンを2026年9月22日以降もインターネット公開していたサイトでは、
- 不審な管理者アカウント
- 覚えのないWordPressプラグイン
- must-use plugin(mu-plugins)の追加
- 「wp-smart-thumbnails」という名称のプラグイン
- 「imgcdn1[.]com」への通信
- WordPress管理画面での不審なプラグイン追加履歴
- 管理者アカウントの作成履歴
を確認します。
Patchstackは、今回作成される管理者アカウントの一部がWordPress管理画面のユーザー一覧から隠される仕組みを確認しています。
そのため、侵害が疑われる場合は管理画面だけではなく、データベース、WP-CLI、ファイルシステム、Webアクセスログなどを使って確認する必要があります。
侵害が確認された場合は「プラグイン削除」だけで終わらせない
不正プラグインや管理者アカウントが確認された場合は、WordPressサイト全体が侵害されたものとして調査します。
対応では、
- 不正ファイル・不正プラグインの特定
- 不正管理者アカウントの確認
- 永続化用ファイルの確認
- WordPress管理者パスワードの変更
- ホスティング・SFTP・SSHなど関連認証情報の見直し
- WordPressの認証用キー・saltの更新
- アクセスログ・変更履歴の調査
- 改ざんされたテーマやプラグインの確認
- バックアップからの復旧可否の判断
などを実施します。
攻撃者が管理者権限を取得している場合、目につく不正プラグインだけを削除しても、別のアクセス手段が残っている可能性があります。
Webサイトやプラグインの脆弱性を継続的に確認する方法は、脆弱性診断ツールの種類と選び方でも整理しています。
WPC Product Bundles for WooCommerceでも同じ攻撃を確認
Patchstackは、Ninja Formsとは別に「WPC Product Bundles for WooCommerce」のCVE-2026-93836でも同じ攻撃基盤を確認しています。
CVE-2026-93836は8.6.6以前に影響する保存型XSSで、8.6.7で修正されています。
攻撃者は異なるWordPressプラグインの保存型XSSを入口として使いながら、侵害後には同じJavaScriptと不正プラグインを使用していました。
これは、攻撃者が特定のプラグインだけを狙っているのではなく、「WordPress管理者のブラウザ上でJavaScriptを実行できる保存型XSS」を複数集め、共通の侵害手順へつなげていることを示しています。
出典
- Four ways back in: the WordPress XSS campaign that hides its own admin account – Patchstack
- Ninja Forms – Contact Form Builder with Calculators, Quizzes, Signatures & AI Form Builder – WordPress.org
- CVE-2026-94504 – National Vulnerability Database
- CVE-2026-94504 – CVE Program
- Ninja Forms <= 3.15.3 Stored Cross-Site Scripting – Wordfence








