Avis de sécurité Profile Builder
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 Profile Builder (l’extension WordPress répertoriée sur WordPress.org sous le nom
« Profile Builder » / « User Profile Builder », par Cozmoslabs, qui se trouve dans vos fichiers à
/wp-content/plugins/profile-builder/) 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, comment lire votre version sans être induit en erreur, et comment procéder à la mise à jour.
Veuillez noter : il ne s’agit pas de ProfilePress. Il existe une autre extension WordPress au nom
similaire (ProfilePress, dossier wp-user-avatar), à propos de laquelle j’écris séparément. Si le dossier de
votre extension est wp-user-avatar plutôt que profile-builder, cette page n’est pas celle qu’il vous
faut ; consultez plutôt l’avis ProfilePress. Tout ce qui suit concerne uniquement
Profile Builder de Cozmoslabs.
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 sur les sites ayant activé un paramètre spécifique, et je ne peux pas voir vos paramètres depuis l’extérieur :
- L’option « Automatically Log In » de Profile Builder, qui connecte directement un nouvel utilisateur une fois son inscription terminée, doit être activée.
- Cette option est désactivée par défaut. Un site qui ne l’a jamais activée n’est pas exposé à ce problème, 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 lire votre configuration, cet avis est donc un avertissement de précaution plutôt qu’un constat confirmé concernant votre site.
Le problème correspond au CVE-2026-15368, une prise de contrôle de compte non authentifiée dans l’étape de connexion automatique de l’extension. Il affecte les versions 2.1.4 à 3.16.3 et est corrigé dans la version 3.16.4. Si vous utilisez une version affectée, mettez à jour Profile Builder vers la version 3.16.4 ou une version ultérieure. Il présente un score CVSS de 8.1. Je n’ai connaissance d’aucun code d’exploitation public pour cette faille.
Un mot sur l’urgence, car il s’agit d’un avis conditionnel. Si vous n’utilisez pas la connexion automatique après inscription, 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 sans aucun compte d’obtenir une session connectée appartenant à un utilisateur existant dont il connaît l’adresse e-mail, 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. Un WordPress entièrement à jour ne vous protège pas si l’extension Profile Builder 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 m’y inscrire, 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. Je n’ai spécifiquement pas soumis votre formulaire d’inscription, je n’ai pas créé de compte, et je ne me suis pas approché de l’étape de connexion automatique. 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
Profile Builder ajoute à un site WordPress des formulaires d’inscription, de connexion et de modification de profil côté public, afin que les visiteurs puissent s’inscrire et gérer leur propre compte sans jamais voir la zone d’administration. L’une de ses commodités est l’option permettant de connecter automatiquement un nouvel utilisateur dès que son inscription est terminée, ce qui lui évite de retaper son mot de passe sur un formulaire de connexion distinct.
Dans les versions affectées, cette commodité déterminait quel compte connecter de la mauvaise manière. Au lieu d’utiliser le compte qu’elle venait de créer, l’extension recherchait un compte à partir de l’adresse e-mail saisie dans le formulaire d’inscription, et connectait celui-ci. Si l’adresse soumise appartenait à quelqu’un qui possédait déjà un compte sur le site, la personne remplissant le formulaire se voyait attribuer une session connectée pour ce compte existant.
Deux conséquences en découlent, et elles vont dans des directions opposées. La première est que cela ne se produit que là où la connexion automatique est activée. Lorsque le paramètre est désactivé, l’extension ne déclenche jamais l’étape de connexion automatique, donc un site dans cet état n’est pas atteignable via ce problème. La seconde est que là où le paramètre est activé, rien ne limite la conséquence aux membres ordinaires : le compte qui est attribué est celui qui correspond à l’adresse soumise, et l’adresse d’un administrateur n’est généralement pas un secret. Aucun compte, aucun mot de passe et aucune coopération de la victime ne sont requis.
Je décris cela au niveau qu’un propriétaire de site doit connaître pour agir, et pas plus. Je ne publie pas les détails qui permettraient à quelqu’un de le reproduire, et je vous demande de ne pas essayer de le reproduire contre votre propre site ou celui de quiconque. Lire votre paramètre et votre numéro de version, comme décrit ci-dessous, vous dit tout ce dont vous avez besoin pour décider quoi faire.
Si mon courriel a cité ce problème, cela signifie que la version que votre site indique se situe dans la plage de versions affectées. Je n’ai pas testé si votre site particulier est exploitable, et je ne peux pas voir comment vos paramètres sont configurés. Tout ce que j’ai observé, c’est la version.
Suis-je concerné ?
Deux questions décident de la situation, dans cet ordre.
Premièrement : le paramètre « Automatically Log In » est-il activé ?
C’est la question décisive, et seul vous 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.
- Connectez-vous à votre tableau de bord WordPress (généralement à
yourdomain.com/wp-admin). - Ouvrez le menu Profile Builder dans la barre latérale, puis allez dans Réglages.
- Recherchez le commutateur intitulé « Automatically Log In », décrit comme « Active la connexion automatique des nouveaux utilisateurs après une inscription réussie ».
- Si ce commutateur est désactivé, ce problème n’atteint pas votre site, même sur une version affectée. La mise à jour reste néanmoins recommandée dans le cadre de la maintenance ordinaire.
- S’il est activé, le problème vous concerne, et vous devriez procéder à la mise à jour rapidement.
Un endroit supplémentaire à vérifier, si vous avez plusieurs pages d’inscription : une page individuelle contenant un formulaire d’inscription Profile Builder peut porter sa propre copie de ce paramètre, qui remplace le paramètre global. Si vous gérez plusieurs pages d’inscription, il vaut la peine de vérifier chacune d’elles plutôt que de se fier uniquement au commutateur global.
Veuillez ne pas essayer de reproduire le problème contre votre propre site ou celui de quiconque ; vous n’avez pas besoin de le faire pour répondre à la question ci-dessus.
Deuxièmement : quelle version utilisez-vous ?
Vous n’avez pas besoin de me faire confiance. Pour cette extension, il existe une façon spécifique de vérifier qui pourrait vous induire en erreur, il est donc utile de lire cette partie attentivement.
Depuis l’administration WordPress (faisant foi) :
- Dans votre tableau de bord WordPress, allez dans Extensions puis Extensions installées.
- Trouvez Profile Builder, l’entrée dont le dossier est
profile-builder, et notez la version affichée sous son nom.
Depuis le manifeste public (aucune connexion nécessaire) : ouvrez
yourdomain.com/wp-content/plugins/profile-builder/readme.txt dans un navigateur. La ligne
Stable tag: située près du haut est la version signalée par votre installation, et c’est l’une des
deux sources publiques que j’ai lues.
Depuis le code source de votre page (aucune connexion requise) : affichez le code source d’une page de votre site qui montre un formulaire Profile Builder, et recherchez la feuille de style frontale de l’extension à exactement ce chemin :
/wp-content/plugins/profile-builder/assets/css/style-front-end.css?ver=...
Le numéro ?ver= associé à ce fichier unique est la version propre de l’extension. Pour cette
extension, elle suit la version de publication exactement, c’est pourquoi je la considère comme une seconde
lecture fiable.
Le piège à éviter ici, et il est facile d’y tomber. Profile Builder inclut d’autres composants à
l’intérieur de son propre dossier d’extension, et ceux-ci portent leurs propres numéros de version, sans
rapport. Le module complémentaire user-profile-picture intégré, situé sous
add-ons-free/user-profile-picture/, est resté figé à 2.6.0 à travers plusieurs versions de Profile Builder
sans bouger, et il existe une intégration Divi intégrée sous assets/misc/divi/ numérotée 1.0.0. Ces deux
numéros paraissent alarmants comparés à 3.16.4, et aucun des deux ne dit quoi que ce soit sur ce problème. Si
vous lisez une version dans le code source de votre page, assurez-vous que le chemin de fichier que vous
lisez est bien assets/css/style-front-end.css et rien d’autre.
Appliquez ensuite cette règle, et notez que les versions se comparent numériquement, et non
alphabétiquement, si bien que 3.10.0 est plus récente que 3.9.9 même si elle paraît plus petite en tant que
texte. Cette extension parcourt réellement chaque ligne de version de .0 à .9 avant de passer au chiffre
suivant, donc cette distinction compte ici :
- 2.1.4 à 3.16.3 : potentiellement affectée, sous réserve de la question du paramètre ci-dessus. Mettez à jour maintenant.
- 3.16.4 ou plus récente : déjà corrigée pour ce qui concerne ce problème. La version actuelle au moment de la rédaction est 3.16.6, et opter pour la dernière version disponible est la meilleure option.
- Antérieure à 2.1.4 : non affectée par ce problème. L’erreur spécifique décrite ci-dessus a été introduite dans la version 2.1.4, donc les installations véritablement plus anciennes se situent hors de cette plage. Cela dit, une version aussi ancienne accuse un retard de plusieurs années sur tout le reste, et la mise à jour reste recommandée pour des raisons générales.
Si vous ne parvenez pas à obtenir une version lisible à partir de l’une des trois vérifications ci-dessus,
c’est courant avec cette extension et ce n’est le signe de rien de particulier : la feuille de style n’est
chargée que sur les pages qui affichent réellement l’un de ses formulaires, et les extensions de cache ou
d’optimisation suppriment régulièrement la valeur ?ver=. L’écran d’administration de la première étape
contient toujours la réponse.
Comment mettre à jour
La voie la plus sûre consiste à effectuer la mise à jour via WordPress lui-même, et à réaliser une sauvegarde au préalable :
- 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 utilisez une extension de sauvegarde WordPress.
- Dans l’administration WordPress, allez dans Tableau de bord puis Mises à jour, ou Extensions puis Extensions installées. Si une mise à jour de Profile Builder est indiquée, installez-la depuis cet emplacement.
- Si vous préférez la ligne de commande, WP-CLI effectue la même opération :
wp plugin update profile-builder(la commande utilise le nom du dossier). - Si aucune mise à jour n’apparaît, vous pouvez obtenir la dernière version directement depuis la page de l’extension sur le répertoire WordPress.org, Profile Builder, et mettre à jour via Extensions puis Ajouter une extension puis Téléverser une extension.
- Après la mise à jour, confirmez le nouveau numéro de version (3.16.4 ou ultérieur) à l’aide des étapes ci-dessus, et vérifiez que vos formulaires d’inscription, de connexion et de modification de profil fonctionnent toujours normalement.
Si vous utilisez l’un des modules complémentaires payants de Profile Builder de Cozmoslabs, mettez-les à jour en même temps que l’extension principale, car leurs versions sont généralement publiées en parallèle.
Pendant que vous y êtes, il est utile de confirmer que le noyau WordPress 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.16.4 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 relative au paramètre. Si votre site avait Automatically Log In activé alors qu’il exécutait une version affectée, il était alors au moins théoriquement possible que quelqu’un se soit vu attribuer une session sur un compte existant. La mise à jour ferme la brèche, mais elle n’annule pas un accès qui aurait déjà été obtenu. Dans ce cas, quelques précautions de routine sont donc recommandées :
- Examinez vos comptes administrateur et tout autre compte important, à la recherche d’entrées que vous ne reconnaissez pas, d’adresses e-mail qui ne correspondent plus à la bonne personne, ou de changements de rôle que vous n’avez pas effectués.
- Passez en revue les connexions récentes et toutes les sessions actuellement actives à la recherche de tout ce que vous ne pouvez pas expliquer.
- Réinitialisez les mots de passe de vos comptes administrateur. La régénération des clés secrètes et
des sels de WordPress dans
wp-config.phpest une étape complémentaire recommandée (de nouvelles valeurs sont accessibles en un clic via le générateur de clés secrètes officiel, et leur remplacement déconnecte tous les utilisateurs une fois).
Si vous trouvez quelque chose qui vous inquiète, le traitement approprié consiste à réagir comme pour tout accès non autorisé suspecté. Si votre site n’a jamais eu la connexion automatique activée, la mise à jour seule suffit.
Ce que j’ai fait et n’ai pas fait
Pour être entièrement transparent concernant le contrôle effectué suite à mon courriel : j’ai uniquement lu
les fichiers que votre site sert déjà à tous les visiteurs, spécifiquement le readme.txt public de
l’extension, votre page d’accueil et les adresses des ressources écrites dans cette page. 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 jamais soumis votre formulaire d’inscription, jamais créé de compte, et jamais touché à l’étape de connexion automatique. Rien n’a été soumis, testé ou exploité. Cela importe plus ici que sur la plupart de ces pages, car s’inscrire est exactement l’action que concerne ce problème, donc « je n’y ai pas touché » fait toute la différence entre une divulgation et une intrusion.
Je m’abstiens également, délibérément, de publier les détails qui permettraient à quelqu’un d’exploiter ce problème. La description ci-dessus s’arrête au niveau dont un propriétaire de site a besoin, et je ne lie aucun code de preuve de concept.
Il s’agit d’une observation basée sur la version : votre site indique une version dans la plage affectée. Ce n’est pas une affirmation selon laquelle votre site était exploitable au moment de mon contrôle. Comme le problème dépend d’un paramètre que je ne peux pas voir, un site dans cette plage peut très bien ne pas être exposé du tout, et un site dans cette plage peut être protégé séparément par d’autres moyens, tels qu’un pare-feu applicatif web ou un correctif rétroporté.
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). Ils reconnaîtront rapidement les étapes ci-dessus.
Si vous maintenez le site vous-même et que vous êtes bloqué, je suis 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é
- Courriel: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
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