Le 10 août 2023, notre équipe Wordfence Threat Intelligence a identifié et a lancé le processus de divulgation responsable d’une vulnérabilité d’élévation de privilèges dans le Formulaires de don par plugin caritatif, qui est activement installé sur plus de 10 000 sites Web WordPress. Cette vulnérabilité permet à un attaquant non authentifié de s’accorder des privilèges administratifs en fournissant un rôle lors d’une inscription.
Wordfence Premium, Entretien de la clôture des motset Réponse de Wordfence les utilisateurs ont reçu une règle de pare-feu pour se protéger contre tout exploit ciblant cette vulnérabilité le 10 août 2023. Les sites utilisant toujours la version gratuite de Wordfence recevront la même protection le 9 septembre 2023.
Nous avons contacté WP Charitable Team par e-mail le 10 août 2023, mais nous n’avons pas reçu de réponse. Nous avons ensuite tenté de les contacter via un formulaire de contact sur leur site le 16 août 2023, et nous avons reçu une réponse le même jour. Après avoir fourni tous les détails, le développeur a publié un correctif le 17 août 2023. Nous tenons à féliciter l’équipe WP Charitable pour sa réponse rapide et son correctif opportun, qui a été publié en une seule journée.
Nous invitons les utilisateurs à mettre à jour leurs sites avec la dernière version corrigée de Charitable, qui est la version 1.7.0.13 au moment d’écrire ces lignes, dès que possible.
Comme pour toute vulnérabilité d’escalade de privilèges, celle-ci peut être utilisée pour compromettre complètement le site. Une fois qu’un attaquant a obtenu un accès utilisateur administratif à un site WordPress, il peut alors manipuler n’importe quoi sur le site ciblé comme le ferait un administrateur normal. Cela inclut la possibilité de télécharger des fichiers de plugins et de thèmes, qui peuvent être des fichiers zip malveillants contenant des portes dérobées, et de modifier des publications et des pages qui peuvent être exploitées pour rediriger les utilisateurs du site vers d’autres sites malveillants.
Résumé des vulnérabilités de Wordfence Intelligence
Le plugin Charitable pour WordPress est vulnérable à l’élévation de privilèges dans les versions jusqu’à la 1.7.0.12 incluse en raison d’une restriction insuffisante sur la fonction « update_core_user ». Cela permet aux attaquants non authentifiés de spécifier leur rôle d’utilisateur en fournissant le paramètre ‘role’ lors d’un enregistrement.
Analyse technique
Charitable est un plugin qui permet de créer des formulaires de dons et des campagnes de collecte de fonds dans WordPress.
Le plugin fournit un shortcode ([charitable_registration]
) pour un formulaire d’inscription personnalisé. Cependant, la mise en œuvre non sécurisée de la fonctionnalité d’enregistrement du plugin permet aux utilisateurs de spécifier des paramètres arbitraires lors de la création d’un compte. L’examen du code révèle qu’il n’existe pas de liste prédéfinie de paramètres utilisateur, ni de liste d’interdiction de paramètres dangereux. Cela permet d’enregistrer un utilisateur administrateur en fournissant le paramètre « rôle », avec la valeur du rôle qu’il souhaite attribuer à son compte, tel que « administrateur ».
public function update_core_user( $submitted ) { $core_fields = array_intersect( array_keys( $submitted ), $this->get_core_keys() ); if ( empty( $core_fields ) ) { return 0; } $values = array(); /* If we're updating an active user, set the ID */ if ( 0 !== $this->ID ) { $values['ID'] = $this->ID; } foreach ( $core_fields as $field ) { $values[ $field ] = $submitted[ $field ]; } /* Set the user's display name based on their name. */ $display_name = $this->sanitize_display_name( $values ); if ( $display_name ) { $values['display_name'] = $display_name; } /* Insert the user */ if ( 0 == $this->ID ) { if ( ! isset( $values['user_pass'] ) || strlen( $values['user_pass'] ) == 0 ) { charitable_get_notices()->add_error( '<strong>ERROR:</strong> Password field is required.' ); return false; } if ( ! isset( $values['user_login'] ) ) { $values['user_login'] = $values['user_email']; } /** * `wp_insert_user` calls `sanitize_user` internally - make the * same call here so `$values['user_login']` matches what is * eventually saved to the database */ $values['user_login'] = sanitize_user( $values['user_login'], true ); $user_id = wp_insert_user( $values ); if ( is_wp_error( $user_id ) ) { charitable_get_notices()->add_errors_from_wp_error( $user_id ); return false; } $this->init( self::get_data_by( 'id', $user_id ) ); $signon = Charitable_User::signon( $values['user_login'], $values['user_pass'] ); if ( is_wp_error( $signon ) ) { charitable_get_notices()->add_errors_from_wp_error( $signon ); return false; } /** * Do something after a user has been registered. * * @since 1.0.0 * * @param int $user_id The new user's ID. * @param array $values Values submitted to register user. */ do_action( 'charitable_after_insert_user', $user_id, $values ); } else { $values['ID'] = $this->ID; $user_id = wp_update_user( $values ); }//end if /* If there was an error when inserting or updating the user, lodge the error. */ if ( is_wp_error( $user_id ) ) { charitable_get_notices()->add_errors_from_wp_error( $user_id ); return false; } /** * Do something after a user's account has been updated or created. * * @since 1.0.0 * * @param int $user_id The user's ID. * @param array $values Values submitted to save user. */ do_action( 'charitable_after_save_user', $user_id, $values ); return $user_id; }
La méthode update_core_user dans la classe Charitable_User
Comme pour toute vulnérabilité d’escalade de privilèges, celle-ci peut être utilisée pour compromettre complètement le site. Une fois qu’un attaquant a obtenu un accès utilisateur administratif à un site WordPress, il peut alors manipuler n’importe quoi sur le site ciblé comme le ferait un administrateur normal. Cela inclut la possibilité de télécharger des fichiers de plugins et de thèmes, qui peuvent être des fichiers zip malveillants contenant des portes dérobées, et de modifier des publications et des pages qui peuvent être exploitées pour rediriger les utilisateurs du site vers d’autres sites malveillants.
Chronologie de la divulgation
10 août 2023 – Découverte de la vulnérabilité Privilege Escalation dans Charitable.
10 août 2023 – Nous avons essayé de prendre contact avec le fournisseur du plugin par e-mail en lui demandant de confirmer la boîte de réception pour gérer la discussion.
10 août 2023 – Les utilisateurs de Wordfence Premium, Care et Response reçoivent une règle de pare-feu pour fournir une protection contre tout exploit susceptible de cibler cette vulnérabilité.
16 août 2023 – Comme nous n’avons pas reçu de réponse au contact par e-mail, nous avons essayé de contacter le fournisseur du plugin via le formulaire de contact pour lui demander de confirmer la boîte de réception pour gérer la discussion.
16 août 2023 – Le vendeur confirme la boîte de réception pour gérer la discussion.
16 août 2023 – Nous envoyons les détails complets de la divulgation. Le fournisseur accuse réception du rapport et commence à travailler sur un correctif.
17 août 2023 – Une version entièrement corrigée du plugin, 1.7.0.13, est publiée.
9 septembre 2023 – Les utilisateurs de Wordfence Free bénéficient de la même protection.
Conclusion
Dans cet article de blog, nous avons détaillé une vulnérabilité d’élévation de privilèges au sein du Formulaires de don par plugin caritatif affectant les versions 1.7.0.12 et antérieures. Cette vulnérabilité permet à des acteurs malveillants non authentifiés d’élever leurs privilèges au niveau de ceux d’un administrateur de site, ce qui pourrait finalement conduire à une compromission complète du site. La vulnérabilité a été entièrement corrigée dans la version 1.7.0.13 du plugin.
Nous encourageons les utilisateurs de WordPress à vérifier que leurs sites sont mis à jour avec la dernière version corrigée de Charitable.
Wordfence Premium, Entretien de la clôture des motset Réponse de Wordfence les utilisateurs ont reçu une règle de pare-feu pour se protéger contre tout exploit ciblant cette vulnérabilité le 10 août 2023. Les sites utilisant toujours la version gratuite de Wordfence recevront la même protection le 9 septembre 2023.
Si vous connaissez quelqu’un qui utilise ce plugin sur son site, nous vous recommandons de partager cet avis avec lui pour garantir la sécurité de son site, car cette vulnérabilité présente un risque important.
Pour les chercheurs en sécurité cherchant à divulguer les vulnérabilités de manière responsable et à obtenir un identifiant CVE, vous pouvez soumettez vos conclusions à Wordfence Intelligence et potentiellement gagner une place sur notre classement.
Source link