Vulnérabilités critiques dans le plugin WordPress ProfilePress (anciennement WP User Avatar)

Date de publication :

Le plugin ProfilePress, anciennement connu sous le nom de WP User Avatar, est un plugin WordPress qui a été conçu à l'origine pour être utilisé uniquement pour télécharger les photos de profil des utilisateurs. Récemment le plugin a subi une refonte introduisant de nouvelles fonctionnalités comme la connexion et l'enregistrement des utilisateurs, tout en conservant la fonctionnalité originale de téléchargement de photos de profil, afin de créer un plugin d'enregistrement d'utilisateur robuste. Malheureusement, les nouvelles fonctionnalités ont introduit plusieurs problèmes de sécurité.
 

CVE-2021-34621 [Score CVSS v3 : 9.8]
Une vulnérabilité pouvant permettre une escalade de privilèges a été corrigée. Un attaquant distant et non authentifié peut être en mesure d’élever ses privilèges jusqu’à prendre contrôle du site internet vulnérable. Lorsqu'un utilisateur s'inscrit, il peut fournir des métadonnées arbitraires qui étaient mises à jour au cours du processus d'enregistrement. Cela inclut la méta-donnée utilisateur wp_capabilities qui contrôle les droits et le rôle d'un utilisateur. Il était ainsi possible pour un utilisateur de fournir wp_capabilties comme paramètre de tableau lors de l'enregistrement, ce qui lui conférait les droits fournies et lui permettait de définir le rôle qu'il souhaitait, y compris celui d'administrateur.

En outre, il n'y avait pas de vérification pour valider que l'enregistrement des utilisateurs était activé sur le site, ce qui permettait aux utilisateurs de s'enregistrer en tant qu'administrateur même sur des sites où l'enregistrement des utilisateurs était désactivé.
 

CVE-2021-34622 [Score CVSS v3 : 9.8]
Une faille a été corrigée dans la fonctionnalité de mise à jour du profil de l'utilisateur. La fonctionnalité de mise à jour du profil possède la même fonction qui prend les paires clé-valeur soumises lors de la mise à jour du profil et met à jour les métadonnées de l'utilisateur dans la base de données. Les métadonnées de l'utilisateur wp_capabilities peuvent être fournies en tant que paramètre de tableau défini comme administrateur pendant la mise à jour du profil, ce qui peut permettre à attaquant distant et non authentifié d'élever ses privilèges à ceux d'un administrateur.

Cela nécessitait que l'attaquant dispose d'un compte sur un site vulnérable pour l'exploiter. Cependant, comme la fonction d'enregistrement ne valide pas si l'enregistrement de l'utilisateur est activé, un utilisateur peut facilement s'inscrire et exploiter cette vulnérabilité, s'il n'a pas été en mesure d'exploiter la CVE-2021-34621 lors de l'enregistrement.
 

CVE-2021-34623 [Score CVSS v3 : 9.8]
Outre les vulnérabilités liées à l'élévation des privilèges, une vulnérabilité pouvant permettre le téléchargement de fichiers arbitraires, y compris des fichiers PHP, sur un site WordPress vulnérable a été corrigée. La possibilité de télécharger des images de profil et de couverture dans le profil d'un utilisateur est une partie essentielle de la fonctionnalité du plugin. Cependant cette fonction a été implémentée de manière non sécurisée en utilisant la fonction exif_imagetype pour déterminer le type d'un fichier.

La fonction exif_imagetype utilise les premiers octets d'un fichier, connus sous le nom d'octets magiques, pour déterminer le type d'un fichier, et en tant que telle est considérée comme une méthode non sécurisée pour valider le type d'un fichier. Tout fichier peut trivialement être déguisé pour apparaître comme un fichier image valide en ajoutant ces octets magiques au début du fichier. Il était donc possible pour un attaquant de télécharger un fichier PHP usurpé qui passerait la vérification exif_imagetype pendant le processus d'enregistrement de l'utilisateur ou pendant une mise à jour du profil.

Ce fichier peut être utilisé pour télécharger un webshell qui peut permettre à un attaquant distant et non authentifié d'exécuter du code arbitraire sur un serveur afin de prendre le contrôle complet du site. Étant donné que les utilisateurs peuvent s'inscrire même si l'enregistrement des utilisateurs n'est pas activé, tout attaquant peut exploiter cette vulnérabilité sans authentification en téléchargeant une photo de profil ou une image de couverture pendant une demande d'inscription.
 

CVE-2021-34624 [Score CVSS v3 : 9.8]
En plus de la vulnérabilité précédente concernant le téléchargement de fichiers arbitraires, Une autre vulnérabilité a été corrigée. Une fonctionnalité du plugin peut permettre à un attaquant distant et non authentifié de télécharger des fichiers vers le compte de profil d'un utilisateur lors de son inscription ou de la mise à jour de son profil si le site utilisait l'extension "champs personnalisés" du plugin.

Cette fonction effectue une vérification de l'extension du fichier uniquement si un ensemble d'extensions est fourni par un administrateur de site via un champ personnalisé sur la page d'enregistrement et de mise à jour du profil. Cela signifie que si un administrateur de site n'a pas configuré le téléchargement de fichiers pour la page d'enregistrement et de profil de l'utilisateur à l'aide de champs personnalisés, tout type de fichier est autorisé car le champ des extensions est vide.

Ainsi, un attaquant peut télécharger des fichiers arbitraires sur un site pendant le processus d'enregistrement de l'utilisateur ou pendant la mise à jour du profil, tant que l'administrateur n'a pas configuré les paramètres de téléchargement de fichiers. Cela peut être utilisé pour télécharger un webshell et obtenir l'exécution de code à distance pour prendre le contrôle d'un site.

Informations

La faille est activement exploitée :

Un correctif existe :

Une mesure de contournement existe :

Risques

Risques

  • Elévation de privilèges
  • Exécution de code arbitraire
  • Violation des politiques de sécurité

Criticité

  • Scores CVSS v3 : 9.8 max

Existence d’un code d’exploitation

  • Un exploit (POC) existe pour la CVE-2021-34624
  • L’exploitation de ces vulnérabilités est cependant aisée.

Composants vulnérables

Les versions suivantes des plugins User Registration, User Profiles, Login & Membership – ProfilePress (Formerly WP User Avatar) sont impactées par ces vulnérabilités : 

  • De 3.1.0 à 3.1.3

CVE

Solutions ou recommandations

Mise en place de correctifs de sécurité

  • Mettre à jour le plugin WordPress ProfilePress vers la version 3.1.4 ou ultérieure.

Solution de contournement

  • Aucune solution de contournement n’est disponible publiquement à l’heure actuelle.