Si vous avez reçu un courriel de ma part vous renvoyant vers cette page, c’est que votre site web semble exécuter une version de SMS Alert (l’extension WordPress répertoriée sous le nom “SMS Alert – SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery”, par Cozy Vision Technologies, qui se trouve dans vos fichiers à /wp-content/plugins/sms-alert/) qui se situe dans la plage de versions affectées par un problème de sécurité connu. Cette page explique en quoi consiste le problème, comment déterminer s’il s’applique à votre site, et comment procéder à la mise à jour. Il s’agit d’une extension WordPress d’un bout à l’autre.

Avant toute chose, le fait le plus important à retenir de cet avis : une version située dans la plage affectée ne signifie pas en soi que votre site est exposé. Le problème ci-dessous ne se pose que lorsque deux conditions sont réunies, et aucune des deux n’est visible depuis l’extérieur de votre site :

  1. Votre site a la vérification OTP activée pour la réinitialisation des mots de passe dans les paramètres de SMS Alert, et
  2. le compte visé possède un numéro de téléphone enregistré.

Si vous utilisez SMS Alert uniquement pour les notifications de commande, les messages de panier abandonné, ou l’OTP lors du paiement ou de l’inscription, et non pour la vérification des réinitialisations de mot de passe, alors ce problème ne concerne très probablement pas votre site, même sur une version affectée. Je peux lire la version de votre extension à partir d’un fichier public, mais je ne peux pas voir vos paramètres, cet avis est donc un avertissement de précaution, et non un constat confirmé concernant votre site.

Le problème correspond au CVE-2026-11387, une prise de contrôle de compte non authentifiée via le processus de réinitialisation du mot de passe de l’extension (CWE-640, récupération de mot de passe faible). Il affecte les versions 3.0.0 à 3.9.5 et est corrigé dans la version 3.9.6. Si vous utilisez une version affectée, mettez à jour SMS Alert vers la version 3.9.6 ou une version ultérieure. Les versions 3.9.7 et 3.9.8 sont sorties plus tard et corrigent d’autres problèmes ; elles sont toutes deux sans danger en ce qui concerne ce problème, et 3.9.8 est la version actuelle. Il présente un score CVSS de 9.8 et du code de preuve de concept est public, ce qui explique pourquoi j’écris même si la question de configuration ci-dessus peut très bien jouer en votre faveur.

Un mot sur l’urgence, car il s’agit d’un avis conditionnel. Si vous n’utilisez pas SMS Alert pour la vérification lors de la réinitialisation du mot de passe, la mise à jour relève de la maintenance ordinaire de l’extension. Si c’est le cas, veuillez traiter la mise à jour comme une priorité : dans cette configuration, la faille pourrait permettre à un visiteur distant sans aucun compte de définir un nouveau mot de passe pour tout utilisateur ayant un numéro de téléphone enregistré, y compris un administrateur, ce qui reviendrait à céder le contrôle du site.

Il s’agit d’une faille de l’extension, et non du noyau de WordPress ou de WooCommerce. Un WordPress entièrement à jour ne vous protège pas si l’extension SMS Alert elle-même est sur une version affectée.

Ce message est-il légitime ?

Oui. Il s’agit d’un avis de divulgation responsable et de bonne foi émis par un chercheur en sécurité indépendant. Je ne vous demande pas d’argent, de mots de passe ou d’accès à votre site, et je n’ai pas tenté de pénétrer dans votre site, de lui soumettre quoi que ce soit, ou d’exploiter quoi que ce soit.

J’ai simplement examiné les fichiers publiquement visibles que votre site web sert à chaque visiteur (de la même manière que votre page d’accueil est publique) et noté le numéro de version que l’extension publie dans son fichier public readme.txt. Je n’ai spécifiquement pas touché au processus de réinitialisation du mot de passe, et rien dans cette vérification ne touche vos données, votre zone d’administration ou toute partie privée de votre site (plus de détails sous Ce que j’ai fait et n’ai pas fait ci-dessous).

Si vous souhaitez vérifier mon identité, consultez les coordonnées en bas de cette page et la page À propos.

Pourquoi cela compte

SMS Alert envoie des notifications par SMS et WhatsApp pour les boutiques WooCommerce, et peut également placer un code à usage unique devant certaines actions de l’utilisateur. L’un des processus qu’il peut protéger ainsi est la réinitialisation « mot de passe oublié ? » : le visiteur demande une réinitialisation, l’extension envoie par SMS un code à usage unique au numéro de téléphone associé au compte, et le nouveau mot de passe n’est censé être défini qu’une fois ce code correctement saisi.

Dans les versions affectées, l’étape qui définit le nouveau mot de passe ne vérifiait pas que le code à usage unique avait réellement été validé. La réinitialisation pouvait donc être menée jusqu’au bout sans que le code ne soit jamais saisi, par une personne qui n’est pas connectée et qui n’a aucun compte propre. La version 3.9.6 ajoute la vérification manquante, de sorte que l’étape de définition du mot de passe refuse désormais de s’exécuter tant que l’épreuve du code n’a pas été validée au préalable.

Deux éléments déterminent l’importance de ce problème pour un site donné. Premièrement, le point d’entrée est cette configuration spécifique : l’extension n’exécute son propre processus de réinitialisation que là où un administrateur a activé la vérification OTP pour les réinitialisations de mot de passe, et elle ne dispose d’un code à envoyer que pour un compte disposant d’un numéro de téléphone enregistré. Un site qui n’a jamais activé cette fonctionnalité n’est très probablement pas exposé du tout, même sur une version affectée. Deuxièmement, là où la configuration est en place, l’impact est sérieux et non marginal, car rien ne le limite aux comptes à faibles privilèges : tout compte disposant d’un numéro de téléphone enregistré peut être ciblé, administrateurs compris.

Si mon courriel citait ce problème, cela signifie que la version indiquée par votre site se situe dans la plage affectée. Je n’ai pas testé si votre site en particulier est exploitable, et je ne peux pas voir comment vos paramètres OTP sont configurés ; tout ce que j’ai observé, c’est que le site indique une version affectée.

Suis-je concerné ?

Deux questions décident de la situation, dans cet ordre.

Premièrement : utilisez-vous SMS Alert pour vérifier les réinitialisations de mot de passe ? C’est la question décisive, et vous seul pouvez y répondre. Vérifier vos propres paramètres est entièrement sûr et constitue tout l’intérêt de cette page.

  • Dans l’administration WordPress, ouvrez le menu SMS Alert et accédez à ses paramètres, puis à la section qui contrôle la vérification OTP. Cette section répertorie les processus devant lesquels vous pouvez placer un code à usage unique. Vérifiez si la réinitialisation du mot de passe (parfois affichée sous la mention « mot de passe perdu » ou « mot de passe oublié ») figure parmi ceux que vous avez activés.
  • Si elle n’est pas activée, ce problème n’atteint très probablement pas votre site, même sur une version affectée. La mise à jour reste toutefois recommandée, dans le cadre de la maintenance ordinaire.
  • Si elle est activée, le problème vous concerne, et vous devriez mettre à jour rapidement.

Veuillez ne pas essayer de reproduire le problème contre votre propre site ou celui de quiconque, et vous n’avez pas besoin de le faire pour répondre à la question ci-dessus : la lecture de vos paramètres vous indique tout ce que vous devez savoir.

Deuxièmement : quelle version utilisez-vous ? Vous n’avez pas à me faire confiance sur parole, mais pour cette extension, l’une des méthodes de vérification les plus évidentes est trompeuse, il est donc utile de lire cette partie attentivement.

Depuis l’administration WordPress (faisant foi) :

  1. Connectez-vous à votre tableau de bord WordPress (généralement à l’adresse yourdomain.com/wp-admin).
  2. Allez dans Extensions puis Extensions installées.
  3. Recherchez l’entrée répertoriée sous “SMS Alert – SMS & OTP for WooCommerce …“ (son dossier est sms-alert) et notez la version affichée sous son nom. C’est la véritable version installée.

Depuis le manifeste public (aucune connexion requise) : ouvrez yourdomain.com/wp-content/plugins/sms-alert/readme.txt dans un navigateur. La ligne Stable tag: près du haut est la version que votre installation indique, et c’est le même fichier public que j’ai lu.

Une chose à ne pas croire : le numéro ?ver= attaché aux scripts et feuilles de style frontaux de l’extension dans le code source de votre page. SMS Alert marque ces actifs à partir d’une constante interne qui a, au moins une fois, pris du retard sur la version réelle publiée : la version 3.5.0 a été livrée avec ses actifs marqués 3.4.9. Lire la version de cette manière peut donc vous montrer une version plus ancienne que celle que vous utilisez réellement, ce qui, à la limite, transformerait une installation corrigée en 3.9.6 en une apparente 3.9.5. C’est exactement pour cette raison que je ne l’ai pas utilisé pour décider qui contacter, et pourquoi vous devriez plutôt juger votre version à partir de l’écran d’administration ou de la ligne du readme.txt.

Appliquez ensuite cette règle, en notant que les versions se comparent numériquement, et non alphabétiquement, de sorte que 3.9.10 serait plus récente que 3.9.9 :

  • 3.0.0 à 3.9.5 : potentiellement affectée (sous réserve de la question de configuration OTP ci-dessus), mettez à jour maintenant.
  • 3.9.6 ou plus récente : déjà corrigée. Cela inclut 3.9.7 et 3.9.8, qui sont des versions ultérieures traitant d’autres problèmes ; la version actuelle est 3.9.8.
  • Antérieure à 3.0.0 : en dehors de ce sur quoi je suis prêt à formuler une affirmation. La plus ancienne version encore publiée par l’éditeur est 3.0.0, je n’ai donc aucun moyen d’examiner quoi que ce soit en dessous, et je préfère ne rien dire plutôt que d’accuser une version que je ne peux pas vérifier. En pratique, ce cas est hypothétique : la plus ancienne installation que j’ai observée où que ce soit est une version 3.4.x.

Comment mettre à jour

Le chemin le plus sûr est de mettre à jour via WordPress lui-même, après avoir réalisé une sauvegarde :

  1. Sauvegardez votre site (fichiers et base de données) avant d’apporter des modifications. La plupart des hébergeurs proposent des sauvegardes en un clic, ou vous pouvez utiliser une extension de sauvegarde WordPress.
  2. Dans l’administration WordPress, allez dans Tableau de bord puis Mises à jour, ou Extensions puis Extensions installées. Si une mise à jour de SMS Alert est répertoriée, installez-la à partir d’ici.
  3. Si vous préférez la ligne de commande, WP-CLI effectue la même opération : wp plugin update sms-alert (la commande utilise le nom du dossier, sms-alert).
  4. Si aucune mise à jour n’apparaît, vous pouvez obtenir la dernière version directement depuis la page de l’extension sur l’annuaire WordPress.org, SMS Alert, et procéder à la mise à jour via Extensions puis Ajouter une extension puis Téléverser une extension.
  5. Après la mise à jour, confirmez le nouveau numéro de version (3.9.6 ou ultérieur) en suivant les étapes ci-dessus, et vérifiez que vos notifications de commande et tous les processus OTP que vous utilisez fonctionnent toujours normalement.

Pendant que vous y êtes, il est utile de confirmer que le noyau WordPress, WooCommerce, et vos autres extensions sont à jour, car le même principe s’applique à toutes.

Après la mise à jour

La mise à jour vers la version 3.9.6 ou ultérieure résout le problème, et pour la plupart des sites, cela constitue la totalité de la tâche. Cette page est un avis de précaution, et non un rapport d’incident : je n’ai aucune visibilité sur ce qui aurait pu se produire sur votre site, et je ne l’ai pas vérifié.

Un suivi mérite d’être envisagé, et il est conditionné par la même question de configuration. Si votre site avait la vérification OTP activée pour les réinitialisations de mot de passe lors de l’utilisation d’une version affectée, il était alors au moins théoriquement possible que quelqu’un ait défini un nouveau mot de passe sur un compte disposant d’un numéro de téléphone enregistré. La mise à jour ferme la brèche, mais elle n’annule pas un accès déjà obtenu, donc dans ce cas, deux précautions de routine sont judicieuses :

  • Examinez vos comptes administrateur, ainsi que tout autre compte important, à la recherche d’entrées que vous ne reconnaissez pas ou de changements de rôle que vous n’avez pas effectués.
  • Passez en revue les changements de mot de passe récents et les connexions récentes pour les comptes disposant d’un numéro de téléphone enregistré, et réinitialisez tout mot de passe qui semble avoir changé sans que le titulaire du compte ne l’ait demandé.

Si vous trouvez quelque chose qui vous préoccupe, la traiter comme tout autre accès non autorisé suspecté est la bonne réponse : changez les mots de passe des administrateurs, et envisagez de régénérer les clés secrètes et les sels dans wp-config.php, ce qui déconnecte toutes les sessions existantes. Si votre site n’a jamais eu l’OTP de réinitialisation du mot de passe activé, la mise à jour seule suffit.

Ce que j’ai fait et n’ai pas fait

Pour être entièrement transparent sur la vérification à l’origine de mon courriel : j’ai uniquement lu deux fichiers publics que votre site sert déjà à chaque visiteur, à savoir le fichier public readme.txt de l’extension et votre page d’accueil. Je n’ai pas accédé à votre zone d’administration WordPress, à votre base de données, ou à toute partie privée du site. En particulier, je n’ai pas touché au processus de réinitialisation du mot de passe, je n’ai rien soumis à votre site, et je n’ai rien testé ni exploité.

Je m’abstiens également, délibérément, de publier les détails qui aideraient quelqu’un à exploiter ce problème : la page ci-dessus décrit la faille au niveau dont un propriétaire de site a besoin, et pas plus, et je ne fais pas de lien vers le code de preuve de concept public.

Il s’agit d’une observation basée sur la version : votre site indique une version dans la plage affectée. Comme ce problème dépend de la configuration, un site dans cette plage peut ne pas être exposé du tout (s’il n’utilise pas la vérification OTP pour les réinitialisations de mot de passe), et il peut également déjà être atténué par d’autres moyens, comme un pare-feu applicatif web. Cet avis n’est pas une affirmation selon laquelle votre site était exploitable au moment de ma vérification.

Je n’ai pas de webmestre / je suis bloqué

Si vous n’êtes pas la personne qui maintient le site, veuillez transférer cette page à la personne qui s’en charge (votre développeur web, agence ou hébergeur). Elle reconnaîtra rapidement les étapes ci-dessus.

Si vous maintenez le site vous-même et que vous êtes bloqué, je serai heureux de vous aider à vous orienter dans la bonne direction, sans frais. Contactez-moi en utilisant les coordonnées ci-dessous.

Contact

Evan Harris, chercheur en sécurité

Je prends contact concernant ce type de problème uniquement pour aider les exploitants à sécuriser leurs sites. Si vous préférez ne plus être contacté, faites-le-moi savoir et je le respecterai.

Références

Avis officiels et suivi

Éditeur / extension

</content> </invoke>