Ultimate Memberという火薬庫
200,000サイトが稼働させ続ける会員制プラグインUltimate Memberに、52件の脆弱性が積み重なっている。2023年の大規模特権昇格、2024年のSQLインジェクション、そして止まらない2025〜2026年のCVEラッシュ。プラグインに認証ロジックを預ける構造そのものの限界を整理する。
- WordPress
- セキュリティ
- Ultimate Member
- プラグイン
- CVE
200,000を超えるWordPressサイトで稼働している会員制プラグイン「Ultimate Member」が、ここ数年、深刻な脆弱性の連鎖から抜け出せない。WPScanのデータベースには、このプラグインに対して公開された脆弱性が52件登録されている。2015年の初リリース以降、累計で年平均5件のペースで重大な欠陥が発見され続けている計算だ。最新リリースは2026年4月の2.11.4。それでもなお、ひと月空かないうちに次のCVE番号が割り当てられている。
業界に強い印象を残した事件を三つ、時系列に追ってみたい。
2020年:CVSS 10.0が三つ並んだ年
2020年11月、Ultimate Member 2.1.12未満に対して三件の特権昇格脆弱性が同時に公表された。CVSSスコアは10.0、10.0、9.9。満点の脆弱性が同一プラグインに同時に並ぶこと自体、当時としても異例の事態だった。攻撃者は認証なしで管理者権限を持つアカウントを作成でき、サイトの完全な乗っ取りに直結した。今振り返ると、この時点で会員制機能をプラグインに丸ごと預ける危うさは可視化されていたことになる。
2023年6月:「yyobang」攻撃キャンペーン
2023年6月29日、Wordfenceが緊急のPSAを公開した。Ultimate Member 2.6.6以下の全バージョンに、認証不要の特権昇格を許す欠陥(CVE-2023-3460、CVSS 9.8)が存在し、しかも野放しで悪用されていることが確認されたためだ。
問題の根は、プラグインがWordPressのユーザーメタキーをブラックリスト方式で防御しようとした設計判断にあった。wp_capabilities のような重要キーを禁止リストに登録していたが、WordPressのメタキーは大文字小文字を区別しないため、wp_caPabilitiEs のような表記揺れで簡単にすり抜けられた。スラッシュやエンコードを混ぜれば、禁止リストはほとんど意味をなさなかった。攻撃者は登録フォームに細工したペイロードを送るだけで、新規ユーザーの wp_capabilities を administrator に書き換えられた。
開発チームは2.6.4、2.6.5、2.6.6、そして2.6.7と立て続けに修正版をリリースしたが、最初の三つは部分的な修正にとどまり、完全なパッチが出るまで一週間以上を要した。その間、攻撃者は「apadmins」「se_brutal」「segs_brutal」といった名前の管理者アカウントを大量に作成し、yyobang などの悪意あるプラグインや autoload_one.php のバックドアをアップロードしていた。AutomatticのWP.cloudとPressableは、被害が広範囲に及んでいたためにプラットフォームレベルでパッチを当てる対応を迫られた。
開発チームは公式に謝罪と詳細な事故報告を出した。この姿勢は誠実だが、根本の問題はパッチの遅れではなく、ブラックリストで権限境界を守ろうとした設計判断そのものにあった。
2024年2月:Handalaによる悪用
2023年の悪夢が冷めやらぬうちに、2024年2月、CVE-2024-1071 が公表された。バージョン2.1.3から2.8.2までの全てが影響を受け、CVSSは再び9.8。今度は認証不要のSQLインジェクション、攻撃ベクトルは sorting パラメータだ。
研究者のChristiaan SwiersがWordfenceのバグバウンティ拡張プログラムに報告し、$2,063の報奨金が支払われた。修正版2.8.3は同月19日にリリースされたが、公表直後から親パレスチナ系の攻撃グループ「Handala」が時間ベースのブラインドSQLインジェクションを駆使して大規模な攻撃を展開した。Impervaは数千件の攻撃試行を観測し、イスラエルとフランス政府が緊急警告を出す事態となっている。Metasploitフレームワークにも公式モジュールが追加され、いまや誰でもエクスプロイトを実行できる状態だ。
問題の発生箇所は、wp-admin/admin-ajax.php 経由のメンバー一覧取得処理だった。ユーザー入力が十分にサニタイズされず、SQL CASE文と SLEEP() を組み合わせた時間差攻撃で、wp_users テーブルのパスワードハッシュまで抜かれる構造になっていた。「Enable custom table for usermeta」を有効にしているサイトが特に深刻で、認証情報の流出が現実に発生した。
2025〜2026年:止まらないCVEラッシュ
ここからが本題だ。2025年から2026年にかけても流れは変わっていない。むしろペースは加速している。
2025年12月の数週間だけで、以下のCVEが連続して修正された。
- CVE-2025-12492:認証なしの機微情報露出。
ajax_get_members関数で5文字16進トークン(MD5由来)という極端に低エントロピーな識別子を使っていたため、ユーザー名・表示名・ロール(管理者を含む)・プロフィールURL・ユーザーIDが列挙可能だった - CVE-2025-13217:YouTubeフィールド経由のストアドXSS
- CVE-2025-13220:ショートコード属性経由のストアドXSS
- CVE-2025-14081:プロフィール公開設定のバイパス
- CVE-2025-15064:ユーザー説明欄のHTML経由XSS
つまりバージョン2.11.0という単一のリリースに、種類の異なる脆弱性が複数同居していた。
2026年に入ってからも、CVE-2026-1404(2.11.1までの反射型XSS、2.11.2で修正)、CVE-2026-4248(2.11.2までの管理者パスワードリセットトークン漏洩、2.11.3で修正)、CVE-2026-39659(2.11.3までの認可制御不備、2.11.4で修正)と、ほぼ毎月のようにパッチがリリースされている。
特にCVE-2026-4248は構造的な問題を象徴している。投稿コンテンツ内で {usermeta:password_reset_link} というテンプレートタグが [um_loggedin] ショートコード経由で処理される実装になっていたため、Contributor権限の攻撃者が下書きを管理者にプレビューさせるだけで、その管理者の有効なパスワードリセットトークンを盗み出せた。「機能と権限の境界」をめぐる設計の甘さが、ここまで明け透けに露出した例は珍しい。
なぜ脆弱性が止まらないのか
Ultimate Memberが慢性的に攻撃面を生産し続けている背景には、いくつかの要因が絡み合っている。
ひとつは、扱う領域そのものの危うさだ。フロントエンドのユーザー登録、ログイン、プロフィール、コンテンツ制限、ロール管理という、本来WordPressコアの権限モデルと最も密接に関わるべき機能を、プラグインがオーバーライドする形で実装している。コアの抽象化を持たないまま権限の境界を再発明すれば、ブラックリスト方式の防御に頼らざるを得ない場面が増え、過去の特権昇格事件はまさにそこから生まれた。
もうひとつは、機能拡張の速度に対するセキュリティレビューの追いつかなさだ。YouTube埋め込み、ショートコード、テンプレートタグ、AJAXエンドポイント、メンバーディレクトリの絞り込み機能。便利な機能を増やすほど、サニタイズ漏れやエスケープ不足が新しいサーフェスを作り出していく。2025年12月から2026年4月までの数カ月で、ほぼ毎月のようにCVE番号が割り当てられている事実が、内部のレビュー体制が機能拡張のスピードに追いついていないことを物語っている。
「使い続ける」という選択のコスト
Ultimate Memberの開発チームを名指しで批判したいわけではない。CVE-2023-3460の際に正式な謝罪と詳細な事故報告を出した姿勢は、むしろ業界全体で見れば誠実な部類に入る。問題は、これだけ脆弱性が連発するソフトウェアを、20万を超えるサイトが今この瞬間も本番稼働させているという事実そのものにある。
メンバーシップサイトを運用する以上、登録ユーザーのメールアドレス、ハッシュ化済みとはいえパスワード、プロフィール情報といった個人データを抱え込むことになる。SQLインジェクション一発で wp_users テーブルが抜かれる事故は、GDPRや個人情報保護法の観点から見れば即座に通知義務が発生する規模のインシデントだ。「とりあえず最新版に上げているから大丈夫」という運用は、毎月のようにゼロデイが回ってくる現状ではほとんど気休めにしかならない。
Astro + Headless CMSのアーキテクチャに移行し、認証はClerkやAuth0、Supabase Authといった専用サービスに任せる構成に切り替えれば、認証ロジックそのものをWordPressプラグインの外側に追い出せる。攻撃面をアーキテクチャレベルで縮小するという発想は、もはや贅沢ではなく前提だ。
健全なコンテンツを残すことを考えるなら、その手前にある「健全なインフラに乗せ続けること」をいま一度問い直したい。Ultimate Memberが映す現実は、特定のプラグインの問題ではなく、WordPressというエコシステム全体に張り付いた構造的なリスクの縮図でもある。火薬庫の上に20万のサイトが乗っている。引火するかどうかではなく、いつ引火するかという段階に入っていると見るべきだろう。
Last updated