WordPress のフォームプラグイン Ninja Forms に、ログインしていない第三者が管理者のブラウザ上で JavaScript を動かせる脆弱性が、WPScan と Wordfence から 9/22 に公開されました。有効インストール 50 万のプラグインで、入口は誰でも送れる公開フォームです。同じ日に公開されたのは、保存された送信内容をめぐる脆弱性が合わせて 3 件で、どれも 9/21 に出た修正版 3.15.4 で塞がっています。
上げていないサイトは話が別です。修正版は公開の前日に出ていましたが、9/22 に脆弱性の中身が公開されたので、バージョンが修正前のサイトは、これを使った攻撃の対象になります。WPScan は攻撃の手順を 10/22 まで伏せていますが、Wordfence の advisory には該当するファイルの場所まで書かれています。
https://wpscan.com/vulnerability/eeed1378-2c51-4d38-9dda-4a13ce330b25/
https://wpscan.com/vulnerability/7b279db2-92e0-4122-b5c6-aa12b7b01858/
https://www.wordfence.com/threat-intel/vulnerabilities/id/c599a562-5218-4b37-bcf7-0e82008a4e68
WPScan と Wordfence の advisory と Ninja Forms の changelog をもとに、やることだけ整理しました。
取るべき対応
- プラグイン一覧で Ninja Forms のバージョンを見る
- 3.15.4 なら対応済みで、9/21 に出た現行版です
- 3.15.3 以下なら 3.15.4 に上げる
- Ninja Forms は 8/24 の 3.15.1 から 4 回続けてセキュリティ修正を含む版を出していて、3.15.4 に上げるとそれらも全部塞がります
- 上げないまま使い続ける回避策は advisory に書かれていません
- 上げるまでは、管理画面で送信内容を開かず、CSV にも書き出さない
対象者
対象は 3.15.3 以下を入れているサイトです。WPScan は 2 件の対象を 3.15.3 だけとし、Wordfence は残る 1 件を 3.15.3 以下としていますが、どちらも 3.15.4 で塞がっています。見るのは「3.15.4 より前かどうか」だけ。成立条件になる設定は advisory に書かれておらず、攻撃者側に要るのは公開されたフォームに送信できることだけです。あとは管理者がその送信内容を開くか、CSV に書き出した時点で成立します。
| 内容 | 対象バージョン | CVSS | 出どころ |
|---|---|---|---|
| 送信内容の編集画面で JavaScript が動く(CVE-2026-92438) | 3.15.3 | 8.8 | WPScan |
| CSV エクスポートで PHP オブジェクトインジェクション(CVE-2026-91827) | 3.15.3 | 7.5 | WPScan |
| 旧来の送信内容エディタで JavaScript が動く(CVE-2026-94504) | 3.15.3 以下 | 7.2 | Wordfence |
起こったこと
ログインしていない攻撃者が公開フォームから送った値は、そのまま管理画面まで届きます。3 件のうち 1 件目は、その値を送信内容の編集画面がエスケープせずに出力するものです。管理者が送信内容を開いた時点で、仕込まれた JavaScript が管理者のブラウザで動きます。動くのは管理者としてログインした状態のブラウザなので、CVSS は 8.8。
一方 2 件目は、管理者が送信内容を CSV に書き出すときに、送られた値がそのままデシリアライズされるものです。そこに他のプラグインやテーマ由来の POP チェーンがあれば、ファイル操作やリモートコード実行につながると advisory に書かれています。残る 3 件目は Wordfence が別に公開したもので、旧来の送信内容エディタでテキストエリアの値がエンコードされずに出ます。こちらが動くのは、管理者が送信内容の URL を直接開いたときです。
原因
原因は 2 つ。どちらも advisory に書かれています。1 つ目は送信内容の編集画面が、フォームから送られた値をエスケープせずに出力していたこと。2 つ目は CSV エクスポートが、保存された送信内容の値をデシリアライズされるままにしていたことです。3.15.4 の changelog にも同じ 2 点が、編集画面の出力エスケープの強化と、CSV エクスポートのオブジェクトインジェクション対策として書かれています。


