Le 26 février, notre équipe Threat Intelligence a découvert une vulnérabilité dans Importer exporter des utilisateurs WordPress, un plugin WordPress installé sur plus de 30 000 sites. La faille permettait à toute personne disposant d’un accès au niveau abonné ou supérieur d’importer de nouveaux utilisateurs via un fichier CSV, y compris les utilisateurs de niveau administratif.

Nous avons contacté le développeur du plugin le 26 février, qui a répondu qu’il travaillait actuellement sur la mise à jour de son plugin avec plusieurs correctifs de sécurité. Ils ont publié un correctif pour le problème avant que nous ne leur fournissions la divulgation complète de la vulnérabilité. Après la version initiale, nous avons fourni quelques recommandations de sécurité supplémentaires pour les problèmes non résolus dans cette version initiale. Le développeur du plugin a publié un correctif répondant à ces préoccupations peu de temps après.

Ceci est considéré comme un problème de sécurité très grave qui pourrait permettre aux attaquants de reprendre complètement les sites WordPress. Nous vous recommandons vivement de mettre à jour la dernière version, 1.3.9, immédiatement.

Les clients de Wordfence Premium ont reçu une nouvelle règle de pare-feu le 26 février pour se protéger contre les exploits ciblant cette vulnérabilité. Les utilisateurs de Wordfence gratuits recevront la règle après trente jours, le 27 mars.

Import Export WordPress Users est utilisé pour importer et exporter facilement des utilisateurs WooCommerce et WordPress. Afin de fournir cette fonctionnalité, le plugin enregistre une action AJAX, wp_ajax_user_csv_import_request, ce qui conduit à l’exécution d’une fonction de téléchargement et d’importation en quatre étapes, dispatch(), en utilisant un boîtier séparé pour chaque étape.

class WF_CustomerImpExpCsv_AJAX_Handler {

   /**
    * Constructor
    */
   public function __construct() {
      add_action( 'wp_ajax_user_csv_import_request', array( $this, 'csv_customer_import_request' ) );
   }
   
   /**
    * Ajax event for importing a CSV
    */
   public function csv_customer_import_request() {
      define( 'WP_LOAD_IMPORTERS', true );
                WF_CustomerImpExpCsv_Importer::customer_importer();
   }
   
}
new WF_CustomerImpExpCsv_AJAX_Handler();

Les étapes un et deux du processus en quatre étapes comportaient déjà des vérifications de nonce et de capacité, mais aucune vérification de nonce n’a été effectuée aux étapes trois et quatre. Là, la vérification des autorisations a seulement vérifié qu’un utilisateur avait le manage_woocommerce capacité si WooCommerce était activé.

case 3 :
    // Check access - cannot use nonce here as it will expire after multiple requests
    if (function_exists('WC')) {
        if (!current_user_can('manage_woocommerce'))
            die();

En règle générale, une vérification de capacité pour manage_woocommerce serait suffisant dans les cas où un plugin nécessite que WooCommerce soit installé pour être activé. Cependant, la fonctionnalité de ce plugin a été conçue pour être utilisée avec les installations WordPress basées sur WooCommerce et les installations WordPress standard. Un site exécutant ce plugin sans WooCommerce installé n’avait aucune vérification de capacité, permettant à tout utilisateur connecté avec des capacités de niveau abonné et surtout la possibilité d’exécuter les étapes trois et quatre et, finalement, d’importer de nouveaux utilisateurs.

Cette vulnérabilité a permis aux attaquants d’importer de nouveaux utilisateurs dotés de capacités administratives et de contrôler totalement le site. Ils pourraient ensuite révoquer l’accès du propriétaire du site d’origine, injecter du Javascript malveillant qui pourrait rediriger les visiteurs du site vers un site malveillant, injecter des logiciels malveillants et des backdoors pour conserver l’accès au site, ou même intensifier le contrôle sur d’autres sites dans le compte d’hébergement, et bien plus encore. Une fois qu’un attaquant obtient un accès de niveau administrateur à un site, il peut faire pivoter et intensifier son activité malveillante de manière infinie. En tant que tel, il est extrêmement important de mettre à jour immédiatement la dernière version de ce plugin.

Utilisateurs WordPress fraîchement importés.

Utilisation sans restriction de l’emplacement des fichiers lors de l’importation des utilisateurs

Aux étapes 1 et 2 du processus d’importation, les administrateurs sont invités à télécharger un fichier CSV qui sera utilisé ultérieurement à l’étape 3 pour fournir les données utilisateur pour l’importation. Les deux premières étapes étaient à la fois protégées par des nonces WordPress ainsi que par les contrôles de capacité inhérents de WordPress qui permettent uniquement aux administrateurs et aux éditeurs d’utiliser le upload_files une fonction. Cela signifiait que bien que les abonnés puissent techniquement importer des utilisateurs à l’étape trois du processus, ils ne pouvaient pas télécharger de fichiers à utiliser dans le cadre du processus d’importation.

Cependant, ces restrictions n’ont pas eu d’importance, car la troisième étape a permis d’utiliser des fichiers distants pendant le processus d’importation, ce qui a permis aux attaquants de contourner les vérifications de capacité aux étapes un et deux du processus. Un attaquant pourrait simplement inclure un fichier hébergé à distance pour le paramètre file. Ce fichier serait ensuite utilisé pour fournir une liste d’utilisateurs à ajouter lors de l’importation.

Exemple de fichier CSV utilisé lors de l’importation de l’utilisateur.

Heureusement, dans la dernière version, le développeur a mis en place des précautions de sécurité pour restreindre les fichiers pouvant être utilisés lors de l’importation. Le plugin accepte désormais uniquement les fichiers CSV qui ont été précédemment importés sur le site. Par conséquent, les fichiers hébergés à distance ne peuvent plus être utilisés dans le cadre du processus d’importation des utilisateurs.

Autres plugins WebToffee WooCommerce concernés

Plusieurs plug-ins d’importation / exportation WooCommerce supplémentaires de WebToffee ont utilisé la même fonctionnalité d’importation. Cependant, ils n’ont pas pu être activés à moins que WooCommerce ne soit installé, garantissant que le manage_woocommerce la vérification des capacités a suffi à empêcher les utilisateurs de bas niveau de terminer les importations. Malgré cela, il n’y a pas eu de contrôle non conforme de ces importations, ce qui signifie que la source des demandes n’a pas été vérifiée. Si un administrateur d’un site était amené à exécuter une action indésirable, des produits pourraient être injectés, ainsi que des commentaires, des commandes, etc., contenant potentiellement des charges utiles malveillantes.

Les plugins suivants ont été affectés et nous vous recommandons de mettre à jour les dernières versions entre parenthèses dès que possible:

Démonstration de la preuve de concept

Calendrier de divulgation

26 février 2020 – Découverte initiale et analyse de vulnérabilité. Nous publions une règle de pare-feu pour les clients Wordfence Premium et établissons notre premier contact avec l’équipe de développement de plugins.
26 février 2020 – Le développeur répond qu’il travaille déjà sur des correctifs de sécurité.
27 février 2020 Le développeur publie un correctif répondant à la plupart de nos préoccupations. Nous envoyons les détails de divulgation complets et fournissons des recommandations pour améliorer le correctif de sécurité.
3 mars 2020 – Patch supplémentaire publié.
27 mars 2020 – Les utilisateurs de Wordfence gratuits reçoivent une règle de pare-feu.

Conclusion

Dans l’article d’aujourd’hui, nous détaillons une faille d’élévation de privilèges dans le plugin Import Export WordPress Users. Cette faille a été entièrement corrigée dans la version 1.3.9. Nous recommandons aux utilisateurs de mettre à jour la dernière version disponible immédiatement. Sites en cours d’exécution Wordfence Premium sont protégés des attaques contre cette vulnérabilité depuis le 26 février 2020. Les sites exécutant la version gratuite de Wordfence recevront la mise à jour des règles de pare-feu le 27 mars 2020.


Source link

%d blogueurs aiment cette page :