
SMS & OTP for WooCommerce、注文通知&放棄カート回復プラグイン(WordPress用);SMS Alert <3.9.6;未認証の権限昇格(強制パスワードリセット)

SMS Alert ≤ 3.9.5 — 認証なしの任意パスワードリセットによる権限昇格
WordPressプラグイン SMS Alert – SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery における重大な認証不備の脆弱性。パスワードリセット時にOTP検証が有効な場合、認証されていない呼び出し元が、電話番号が登録されているユーザー(管理者を含む)に対して、その電話の所有を証明することなく新しいパスワードを設定できます。
| CVE | CVE-2026-11387 |
| CWE | CWE-287: 不適切な認証 |
| CVSS 3.1 | 9.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| ベンダー | Cozy Vision Technologies Pvt. Ltd. |
| 製品 | SMS Alert (sms-alert) |
| 影響を受けるバージョン | 3.9.5 までの全バージョン |
| 修正バージョン | 3.9.6 (2026年6月27日) |
| CNA | Wordfence |
このリポジトリには、認可されたテスト専用のAbraxas Labs概念実証コードが含まれています — ベンダーへの開示、ラボでの再現、または書面による許可を得たホストでのみ使用してください。
SMS AlertはWooCommerce / WordPressのパスワード紛失フローにフックし、SMSで送信されるワンタイムコードが新しいパスワードのゲートとなることを想定しています。影響を受けるバージョンでは、option=smsalert-change-password-form の背後にあるハンドラーが、呼び出し元がOTP検証を完了したか、またはアカウントを所有しているかを確認せずに smsalert_user_newpwd を適用します。
公式のCVEレコードは、同じID確認の欠落を利用して被害者のメールアドレスを変更し、通常のリセットを通じてアカウントを乗っ取ることも可能であると指摘しています。どちらの経路も認証なしのアカウント乗っ取りです。
サイトが影響を受けるのは、以下の両方が真の場合のみです:
billing_phone)が保存されている。これらの条件下では、選択したアカウントの完全な乗っ取りが発生します。管理者の乗っ取りはサイト全体の乗っ取りを意味します。
| 条件 | 結果 |
|---|---|
| 認証なしのネットワークアクセス | WordPressの認証情報は不要 |
| 対象がショッパー / サブスクライバー | その顧客のアカウント乗っ取り |
| 対象が管理者 | wp-admin への権限昇格、プラグイン/テーマのインストール、永続的なマルウェア |
機密性、完全性、可用性はすべて高です。攻撃者は注文や個人情報を読み取り、サイトのコンテンツやユーザーを変更し、正当な所有者をロックアウトできます。
SMS Alertによるパスワードリセットはおおよそ次のようになります:
パスワード紛失リクエスト → ユーザーの電話にOTP送信 → 検証済みのパスワード変更POST
壊れているステップは最後のものです。プラグインは $_REQUEST['option'] == 'smsalert-change-password-form' でルーティングし(3.9.5の class-wpresetpassword.php を参照)、その後送信されたパスワードを書き込みます。このPOSTを、呼び出し元がリセット対象のユーザーであることを証明する以前のOTPセッション、nonce、または権限チェックにバインドしていません。
この概念実証コードはそのハンドラーに留まります:
/my-account/lost-password/ と /wp-login.php?action=lostpassword に wc_reset_password を設定して POST し、被害者のユーザー名に対してプラグインのリセットパスに入ります。option=smsalert-change-password-form に加えて smsalert_user_newpwd / smsalert_user_cnfpwd を /、/my-account/lost-password/、およびwp-loginのパスワード紛失アクションに POST します。password-reset=true を含む Location ヘッダーは成功とみなされます。wp-login.php を試行し、ラボ実行で真の乗っ取りと失敗(OTPオプションがオフ、またはユーザーに電話番号がない)を区別します。OTPは送信されません。それがこのバグです。
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py は小さなPython 3クライアントです:カラーバナー、その後上記の3つのステップを実行します。コマンドラインで渡したURLとのみ通信します。
requestsHomebrew Python(PEP 668)を使用するmacOSでは、システムの pip install ではなくvenvを使用してください:
python3 -m venv .venv
.venv/bin/pip install requests
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py <base_url> <victim_username> [new_password]
.venv/bin/python3 CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py \
https://shop.example \
admin
3番目の引数で適用するパスワードを設定します。デフォルトは abr4x4s#L4b5 です。
引数なしで実行すると、スクリプトはバナーと使用方法を表示して終了コード 1 で終了します。これはクライアントが起動することを確認する安全な方法です。
対象のWordPressサイトはSMS Alert ≤ 3.9.5 が実行されており、リセット時のOTPが有効で、被害者のユーザー名にOTP用の電話番号がすでに登録されている必要があります。パッチ適用済みの3.9.6+サイト、または電話番号のないユーザーに対しては、ログインチェックは失敗することが予想されます。
所有していない、または書面によるテスト許可を得ていないホストにはこれを向けないでください。
wp-admin セッションを信頼できないものとして扱います。class-ultimatemember.php (Trac)研究および教育目的のみ。このリポジトリをホストする当事者と対象システムの所有者の両方から明示的な書面による許可を得ていない限り、いかなるホストに対してもこの資料を実行、展開、または使用しないでください。
Abraxas Labs · abraxaslabs.tech · github.com/abraxas · @abraxas_null