SMS Alert permits unauthenticated account takeover through an OTP session mismatch
SMS Alert through 3.9.7 can authenticate an unauthenticated caller as an existing WordPress user when the signup-with-mobile flow is enabled. A caller first verifies an OTP for a phone number they control, then sends option=signwthmob with a different billing_phone value to processRegistration(). The vulnerable handler trusts the session's sa_mobile_verified flag and uses an insufficient substring comparison against sa_mobile before resolving the supplied phone number and passing the victim user ID to wp_set_auth_cookie(). A known or guessable administrator phone number therefore permits full site takeover. The CNA record and upstream source do not identify a dedicated URL beyond the plugin's normal request router.
- Component
- SMS Alert – SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery
- Plugin slug
sms-alert- Affected
- <= 3.9.7
- Safe version
3.9.8- Published
- Jul 28, 2026
This CVE was published Jul 28, 2026 and is one of 15 known issues for this plugin.
Update, patch or deactivate.
Update SMS Alert to 3.9.8 or later. Invalidate active sessions, reset credentials for potentially targeted accounts, and review authentication and account activity for logins associated with the signup-with-mobile flow.
A safe version is available, so updating to that version or later is the preferred remediation. If an immediate update is not practical, consider a targeted application patch or temporarily restricting the affected functionality.
Deactivate only when warranted by your risk profile, or when advised by your hosting provider in the limited circumstances where the vulnerability cannot otherwise be mitigated. If you’re unsure which action is appropriate, contact Fused or your hosting provider for guidance.
Technical description
The SMS Alert – SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery plugin for WordPress is vulnerable to Authentication Bypass leading to Account Takeover in all versions up to, and including, 3.9.7 via the `billing_phone` parameter. This is due to the `processRegistration()` function using a phone-unbound `$_SESSION['sa_mobile_verified']` boolean flag as the sole gate before issuing an authentication cookie — the flag is set to `true` after any successful OTP validation without being bound to the specific phone number that was verified. This makes it possible for unauthenticated attackers to complete OTP verification for a phone number they control, then resubmit the registration request with a victim's `billing_phone` value to have `wp_set_auth_cookie()` called for the resolved victim account, enabling full authentication as any existing WordPress user whose registered phone number is known or guessable, including administrators.
CVE / CNA vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Primary and upstream sources
- NVD record for CVE-2026-15014
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- Wordfence advisory wordfence.com