
Plugin SMS & OTP pour WooCommerce, notifications de commandes et récupération de panier abandonné pour WordPress ; SMS Alert <3.9.6 ; Élévation de privilèges non authentifiée (réinitialisation forcée du mot de passe)

SMS Alert ≤ 3.9.5 - élévation de privilèges non authentifiée via réinitialisation arbitraire du mot de passe
Une faille critique d'authentification incorrecte dans le plugin WordPress SMS Alert - SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery. Lorsque la vérification OTP est activée pour les réinitialisations de mot de passe, un appelant non authentifié peut définir un nouveau mot de passe pour un utilisateur disposant d'un numéro de téléphone enregistré - y compris les administrateurs - sans prouver la possession de ce téléphone.
| CVE | CVE-2026-11387 |
| CWE | CWE-287: Improper Authentication |
| CVSS 3.1 | 9.8 Critique (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Éditeur | Cozy Vision Technologies Pvt. Ltd. |
| Produit | SMS Alert (sms-alert) |
| Affecté | Toutes les versions jusqu'à 3.9.5 |
| Corrigé | 3.9.6 (27 juin 2026) |
| CNA | Wordfence |
Ce dépôt contient une preuve de concept d'Abraxas Labs destinée exclusivement à des tests autorisés - divulgation au fournisseur, reproduction en laboratoire, ou un hôte pour lequel vous disposez d'une autorisation écrite d'évaluation.
SMS Alert s'accroche au flux de mot de passe perdu de WooCommerce / WordPress afin qu'un code à usage unique envoyé par SMS soit censé conditionner le nouveau mot de passe. Dans les versions affectées, le gestionnaire derrière option=smsalert-change-password-form applique smsalert_user_newpwd sans vérifier que l'appelant a complété la vérification OTP ou possède autrement le compte.
L'enregistrement CVE officiel note également que la même vérification d'identité manquante peut être utilisée pour modifier l'adresse e-mail d'une victime puis prendre le contrôle du compte via une réinitialisation normale. L'une ou l'autre voie constitue une prise de contrôle de compte non authentifiée.
Les sites ne sont exposés que lorsque ces deux conditions sont réunies :
billing_phone).Dans ces conditions, l'impact est la compromission totale du compte choisi. La prise de contrôle d'un administrateur équivaut à une compromission totale du site.
| Condition | Résultat |
|---|---|
| Accès réseau non authentifié | Aucun identifiant WordPress requis |
| La cible est un client / abonné | Prise de contrôle du compte de ce client |
| La cible est un administrateur | Élévation de privilèges vers wp-admin, installation de plugins/thèmes, maliciel persistant |
La confidentialité, l'intégrité et la disponibilité sont toutes élevées : l'attaquant peut lire les commandes et les données personnelles, modifier le contenu du site et les utilisateurs, et verrouiller le propriétaire légitime.
La réinitialisation de mot de passe avec SMS Alert ressemble à peu près à ceci :
lost-password request → OTP to the user’s phone → verified change-password POST
L'étape défaillante est la dernière. Le plugin effectue son routage sur $_REQUEST['option'] == 'smsalert-change-password-form' (voir class-wpresetpassword.php en 3.9.5) puis écrit le mot de passe soumis. Il ne lie pas ce POST à une session OTP préalable, un nonce ou une vérification de capacité qui prouverait que l'appelant est l'utilisateur nommé dans la réinitialisation.
Cette preuve de concept reste sur ce gestionnaire :
POST vers WooCommerce /my-account/lost-password/ et /wp-login.php?action=lostpassword avec wc_reset_password défini, afin que le chemin de réinitialisation du plugin soit emprunté pour le nom d'utilisateur de la victime.POST option=smsalert-change-password-form plus smsalert_user_newpwd / smsalert_user_cnfpwd vers /, /my-account/lost-password/ et l'action lost-password de wp-login. Un en-tête Location contenant password-reset=true est considéré comme un succès.wp-login.php avec le nouveau mot de passe afin qu'une exécution en laboratoire puisse distinguer une véritable prise de contrôle d'un échec (option OTP désactivée, ou aucun téléphone sur l'utilisateur).Aucun OTP n'est soumis. C'est là le bug.
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py est un petit client Python 3 : bannière colorée, puis les trois étapes ci-dessus. Il ne communique qu'avec l'URL que vous passez en ligne de commande.
requestsSur macOS avec Homebrew Python (PEP 668), utilisez un venv plutôt qu'un pip install système :
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
Un troisième argument définit le mot de passe à appliquer ; la valeur par défaut est abr4x4s#L4b5.
Sans argument, le script affiche la bannière et l'utilisation, puis se termine avec le code 1. C'est un moyen sûr de confirmer que le client démarre.
Le site WordPress cible doit exécuter SMS Alert ≤ 3.9.5, avec l'OTP activé lors de la réinitialisation, et le nom d'utilisateur de la victime doit déjà disposer d'un numéro de téléphone pour l'OTP. Contre un site corrigé en 3.9.6+, ou un utilisateur sans téléphone, la vérification de connexion devrait échouer.
Ne pointez pas ceci vers un hôte que vous ne possédez pas ou pour lequel vous n'avez pas d'autorisation écrite de test.
wp-admin de la fenêtre concernée.class-ultimatemember.php (Trac)Usage de recherche et éducatif uniquement. N'exécutez pas, ne déployez pas et n'utilisez pas ce matériel contre un hôte, sauf si vous disposez d'une autorisation écrite explicite de la part de la partie hébergeant ce dépôt et du propriétaire des systèmes cibles.