Si vous avez reçu un e-mail de ma part vous renvoyant à cette page, c’est parce que votre site web semble utiliser une version de ProfilePress (l’extension WordPress toujours livrée sous le nom de dossier wp-user-avatar, éditée par ProperFraction) qui entre dans la plage concernée par un problème de sécurité connu. Cette page explique en quoi consiste ce problème, comment déterminer s’il s’applique à votre site, et comment mettre à jour.

Un mot sur le nom avant toute chose, car il prête à confusion : cette extension a d’abord existé sous le nom de WP User Avatar et a conservé cet identifiant (slug) lors de son changement de marque, si bien que dans vos fichiers elle se trouve sous /wp-content/plugins/wp-user-avatar/, tandis que l’administration WordPress la répertorie sous son nom complet actuel, “Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress”. WP User Avatar et ProfilePress sont la même extension. Il s’agit d’une extension WordPress d’un bout à l’autre.

Avant toute chose, le fait le plus important au sujet de cet avis : une version dans la plage concernée ne signifie pas à elle seule que votre site est exposé. Le problème décrit ci-dessous n’est exploitable que lorsque ProfilePress publie un formulaire d’inscription frontal comportant un champ de sélection de rôle (le shortcode [reg-select-role], ou le champ “reg-select-role” dans le constructeur de formulaires par glisser-déposer), configuré d’une manière particulière. Si votre site ne propose pas d’auto-inscription publique, ou si vos formulaires d’inscription ne permettent pas au visiteur de choisir un rôle, il n’est très probablement pas exposé, même sur une version concernée. Je peux lire la version de votre extension à partir de fichiers publics, mais je ne peux pas voir vos formulaires d’inscription ; cet avis est donc une mise en garde préventive, et non un constat confirmé au sujet de votre site.

Ce problème est CVE-2026-12497, une élévation de privilèges non authentifiée dans le gestionnaire d’inscription frontal de l’extension (CWE-269, gestion incorrecte des privilèges). L’autorité qui a attribué le CVE n’a pas publié de score de sévérité, et je n’en invente pas ; ce qui compte pour l’apprécier, c’est qu’il est non authentifié mais plafonné à un rôle non administrateur, et conditionné par la configuration d’inscription décrite ci-dessus. Il affecte les versions 3.0.0 à 4.16.17 et est corrigé dans 4.16.18. Si vous utilisez une version concernée, mettez à jour ProfilePress vers 4.16.18 ou une version ultérieure (la version actuelle est 4.16.19). Rien n’indique que ce problème soit exploité où que ce soit.

Un mot sur l’urgence, car il s’agit d’un avis conditionnel : son importance pour vous dépend presque entièrement du fait que vous publiez ou non ce type de formulaire d’inscription. Si vous ne proposez pas d’auto-inscription publique avec un champ de sélection de rôle, la mise à jour relève de l’entretien courant des extensions. Si vous en proposez une, veuillez traiter la mise à jour comme une priorité : dans cette configuration, la faille pourrait permettre à un visiteur non authentifié de s’inscrire à un rôle plus élevé que celui offert par votre formulaire (par exemple Éditeur ou Auteur). Même dans ce cas, cette page est une mise en garde préventive, et non un rapport d’incident, et aucune intervention d’urgence n’est sous-entendue.

Il s’agit d’une faille d’une extension, et non du noyau de WordPress. Un WordPress parfaitement à jour ne vous protège pas si l’extension ProfilePress elle-même est sur une version concernée.

Ce message est-il légitime ?

Oui. Il s’agit d’un avis de bonne foi, selon le principe de la divulgation responsable, émanant d’un chercheur en sécurité indépendant. Je ne vous demande pas d’argent, de mots de passe ni d’accès à votre site, et je n’ai pas tenté de m’y introduire, de téléverser quoi que ce soit ni d’exploiter quoi que ce soit.

Je n’ai fait que consulter des fichiers publiquement visibles que votre site web fournit à chaque visiteur (de la même manière que votre page d’accueil est publique) et noter le numéro de version que l’extension publie dans son fichier readme.txt public. Je n’ai spécifiquement pas touché au système d’inscription, et rien dans cette vérification ne touche à vos données, à votre zone d’administration ni à aucune 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 qui je suis, consultez les coordonnées au bas de cette page et la page À propos.

Pourquoi cela compte

ProfilePress est une extension d’adhésion, d’inscription d’utilisateurs et de connexion très utilisée pour WordPress (environ 100 000 installations actives). Elle permet entre autres à un site de publier des formulaires d’inscription frontaux pour que les visiteurs puissent créer leur propre compte, et ces formulaires peuvent éventuellement inclure un champ permettant au visiteur de choisir le rôle que doit avoir son nouveau compte.

Dans les versions concernées, le gestionnaire d’inscription détermine les rôles qu’un formulaire propose et les rôles qu’il acceptera au moyen de deux fragments de code différents. Pour certaines configurations valides du champ de rôle, le code qui calcule les rôles acceptés ne parvient pas à lire la liste des rôles du formulaire et se rabat silencieusement sur l’acceptation de n’importe quel rôle modifiable (c’est-à-dire tout rôle sauf administrateur). Comme il n’y a en outre aucun nonce protégeant le gestionnaire d’inscription public, un visiteur non authentifié peut soumettre un rôle de son choix et être inscrit à un rôle plus élevé que celui proposé par le formulaire, par exemple Éditeur ou Auteur plutôt que l’Abonné prévu.

Deux éléments permettent de garder cela en perspective. Premièrement, l’impact a un plafond ferme : l’extension exclut explicitement le rôle d’administrateur de ce que l’inscription peut attribuer, de sorte qu’il s’agit d’un problème d’élévation de privilèges plafonné à un rôle non administrateur, et non d’une prise de contrôle du serveur, d’une prise de contrôle du compte administrateur ou d’une exécution de code à distance. Deuxièmement, le point d’entrée est un formulaire d’inscription publié avec un champ de sélection de rôle, de sorte que le problème n’atteint que les sites configurés de cette manière ; un site sans auto-inscription publique, ou dont les formulaires ne permettent pas à un visiteur de choisir un rôle, n’est très probablement pas exposé, même sur une version concernée. Et pour le répéter clairement, il n’existe aucune indication d’exploitation active : elle ne figure pas dans le catalogue des vulnérabilités exploitées connues (Known Exploited Vulnerabilities) de la CISA, et je n’ai connaissance d’aucun signalement d’exploitation.

Si mon e-mail a cité ce problème, cela signifie que la version signalée par votre site entre dans la plage concernée. Je n’ai pas testé si votre site en particulier est exploitable, et je ne peux pas voir comment vos formulaires d’inscription sont configurés ; tout ce que j’ai observé, c’est que le site signale une version concernée.

Suis-je concerné ?

Deux questions permettent de trancher, dans cet ordre.

D’abord : publiez-vous un formulaire d’inscription ProfilePress qui permet à un visiteur de choisir un rôle ? C’est la question décisive, et vous seul pouvez y répondre.

  • Si votre site ne propose pas d’auto-inscription publique, ou si ses formulaires d’inscription ne comportent pas de champ de sélection de rôle (le shortcode [reg-select-role] ou le champ “reg-select-role” dans le constructeur de formulaires), vous n’êtes très probablement pas exposé, même sur une version concernée. La mise à jour reste recommandée, au titre de l’entretien ordinaire.
  • Si votre site publie un formulaire d’inscription frontal avec un champ de sélection de rôle, le problème vous concerne, et vous devriez mettre à jour rapidement.
  • Pour vérifier : dans l’administration WordPress, examinez vos formulaires d’inscription ProfilePress à la recherche d’un champ de rôle, ou ouvrez l’une de vos pages d’inscription dans une fenêtre de navigation privée et voyez si un visiteur qui n’est pas connecté se voit proposer un choix de rôle de compte.

Ensuite : quelle version utilisez-vous ? Vous n’êtes pas obligé de me croire sur parole, et pour cette extension la version est signalée de façon fiable.

Depuis la zone d’administration WordPress (fait autorité) :

  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 “Paid Membership Plugin … ProfilePress” (son dossier est wp-user-avatar) et notez la version affichée sous son nom. C’est la véritable version installée.

Depuis le manifeste public (aucune connexion nécessaire) : ouvrez yourdomain.com/wp-content/plugins/wp-user-avatar/readme.txt dans un navigateur. La ligne Stable tag: située près du haut est la version signalée par votre installation, et il s’agit du même fichier public que celui que j’ai lu.

Une petite mise en garde si vous êtes du genre à lire les numéros de version à partir des URL des ressources : jugez la version d’après la valeur ?ver= des propres fichiers frontend.min.js ou frontend.min.css de l’extension, qui est la version de ProfilePress. Ne la lisez pas à partir du fichier select2/select2.min.css fourni, dont le ?ver= (par exemple 7.0.2) est la version de la bibliothèque select2 elle-même et n’a rien à voir avec la version de l’extension.

Appliquez ensuite cette règle, et notez que les versions se comparent numériquement, et non alphabétiquement :

  • 3.0.0 à 4.16.17 : potentiellement concernée (sous réserve de la question du formulaire d’inscription ci-dessus), mettez à jour maintenant.
  • 4.16.18 ou plus récente : déjà corrigée. Cela inclut la version actuelle 4.16.19.
  • Antérieure à 3.0 : non concernée par ce problème. Le gestionnaire d’inscription vulnérable est apparu pour la première fois avec le changement de marque ProfilePress 3.0 ; l’ancienne ligne “WP User Avatar” 1.x et 2.x, limitée aux avatars, n’avait pas de fonction d’inscription et ne la comporte pas. (En pratique, quasiment toute installation actuelle est une version de la ligne 4.16.x.)

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 :

  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 utilisez 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 ProfilePress est répertoriée, installez-la à partir d’ici.
  3. Si vous préférez la ligne de commande, WP-CLI fait la même chose : wp plugin update wp-user-avatar (la commande utilise le nom de dossier, wp-user-avatar).
  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, ProfilePress, et mettre à 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 (4.16.18 ou ultérieure ; la version actuelle est 4.16.19) en suivant les étapes ci-dessus, et vérifiez que vos pages d’inscription et de connexion fonctionnent normalement.

Tant que vous y êtes, il vaut la peine de confirmer que le noyau de WordPress et vos autres extensions sont à jour, car le même principe s’applique à tous.

Après la mise à jour

La mise à jour vers 4.16.18 ou une version ultérieure comble la faille, et pour la plupart des sites, c’est là toute la tâche. Rien n’indique que cette faille ait été exploitée où que ce soit, donc aucune intervention d’urgence n’est sous-entendue : vous n’avez pas besoin de considérer votre site comme compromis ni de le mettre hors ligne.

Un suivi mérite d’être envisagé, et il est conditionné par la même question d’inscription. Si votre site publiait un formulaire d’inscription ProfilePress avec un champ de sélection de rôle alors qu’il était sur une version concernée, alors il était au moins théoriquement possible qu’un visiteur se soit inscrit à un rôle plus élevé que prévu, même s’il n’existe aucune preuve que quiconque l’ait fait. Dans ce cas, une seule précaution de routine est judicieuse :

  • Jetez un œil à vos inscriptions d’utilisateurs récentes à la recherche de tout compte créé à un rôle anormalement élevé (par exemple un Éditeur ou un Auteur que vous ne reconnaissez pas), de la manière ordinaire dont vous examineriez l’activité du site, et ajustez ou supprimez tout ce qui semble anormal.

Considérez cela comme un entretien de sécurité ordinaire, et non comme une réponse à incident. Si vous ne proposez pas d’auto-inscription publique avec un champ de sélection de rôle, la mise à jour suffit à elle seule.

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

Pour être pleinement transparent sur la vérification derrière mon e-mail : je n’ai lu que des fichiers publics que votre site fournit déjà à chaque visiteur, en l’occurrence le fichier readme.txt public de l’extension et votre page d’accueil. Je n’ai pas accédé à votre zone d’administration WordPress, à votre base de données ni à aucune partie privée du site. En particulier, je n’ai pas touché au chemin d’inscription vulnérable, et je n’ai rien testé ni exploité.

Il s’agit d’une observation fondée sur la version : votre site signale une version dans la plage concernée. Comme ce problème dépend de la configuration, un site dans cette plage peut ne pas être exposé du tout (s’il ne propose pas d’auto-inscription publique, ou si ses formulaires ne comportent aucun champ de sélection de rôle), et il peut aussi déjà être protégé par d’autres moyens, tels qu’un pare-feu applicatif web. Cet avis n’est pas une affirmation que votre site était exploitable au moment de ma vérification.

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

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

Si vous gérez le site vous-même et que vous êtes bloqué, je me ferai un plaisir de vous aiguiller dans la bonne direction, sans frais. Contactez-moi à l’aide des coordonnées ci-dessous.

Contact

Evan Harris, chercheur en sécurité

Je contacte les exploitants au sujet de problèmes comme celui-ci uniquement pour les aider à sécuriser leurs sites. Si vous préférez ne plus être contacté, faites-le-moi simplement savoir et je le respecterai.

Références

Avis officiels et suivi

Éditeur / extension