Le 27 mai 2021, l’équipe Wordfence Threat Intelligence a lancé le processus de divulgation responsable de plusieurs vulnérabilités découvertes dans ProfilPresse, anciennement WP User Avatar, un plugin WordPress installé sur plus de 400 000 sites. Ces failles permettaient à un attaquant de télécharger des fichiers arbitraires sur un site vulnérable et de s’enregistrer en tant qu’administrateur sur des sites même si l’enregistrement des utilisateurs était désactivé, le tout sans nécessiter d’authentification préalable.

Nous avons initialement contacté le développeur du plugin le 27 mai 2021. Après avoir reçu la confirmation d’un canal de communication approprié, nous avons fourni les détails complets de la divulgation le même jour. Une copie mise à jour du plugin a été envoyée à notre équipe le 28 mai 2021, ce qui, nous l’avons confirmé, offrait une protection suffisante. Le correctif a été rapidement publié le 30 mai 2021 en tant que version 3.1.4.

Ce sont des problèmes de sécurité critiques et facilement exploitables qui ont été corrigés. Par conséquent, nous vous recommandons fortement de mettre à jour immédiatement vers la dernière version corrigée disponible, 3.1.8, si vous exécutez une version vulnérable de ce plugin (3.1 – 3.1.3).

Les utilisateurs de Wordfence Premium ont reçu une règle de pare-feu pour se protéger contre tout exploit ciblant ces vulnérabilités le 27 mai 2021. Les sites utilisant encore la version gratuite de Wordfence ont reçu la même protection le 26 juin 2021.

Nous avons attendu 30 jours avant de divulguer ces problèmes pour nous assurer que les utilisateurs de Wordfence Premium et gratuits étaient protégés contre toute tentative d’exploitation compte tenu de la gravité des problèmes et de la taille de la base d’installation. Nous avons également intentionnellement minimisé les détails fournis sur la façon dont ces vulnérabilités pourraient être exploitées pour retarder les efforts des acteurs malveillants.


La description: Escalade de privilèges non authentifiés
Plugin concerné : Enregistrement des utilisateurs, profils d’utilisateurs, connexion et adhésion – ProfilePress (anciennement WP User Avatar)
Plugin Slug : wp-user-avatar
Versions concernées : 3.1 – 3.1.3
Identifiant CVE : CVE-2021-34621
Note CVSS : 9.8 (CRITIQUE)
Vecteur CVSS : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Des chercheurs: Chloé Chamberland
Version entièrement corrigée : 3.1.4

ProfilePress, anciennement connu sous le nom de WP User Avatar, est un plugin WordPress conçu à l’origine pour être utilisé uniquement pour télécharger des photos de profil utilisateur. Récemment, cependant, le plugin a subi une refonte controversée. Le plug-in mis à jour a introduit de nouvelles fonctionnalités telles que la connexion et l’enregistrement de l’utilisateur, tout en conservant la fonctionnalité de téléchargement de photo de profil d’origine, afin de créer un plug-in d’enregistrement d’utilisateur robuste. Malheureusement, les nouvelles fonctionnalités ont introduit plusieurs problèmes de sécurité.

Le premier problème découvert permettait aux utilisateurs d’élever leurs privilèges, ce qui pouvait entraîner une prise de contrôle du site. Lors de l’enregistrement de l’utilisateur, les utilisateurs pourraient fournir des métadonnées utilisateur arbitraires qui seraient mises à jour pendant le processus d’enregistrement. Cela comprenait le wp_capabilities méta utilisateur qui contrôle les capacités et le rôle d’un utilisateur. Cela a permis à un utilisateur de fournir wp_capabilties en tant que paramètre de tableau lors de l’enregistrement, ce qui leur accorderait les capacités fournies, leur permettant de définir leur rôle sur n’importe quel rôle qu’ils souhaitaient, y compris l’administrateur.

       if (is_array($custom_usermeta)) {

            foreach ($custom_usermeta as $key => $value) {
                if ( ! empty($value)) {
                    update_user_meta($user_id, $key, $value);
                    // the 'edit_profile' parameter is used to distinguish it from same action hook in RegistrationAuth
                    do_action('ppress_after_custom_field_update', $key, $value, $user_id, 'registration');
                }
            }
        }

De plus, il n’y avait aucune vérification pour valider que l’enregistrement des utilisateurs était activé sur le site, ce qui permettait aux utilisateurs de s’inscrire en tant qu’administrateur même sur les sites où l’enregistrement des utilisateurs était désactivé. Cela signifiait que les attaquants pouvaient complètement prendre le contrôle d’un site WordPress vulnérable sans trop d’effort si une version vulnérable de ce plugin était utilisée.


La description: Escalade de privilèges authentifiés
Plugin concerné : Enregistrement des utilisateurs, profils d’utilisateurs, connexion et adhésion – ProfilePress (anciennement WP User Avatar)
Plugin Slug : wp-user-avatar
Versions concernées : 3.1 – 3.1.3
Identifiant CVE : CVE-2021-34622
Note CVSS : 9.8 (CRITIQUE)
Vecteur CVSS : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Des chercheurs: Chloé Chamberland
Version entièrement corrigée : 3.1.4

La même faille était présente dans la fonctionnalité de mise à jour du profil utilisateur. La fonctionnalité de mise à jour de profil avait la même fonctionnalité qui prendrait les paires clé-valeur soumises lors d’une mise à jour de profil et mettrait à jour les métadonnées de l’utilisateur dans la base de données. le wp_capabilities La méta de l’utilisateur pourrait être fournie en tant que paramètre de tableau défini sur administrateur lors d’une mise à jour de profil, ce qui permettrait aux attaquants d’élever leurs privilèges à ceux d’un administrateur.

      if (is_array($custom_usermeta)) {

            $user_id = self::get_current_user_id();

            foreach ($custom_usermeta as $key => $value) {

                update_user_meta($user_id, $key, $value);

                // the 'edit_profile' parameter is used to distinguish it from same action hook in RegistrationAuth
                do_action('ppress_after_custom_field_update', $key, $value, $user_id, 'edit_profile');
            }
        }

Cela nécessitait que l’attaquant ait un compte sur un site vulnérable à exploiter. Cependant, étant donné que la fonction d’enregistrement ne validait pas si l’enregistrement de l’utilisateur était activé, un utilisateur pouvait facilement s’inscrire et exploiter cette vulnérabilité s’il n’était pas en mesure d’exploiter la vulnérabilité d’élévation des privilèges lors de l’enregistrement.


La description: Téléchargement arbitraire de fichiers dans le composant Image Uploader
Plugin concerné : Enregistrement des utilisateurs, profils d’utilisateurs, connexion et adhésion – ProfilePress (anciennement WP User Avatar)
Plugin Slug : wp-user-avatar
Versions concernées : 3.1 – 3.1.3
Identifiant CVE : CVE-2021-34623
Note CVSS : 9.8 (CRITIQUE)
Vecteur CVSS : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Des chercheurs: Chloé Chamberland
Version entièrement corrigée : 3.1.4

En plus des vulnérabilités d’escalade de privilèges, nous avons constaté que des fichiers arbitraires, y compris des fichiers PHP, pouvaient être téléchargés sur un site WordPress vulnérable. La possibilité de télécharger un profil et des images de couverture sur le profil d’un utilisateur est une partie essentielle des fonctionnalités du plugin. Malheureusement, cette fonction a été implémentée de manière non sécurisée à l’aide du exif_imagetype fonction pour déterminer le type d’un fichier.

             // verify the file is a GIF, JPEG, or PNG
            $fileType = exif_imagetype($image["tmp_name"]);

            $allowed_image_type = apply_filters('ppress_allowed_image_type', array(
                IMAGETYPE_GIF,
                IMAGETYPE_JPEG,
                IMAGETYPE_PNG
            ));

La fonction exif_imagetype utilise les premiers octets d’un fichier, appelés octets magiques, pour déterminer le type d’un fichier et, en tant que tel, est considéré comme une méthode dangereuse pour valider le type d’un fichier. N’importe quel fichier peut être trivialement déguisé pour apparaître comme un fichier image valide en ajoutant ces octets magiques au début du fichier. Cela a permis à un attaquant de télécharger un fichier PHP falsifié qui transmettrait le exif_imagetype vérifier lors du processus d’enregistrement de l’utilisateur ou lors d’une mise à jour du profil.

Cela pourrait être utilisé pour télécharger un webshell qui permettrait à un attaquant d’exécuter du code à distance et d’exécuter des commandes sur un serveur pour obtenir une prise de contrôle complète du site. Étant donné que les utilisateurs pouvaient s’enregistrer même sans que l’enregistrement de l’utilisateur soit activé, tout attaquant pourrait exploiter cette vulnérabilité sans authentification en téléchargeant une photo de profil ou une image de couverture lors d’une demande d’enregistrement.


La description: Téléchargement arbitraire de fichiers dans le composant File Uploader
Plugin concerné : Enregistrement des utilisateurs, profils d’utilisateurs, connexion et adhésion – ProfilePress (anciennement WP User Avatar)
Plugin Slug : wp-user-avatar
Versions concernées : 3.1 – 3.1.3
Identifiant CVE : CVE-2021-34624
Note CVSS : 9.8 (CRITIQUE)
Vecteur CVSS : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Des chercheurs: Chloé Chamberland
Version entièrement corrigée : 3.1.4

En plus de la vulnérabilité de téléchargement de fichiers arbitraire précédente, nous avons découvert qu’un autre point de terminaison était également vulnérable aux téléchargements de fichiers arbitraires. Il semble qu’il y avait une fonctionnalité dans le plugin pour télécharger des fichiers sur le compte de profil d’un utilisateur lors de l’enregistrement de l’utilisateur ou lors d’une mise à jour de profil si un site utilisait l’extension « champs personnalisés » du plugin.

Cette fonction effectuait une vérification d’extension de fichier uniquement si un ensemble d’extensions était fourni par un administrateur de site via un champ personnalisé sur la page d’inscription et de mise à jour du profil. Cela signifiait que si un administrateur de site n’avait pas configuré les téléchargements de fichiers pour l’enregistrement de l’utilisateur et la page de profil à l’aide de champs personnalisés, tout type de fichier serait autorisé en raison du champ d’extensions vide.

Cela permettait aux attaquants de télécharger des fichiers arbitraires sur un site pendant le processus d’enregistrement de l’utilisateur ou lors d’une mise à jour de profil, tant qu’un administrateur n’avait pas configuré les paramètres de téléchargement de fichiers. Encore une fois, cela pourrait être utilisé pour télécharger un webshell et obtenir l’exécution de code à distance pour prendre le contrôle d’un site.

Calendrier de divulgation

27 mai 2021 – Conclusion de l’analyse du plugin qui a conduit à la découverte de plusieurs vulnérabilités dans le plugin ProfilePress. Nous développons une règle de pare-feu pour protéger les clients de Wordfence et la diffusons aux utilisateurs de Wordfence Premium.
27 mai 2021 18:27 UTC – Nous prenons contact avec le développeur du plugin.
27 mai 2021 18:52 UTC – Le développeur du plugin confirme la boîte de réception pour gérer la discussion.
27 mai 2021 21:23 UTC – Nous envoyons tous les détails de divulgation.
27 mai 2021 21:27 UTC – Le développeur du plugin confirme qu’il a reçu les détails et commencera à travailler sur un correctif.
28 mai 2021 07h16 UTC – Le développeur du plugin nous envoie une copie des correctifs proposés.
28 mai 2021 12:48 UTC – Nous informons le développeur que nous examinerons les correctifs et y reviendrons dès que notre analyse sera terminée.
28 mai 2021 15h44 UTC – Nous confirmons que les correctifs sont suffisants et informons le développeur.
30 mai 2021 – Une nouvelle version mise à jour du plugin contenant les correctifs est publiée.
26 juin 2021 – Les utilisateurs gratuits de Wordfence reçoivent des règles de pare-feu.

Conclusion

Dans l’article d’aujourd’hui, nous avons détaillé plusieurs failles critiques dans ProfilePress qui permettaient aux attaquants de télécharger des fichiers malveillants pour exécuter du code à distance en plus de s’inscrire en tant qu’administrateur. Ces failles ont été entièrement corrigées dans la version 3.1.4. Nous recommandons aux utilisateurs de mettre immédiatement à jour vers la dernière version disponible, qui est la version 3.1.8 au moment de cette publication, s’ils exécutent une version vulnérable du plugin (3.1 – 3.1.3).

Wordfence Premium les utilisateurs ont reçu une règle de pare-feu pour se protéger contre tout exploit ciblant cette vulnérabilité le 27 mai 2021. Les sites utilisant encore la version gratuite de Wordfence ont reçu la même protection le 26 juin 2021.

Si vous connaissez un ami ou un collègue qui utilise ce plugin sur son site, nous vous recommandons fortement de lui transmettre cet avis pour aider à protéger ses sites car ce sont des vulnérabilités de gravité critique qui peuvent être facilement exploitées.

Un merci spécial à Collins de ProfilePress pour avoir travaillé rapidement pour obtenir un correctif suffisant pour protéger les utilisateurs.


Source link